tty: serial: sh-sci: set error code when kasprintf fails
authorPan Bian <bianpan2016@163.com>
Sat, 3 Dec 2016 10:40:25 +0000 (18:40 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Jan 2017 10:51:24 +0000 (11:51 +0100)
When the call to kasprintf() returns a NULL pointer, function
sci_request_irq() frees the preallocated memory and returns 0 is
returned. Because 0 means no error, the caller of sci_request_irq()
will keep going, and the freed memory may be used or freed again. To
avoid the above issue, this patch assigns "-ENOMEM" to the return
variable ret.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188691

Signed-off-by: Pan Bian <bianpan2016@163.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/sh-sci.c

index 91e7ddd..b33199a 100644 (file)
@@ -1743,8 +1743,10 @@ static int sci_request_irq(struct sci_port *port)
                desc = sci_irq_desc + i;
                port->irqstr[j] = kasprintf(GFP_KERNEL, "%s:%s",
                                            dev_name(up->dev), desc->desc);
-               if (!port->irqstr[j])
+               if (!port->irqstr[j]) {
+                       ret = -ENOMEM;
                        goto out_nomem;
+               }
 
                ret = request_irq(irq, desc->handler, up->irqflags,
                                  port->irqstr[j], port);