sleep_on and related functions are going away and should not be used
in this driver any more.

This removes the call to interruptible_sleep_on for a wait queue that
is never woken up, and replaces an interruptible_sleep_on_timeout
call with the equivalent wait_event_interruptible_timeout() to
avoid a small race.

Both call sites still look fishy and need more work.

Signed-off-by: Arnd Bergmann <arndb.de>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
Cc: de...@driverdev.osuosl.org
Cc: Bill Pemberton <wf...@virginia.edu>
---
 drivers/staging/serqt_usb2/serqt_usb2.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/drivers/staging/serqt_usb2/serqt_usb2.c 
b/drivers/staging/serqt_usb2/serqt_usb2.c
index 73fc3cc..e0c209e 100644
--- a/drivers/staging/serqt_usb2/serqt_usb2.c
+++ b/drivers/staging/serqt_usb2/serqt_usb2.c
@@ -970,17 +970,11 @@ static void qt_block_until_empty(struct tty_struct *tty,
 {
        int timeout = HZ / 10;
        int wait = 30;
-       int count;
-
-       while (1) {
-
-               count = qt_chars_in_buffer(tty);
-
-               if (count <= 0)
-                       return;
-
-               interruptible_sleep_on_timeout(&qt_port->wait, timeout);
 
+       /* returns if we get a signal, an error, or the buffer is empty */
+       while (wait_event_interruptible_timeout(qt_port->wait,
+                                       qt_chars_in_buffer(tty) <= 0,
+                                       timeout) == 0) {
                wait--;
                if (wait == 0) {
                        dev_dbg(&qt_port->port->dev, "%s - TIMEOUT", __func__);
@@ -1137,7 +1131,10 @@ static int qt_ioctl(struct tty_struct *tty,
 
        if (cmd == TIOCMIWAIT) {
                while (qt_port != NULL) {
+#if 0
+                       /* this never wakes up */
                        interruptible_sleep_on(&qt_port->msr_wait);
+#endif
                        if (signal_pending(current))
                                return -ERESTARTSYS;
                        else {
-- 
1.8.3.2

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to