[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YiIesoVGiVm2KcUD@kroah.com>
Date: Fri, 4 Mar 2022 15:14:10 +0100
From: Greg KH <gregkh@...uxfoundation.org>
To: xkernel.wang@...mail.com
Cc: linux@...inikbrodowski.net, akpm@...ux-foundation.org,
pombredanne@...b.com, arnd@...db.de, luc.vanoostenryck@...il.com,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] init/initramfs.c: check the return value of kstrdup()
On Fri, Mar 04, 2022 at 05:27:34PM +0800, xkernel.wang@...mail.com wrote:
> From: Xiaoke Wang <xkernel.wang@...mail.com>
>
> kstrdup() is also a memory allocation function which is similar
> with kmalloc() in some way. Once some internal memory errors
> happen, it will return NULL. It is better to check the return
> value of it so to catch the memory error in time.
>
> Signed-off-by: Xiaoke Wang <xkernel.wang@...mail.com>
> ---
> init/initramfs.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/init/initramfs.c b/init/initramfs.c
> index a842c05..49deffb 100644
> --- a/init/initramfs.c
> +++ b/init/initramfs.c
> @@ -139,8 +139,12 @@ static void __init dir_add(const char *name, time64_t mtime)
> struct dir_entry *de = kmalloc(sizeof(struct dir_entry), GFP_KERNEL);
> if (!de)
> panic_show_mem("can't allocate dir_entry buffer");
> - INIT_LIST_HEAD(&de->list);
> de->name = kstrdup(name, GFP_KERNEL);
> + if (!de->name) {
How can this fail? Have you ever hit this in real life?
> + kfree(de);
> + panic_show_mem("can't duplicate dir name");
Why are you freeing memory if you are panicing?
How was this tested?
thanks,
greg k-h
Powered by blists - more mailing lists