]> git.ipfire.org Git - thirdparty/kernel/linux.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>
Fri, 13 Sep 2024 05:53:52 +0000 (07:53 +0200)
commitb41c1fa155ba56d125885b0191aabaf3c508d0a3
tree980b4d8640845f7864bd5089d264fb61c709369a
parent9ae0f262fc3f36c1f0b131c7017fbe75245a39df
USB: class: CDC-ACM: fix race between get_serial and set_serial

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