• Axel Lin's avatar
    USB: cdc-acm: fix resource reclaim in error path of acm_probe · c2572b78
    Axel Lin authored
    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: default avatarAxel Lin <axel.lin@gmail.com>
    Acked-by: default avatarOliver Neukum <oneukum@suse.de>
    Cc: stable <stable@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    c2572b78
cdc-acm.c 46.2 KB