Message ID | 20230924142633.1090000-1-visitorckw@gmail.com |
---|---|
State | Accepted |
Commit | 0d3ad1917996839a5042d18f04e41915cfa1b74a |
Headers | show |
Series | efi: fix memory leak in krealloc failure handling | expand |
On Sun, 24 Sept 2023 at 16:26, Kuan-Wei Chiu <visitorckw@gmail.com> wrote: > > In the previous code, there was a memory leak issue where the > previously allocated memory was not freed upon a failed krealloc > operation. This patch addresses the problem by releasing the old memory > before setting the pointer to NULL in case of a krealloc failure. This > ensures that memory is properly managed and avoids potential memory > leaks. > > Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> > --- > drivers/firmware/efi/efi.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > Queued as a fix Thanks, > diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c > index ce20a60676f0..1974f0ad32ba 100644 > --- a/drivers/firmware/efi/efi.c > +++ b/drivers/firmware/efi/efi.c > @@ -273,9 +273,13 @@ static __init int efivar_ssdt_load(void) > if (status == EFI_NOT_FOUND) { > break; > } else if (status == EFI_BUFFER_TOO_SMALL) { > - name = krealloc(name, name_size, GFP_KERNEL); > - if (!name) > + efi_char16_t *name_tmp = > + krealloc(name, name_size, GFP_KERNEL); > + if (!name_tmp) { > + kfree(name); > return -ENOMEM; > + } > + name = name_tmp; > continue; > } > > -- > 2.25.1 >
diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c index ce20a60676f0..1974f0ad32ba 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -273,9 +273,13 @@ static __init int efivar_ssdt_load(void) if (status == EFI_NOT_FOUND) { break; } else if (status == EFI_BUFFER_TOO_SMALL) { - name = krealloc(name, name_size, GFP_KERNEL); - if (!name) + efi_char16_t *name_tmp = + krealloc(name, name_size, GFP_KERNEL); + if (!name_tmp) { + kfree(name); return -ENOMEM; + } + name = name_tmp; continue; }
In the previous code, there was a memory leak issue where the previously allocated memory was not freed upon a failed krealloc operation. This patch addresses the problem by releasing the old memory before setting the pointer to NULL in case of a krealloc failure. This ensures that memory is properly managed and avoids potential memory leaks. Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com> --- drivers/firmware/efi/efi.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)