On Thu, Nov 3, 2016 at 7:36 PM, Souptick Joarder <jrdr.linux@xxxxxxxxx> wrote: > Inside ioc4_attach_local() 4 memory was allocated using kzalloc and > assign it to ports[] within loop. When kzalloc fails inside loop, > it returns error without freeing previously allocated memory and we > may have memory leak. Fix this by freeing ports[] before return. > > Signed-off-by: Souptick joarder <jrdr.linux@xxxxxxxxx> > --- > v2: > - Address comment from Sahu > * Put new line before free > * replace for loop with while > > drivers/tty/serial/ioc4_serial.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/ioc4_serial.c b/drivers/tty/serial/ioc4_serial.c > index e5c42fe..3be051abb 100644 > --- a/drivers/tty/serial/ioc4_serial.c > +++ b/drivers/tty/serial/ioc4_serial.c > @@ -1082,7 +1082,7 @@ static int inline ioc4_attach_local(struct ioc4_driver_data *idd) > if (!port) { > printk(KERN_WARNING > "IOC4 serial memory not available for port\n"); > - return -ENOMEM; > + goto free; > } > spin_lock_init(&port->ip_lock); > > @@ -1190,6 +1190,11 @@ static int inline ioc4_attach_local(struct ioc4_driver_data *idd) > handle_dma_error_intr, port); > } > return 0; > + > +free: > + while (port_number) > + kfree(ports[--port_number]); > + return -ENOMEM; > } > > /** > -- > 1.9.1 > Any further comment on this patch ? -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html