• Dmitry Smirnov's avatar
    USB: serial: mos7840: fix crash on resume · c15a688e
    Dmitry Smirnov authored
    Since commit c49cfa91 ("USB: serial: use generic method if no
    alternative is provided in usb serial layer"), USB serial core calls the
    generic resume implementation when the driver has not provided one.
    
    This can trigger a crash on resume with mos7840 since support for
    multiple read URBs was added back in 2011. Specifically, both port read
    URBs are now submitted on resume for open ports, but the context pointer
    of the second URB is left set to the core rather than mos7840 port
    structure.
    
    Fix this by implementing dedicated suspend and resume functions for
    mos7840.
    
    Tested with Delock 87414 USB 2.0 to 4x serial adapter.
    Signed-off-by: default avatarDmitry Smirnov <d.smirnov@inbox.lv>
    [ johan: analyse crash and rewrite commit message; set busy flag on
             resume; drop bulk-in check; drop unnecessary usb_kill_urb() ]
    Fixes: d83b4053 ("USB: serial: add support for multiple read urbs")
    Cc: stable@vger.kernel.org	# 3.3
    Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
    c15a688e
mos7840.c 53.6 KB