diff options
author | Axel Lin <axel.lin@gmail.com> | 2010-05-31 08:04:47 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-06-04 13:16:19 -0700 |
commit | c2572b78aa0447244a38e555ebb1b3b48a0088a5 (patch) | |
tree | c495c12926b27afdc8698a27fca5b17c7d0a9cda /drivers/usb/host/ehci-hcd.c | |
parent | 6a1a82df91fa0eb1cc76069a9efe5714d087eccd (diff) | |
download | blackbird-op-linux-c2572b78aa0447244a38e555ebb1b3b48a0088a5.tar.gz blackbird-op-linux-c2572b78aa0447244a38e555ebb1b3b48a0088a5.zip |
USB: cdc-acm: fix resource reclaim in error path of acm_probe
This patch fixes resource reclaim in error path of acm_probe:
1. In the case of "out of memory (read urbs usb_alloc_urb)\n")", there
is no need to call acm_read_buffers_free(acm) here. Fix it by goto
alloc_fail6 instead of alloc_fail7.
2. In the case of "out of memory (write urbs usb_alloc_urb)",
usb_alloc_urb may fail in any iteration of the for loop. Current
implementation does not properly free allocated snd->urb. Fix it by
goto alloc_fail8 instead of alloc_fail7.
3. In the case of device_create_file(&intf->dev,&dev_attr_iCountryCodeRelDate)
fail, acm->country_codes is kfreed. As a result, device_remove_file
for dev_attr_wCountryCodes will not be executed in acm_disconnect.
Fix it by calling device_remove_file for dev_attr_wCountryCodes
before goto skip_countries.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Acked-by: Oliver Neukum <oneukum@suse.de>
Cc: stable <stable@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ehci-hcd.c')
0 files changed, 0 insertions, 0 deletions