acm: Fix oops when closing ACM tty device right after open has failed.
authorThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Thu, 25 Jun 2009 13:41:30 +0000 (14:41 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 25 Jun 2009 18:24:26 +0000 (11:24 -0700)
This commit 10077d4a6674f535abdbe25cdecb1202af7948f1 has stopped
checking if there was a valid acm device associated to the tty, which is
not true right after open fails and tty subsystem tries to close the
device.

As an example, open fails with a non-existing device, when probe has
never been called, because the device has never been plugged. This is
common in systems with static modules and no udev.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/usb/class/cdc-acm.c

index 02eb60bb6795625252880fa0abc2d43033dced6f..3f1045993474ce9ea9474920b870d6d75f6a1a15 100644 (file)
@@ -677,7 +677,7 @@ static void acm_tty_close(struct tty_struct *tty, struct file *filp)
 
        /* Perform the closing process and see if we need to do the hardware
           shutdown */
-       if (tty_port_close_start(&acm->port, tty, filp) == 0)
+       if (!acm || tty_port_close_start(&acm->port, tty, filp) == 0)
                return;
        acm_port_down(acm, 0);
        tty_port_close_end(&acm->port, tty);