Commit eaa7dcd2 authored by Dmitry Smirnov's avatar Dmitry Smirnov Committed by Yi Yang
Browse files

USB: serial: mos7840: fix crash on resume

stable inclusion
from stable-v5.10.222
commit 932a86a711c722b45ed47ba2103adca34d225b33
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IAILG4
CVE: CVE-2024-42244

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=932a86a711c722b45ed47ba2103adca34d225b33



--------------------------------

commit c15a688e49987385baa8804bf65d570e362f8576 upstream.

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>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Conflicts:
	drivers/usb/serial/mos7840.c
[Context conflict]
Signed-off-by: default avatarYi Yang <yiyang13@huawei.com>
parent b9a26797
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment