]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
USB: class: CDC-ACM: fix race between get_serial and set_serial
authorOliver Neukum <oneukum@suse.com>
Thu, 12 Sep 2024 14:19:06 +0000 (16:19 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Oct 2024 13:11:12 +0000 (15:11 +0200)
commit92f9e6c8b993fc4a2ee31976d20ad30fec0c9ce6
treec7c81407eb6dc0af73ba0b2ef91cd7eed55c67fa
parentcde120f5870f904f1f723ae28b9ed34ed601b9a8
USB: class: CDC-ACM: fix race between get_serial and set_serial

commit b41c1fa155ba56d125885b0191aabaf3c508d0a3 upstream.

TIOCGSERIAL is an ioctl. Thus it must be atomic. It returns
two values. Racing with set_serial it can return an inconsistent
result. The mutex must be taken.

In terms of logic the bug is as old as the driver. In terms of
code it goes back to the conversion to the get_serial and
set_serial methods.

Signed-off-by: Oliver Neukum <oneukum@suse.com>
Cc: stable <stable@kernel.org>
Fixes: 99f75a1fcd865 ("cdc-acm: switch to ->[sg]et_serial()")
Link: https://lore.kernel.org/r/20240912141916.1044393-1-oneukum@suse.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/class/cdc-acm.c