[PATCH v1] MIPS: ip22-gio: Add check for the return value of kzalloc()

QintaoShen posted 1 patch 4 years, 2 months ago
arch/mips/sgi-ip22/ip22-gio.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
[PATCH v1] MIPS: ip22-gio: Add check for the return value of kzalloc()
Posted by QintaoShen 4 years, 2 months ago
Since the memory allocation function kzalloc() may return a NULL pointer,
the use of 'gio_dev' may lead to NULL pointer dereference.

So it is better to check the return value of kzalloc().

Signed-off-by: QintaoShen <unSimple1993@163.com>
---
 arch/mips/sgi-ip22/ip22-gio.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/arch/mips/sgi-ip22/ip22-gio.c b/arch/mips/sgi-ip22/ip22-gio.c
index dfc52f6..df7ca21 100644
--- a/arch/mips/sgi-ip22/ip22-gio.c
+++ b/arch/mips/sgi-ip22/ip22-gio.c
@@ -363,7 +363,11 @@ static void ip22_check_gio(int slotno, unsigned long addr, int irq)
 		printk(KERN_INFO "GIO: slot %d : %s (id %x)\n",
 		       slotno, name, id);
 		gio_dev = kzalloc(sizeof *gio_dev, GFP_KERNEL);
-		gio_dev->name = name;
+		
+        if (!gio_dev)
+            return ;
+
+        gio_dev->name = name;
 		gio_dev->slotno = slotno;
 		gio_dev->id.id = id;
 		gio_dev->resource.start = addr;
-- 
2.7.4
Re: [PATCH v1] MIPS: ip22-gio: Add check for the return value of kzalloc()
Posted by Sergey Shtylyov 4 years, 2 months ago
Hello!

On 3/28/22 11:04 AM, QintaoShen wrote:

> Since the memory allocation function kzalloc() may return a NULL pointer,
> the use of 'gio_dev' may lead to NULL pointer dereference.
> 
> So it is better to check the return value of kzalloc().
> 
> Signed-off-by: QintaoShen <unSimple1993@163.com>
> ---
>  arch/mips/sgi-ip22/ip22-gio.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/mips/sgi-ip22/ip22-gio.c b/arch/mips/sgi-ip22/ip22-gio.c
> index dfc52f6..df7ca21 100644
> --- a/arch/mips/sgi-ip22/ip22-gio.c
> +++ b/arch/mips/sgi-ip22/ip22-gio.c
> @@ -363,7 +363,11 @@ static void ip22_check_gio(int slotno, unsigned long addr, int irq)
>  		printk(KERN_INFO "GIO: slot %d : %s (id %x)\n",
>  		       slotno, name, id);
>  		gio_dev = kzalloc(sizeof *gio_dev, GFP_KERNEL);
> -		gio_dev->name = name;
> +		
> +        if (!gio_dev)

   Indented too little. And indent with tabs please, not spaces.

> +            return ;

   No need for space before ';'.

[...]

MBR, Sergey