]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
USB: serial: remove write wait queue
authorJohan Hovold <johan@kernel.org>
Mon, 26 Oct 2020 10:44:21 +0000 (11:44 +0100)
committerJohan Hovold <johan@kernel.org>
Wed, 4 Nov 2020 10:11:29 +0000 (11:11 +0100)
The digi_acceleport driver is the only driver still using the port
write wake queue so move it to that driver's port data.

Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
drivers/usb/serial/digi_acceleport.c
include/linux/usb/serial.h

index 968e08cdcb097b60a31ffc9c6599c90421436a85..0ecd5316d85fe04e0815e834da51904f239ec943 100644 (file)
@@ -197,6 +197,7 @@ struct digi_port {
        int dp_throttle_restart;
        wait_queue_head_t dp_flush_wait;
        wait_queue_head_t dp_close_wait;        /* wait queue for close */
+       wait_queue_head_t write_wait;
        struct usb_serial_port *dp_port;
 };
 
@@ -381,7 +382,7 @@ static int digi_write_oob_command(struct usb_serial_port *port,
        while (count > 0) {
                while (oob_priv->dp_write_urb_in_use) {
                        cond_wait_interruptible_timeout_irqrestore(
-                               &oob_port->write_wait, DIGI_RETRY_TIMEOUT,
+                               &oob_priv->write_wait, DIGI_RETRY_TIMEOUT,
                                &oob_priv->dp_port_lock, flags);
                        if (interruptible && signal_pending(current))
                                return -EINTR;
@@ -444,7 +445,7 @@ static int digi_write_inb_command(struct usb_serial_port *port,
                while (priv->dp_write_urb_in_use &&
                       time_before(jiffies, timeout)) {
                        cond_wait_interruptible_timeout_irqrestore(
-                               &port->write_wait, DIGI_RETRY_TIMEOUT,
+                               &priv->write_wait, DIGI_RETRY_TIMEOUT,
                                &priv->dp_port_lock, flags);
                        if (signal_pending(current))
                                return -EINTR;
@@ -523,7 +524,7 @@ static int digi_set_modem_signals(struct usb_serial_port *port,
        while (oob_priv->dp_write_urb_in_use) {
                spin_unlock(&port_priv->dp_port_lock);
                cond_wait_interruptible_timeout_irqrestore(
-                       &oob_port->write_wait, DIGI_RETRY_TIMEOUT,
+                       &oob_priv->write_wait, DIGI_RETRY_TIMEOUT,
                        &oob_priv->dp_port_lock, flags);
                if (interruptible && signal_pending(current))
                        return -EINTR;
@@ -983,7 +984,7 @@ static void digi_write_bulk_callback(struct urb *urb)
                dev_dbg(&port->dev, "digi_write_bulk_callback: oob callback\n");
                spin_lock_irqsave(&priv->dp_port_lock, flags);
                priv->dp_write_urb_in_use = 0;
-               wake_up_interruptible(&port->write_wait);
+               wake_up_interruptible(&priv->write_wait);
                spin_unlock_irqrestore(&priv->dp_port_lock, flags);
                return;
        }
@@ -1216,10 +1217,9 @@ static int digi_port_init(struct usb_serial_port *port, unsigned port_num)
        init_waitqueue_head(&priv->dp_transmit_idle_wait);
        init_waitqueue_head(&priv->dp_flush_wait);
        init_waitqueue_head(&priv->dp_close_wait);
+       init_waitqueue_head(&priv->write_wait);
        priv->dp_port = port;
 
-       init_waitqueue_head(&port->write_wait);
-
        usb_set_serial_port_data(port, priv);
 
        return 0;
index 8e67eff9039fa893e64928090157048ff09ebede..1c09b922f8b087cef0629af2fa29ff18b27da07f 100644 (file)
@@ -62,7 +62,6 @@
  * @bulk_out_endpointAddress: endpoint address for the bulk out pipe for this
  *     port.
  * @flags: usb serial port flags
- * @write_wait: a wait_queue_head_t used by the port.
  * @work: work queue entry for the line discipline waking up.
  * @dev: pointer to the serial device
  *
@@ -108,7 +107,6 @@ struct usb_serial_port {
        int                     tx_bytes;
 
        unsigned long           flags;
-       wait_queue_head_t       write_wait;
        struct work_struct      work;
        unsigned long           sysrq; /* sysrq timeout */
        struct device           dev;