• Johan Hovold's avatar
    USB: cdc-acm: fix device unregistration · cb25505f
    Johan Hovold authored
    Unregister tty device in disconnect as is required by the USB stack.
    
    By deferring unregistration to when the last tty reference is dropped,
    the parent interface device can get unregistered before the child
    resulting in broken hotplug events being generated when the tty is
    finally closed:
    
    KERNEL[2290.798128] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:3.1 (usb)
    KERNEL[2290.804589] remove   /devices/pci0000:00/0000:00:1d.7/usb2/2-1 (usb)
    KERNEL[2294.554799] remove   /2-1:3.1/tty/ttyACM0 (tty)
    
    The driver must deal with tty callbacks after disconnect by checking the
    disconnected flag. Specifically, further opens must be prevented and
    this is already implemented.
    
    Cc: stable <stable@vger.kernel.org>
    Cc: Oliver Neukum <oneukum@suse.de>
    Acked-by: default avatarOliver Neukum <oneukum@suse.de>
    Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    cb25505f
cdc-acm.c 48.4 KB