Re: [PATCH] USB: Gadget: Composite: Added error handling codes toprevent a memory leak case when the configuration's bind function failed

From: Sergei Shtylyov
Date: Thu Mar 15 2012 - 09:59:08 EST


Hello.

On 15-03-2012 5:23, Yongsul@xxxxxxxxxxxxxxx wrote:

From: yongsul96.oh@xxxxxxxxxxx<yongsul96.oh@xxxxxxxxxxx>

In some usb gadget driver, for example usb gadget serial driver(serial.c),
multifunction composite driver(multi,c), nokia composite gadget driver(nokia.c),
HID composite driver(hid.c), CDC composite driver(cdc2.c).., the configuration's
bind function by called the 'usb_add_config()' has multiple bind config functions
for each functionality, for example cdc2 configuration bind function -'cdc_do_config()'
has two functionality bind config functions -'ecm_bind_config()'& 'acm_bind_config()'
in CDC composite driver.
In each functionality bind config function, new instance for each functionality is
allocated& initialized by 'kzalloc()' ,and finally the new instance is added by
'usb_add_function()'. After 'usb_add_function' state, already created the instance
is only handled by its configuration& freed from functionality unbind function.
So, If an error occurred during the second functionality bind config state, for example
an error occurred at 'acm_bind_config()' after succeeding 'ecm_bind_function()',
The created instance by 'acm_bind_config()' cannot be freed.
And it makes memory leak situation.

This patch fixes this issue.

Signed-off-by: yongsul96.oh@xxxxxxxxxxx <yongsul96.oh@xxxxxxxxxxx>

Real name is required on the left, not another copy of email.

WBR, Sergei
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/