]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
USB: serial: relax unthrottle memory barrier
authorJohan Hovold <johan@kernel.org>
Thu, 30 Jan 2020 10:06:58 +0000 (11:06 +0100)
committerJohan Hovold <johan@kernel.org>
Mon, 10 Feb 2020 09:37:11 +0000 (10:37 +0100)
Commit a8d78d9f3856 ("USB: serial: clean up throttle handling")
converted the throttle handling to use atomic bitops. This means that we
can relax the smp_mb() in unthrottle() to smp_mb__after_atomic(), which
for example is a no-op on architectures like x86 that provide fully
ordered atomics.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Davidlohr Bueso <dbueso@suse.de>
Signed-off-by: Johan Hovold <johan@kernel.org>
drivers/usb/serial/generic.c

index 1be8bea372a2a56768b3a19db6cc394781dae41e..546a1c2ce2f218162a195963048a234252d18450 100644 (file)
@@ -417,7 +417,7 @@ void usb_serial_generic_read_bulk_callback(struct urb *urb)
        /*
         * Make sure URB is marked as free before checking the throttled flag
         * to avoid racing with unthrottle() on another CPU. Matches the
-        * smp_mb() in unthrottle().
+        * smp_mb__after_atomic() in unthrottle().
         */
        smp_mb__after_atomic();
 
@@ -489,7 +489,7 @@ void usb_serial_generic_unthrottle(struct tty_struct *tty)
         * Matches the smp_mb__after_atomic() in
         * usb_serial_generic_read_bulk_callback().
         */
-       smp_mb();
+       smp_mb__after_atomic();
 
        usb_serial_generic_submit_read_urbs(port, GFP_KERNEL);
 }