]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/usb/gadget/function/u_serial.c
Merge remote-tracking branch 'usb/usb-next'
[karo-tx-linux.git] / drivers / usb / gadget / function / u_serial.c
index 9cc6a13d5e5b04893658b3ab83f507ab73c58658..f7771d86ad6c8d19e2016773c1b5ba4b2f3f33eb 100644 (file)
@@ -114,6 +114,7 @@ struct gs_port {
        struct gs_buf           port_write_buf;
        wait_queue_head_t       drain_wait;     /* wait while writes drain */
        bool                    write_busy;
+       wait_queue_head_t       close_wait;
 
        /* REVISIT this state ... */
        struct usb_cdc_line_coding port_line_coding;    /* 8-N-1 etc */
@@ -883,7 +884,7 @@ static void gs_close(struct tty_struct *tty, struct file *file)
        pr_debug("gs_close: ttyGS%d (%p,%p) done!\n",
                        port->port_num, tty, file);
 
-       wake_up(&port->port.close_wait);
+       wake_up(&port->close_wait);
 exit:
        spin_unlock_irq(&port->port_lock);
 }
@@ -1043,6 +1044,7 @@ gs_port_alloc(unsigned port_num, struct usb_cdc_line_coding *coding)
        tty_port_init(&port->port);
        spin_lock_init(&port->port_lock);
        init_waitqueue_head(&port->drain_wait);
+       init_waitqueue_head(&port->close_wait);
 
        tasklet_init(&port->push, gs_rx_push, (unsigned long) port);
 
@@ -1073,7 +1075,7 @@ static void gserial_free_port(struct gs_port *port)
 {
        tasklet_kill(&port->push);
        /* wait for old opens to finish */
-       wait_event(port->port.close_wait, gs_closed(port));
+       wait_event(port->close_wait, gs_closed(port));
        WARN_ON(port->port_usb != NULL);
        tty_port_destroy(&port->port);
        kfree(port);