On Mon, 13 Mar 2006 09:51:20 -0600, Paul Fulghum <[EMAIL PROTECTED]> wrote:

> Signed-off-by: Paul Fulghum <[EMAIL PROTECTED]>

> +++ b/drivers/usb/class/cdc-acm.c     2006-03-13 09:33:23.000000000 -0600
> @@ -517,6 +517,7 @@ static void acm_tty_close(struct tty_str
>                               usb_kill_urb(acm->ru[i].urb);
>               } else
>                       acm_tty_unregister(acm);
> +             acm->tty = NULL;

Paul, this cannot possibly be correct! The acm_tty_unregister frees
its argument.

What we actually want is something like this:

--- linux-2.6.16-rc5/drivers/usb/class/cdc-acm.c        2006-02-26 
23:04:29.000000000 -0800
+++ linux-2.6.16-rc5-lem/drivers/usb/class/cdc-acm.c    2006-03-13 
10:20:21.000000000 -0800
@@ -256,7 +256,7 @@ static void acm_ctrl_irq(struct urb *urb
 
                        newctrl = le16_to_cpu(get_unaligned((__le16 *) data));
 
-                       if (acm->tty && !acm->clocal && (acm->ctrlin & ~newctrl 
& ACM_CTRL_DCD)) {
+                       if (!acm->clocal && (acm->ctrlin & ~newctrl & 
ACM_CTRL_DCD)) {
                                dbg("calling hangup");
                                tty_hangup(acm->tty);
                        }
@@ -1049,10 +1049,8 @@ static void acm_disconnect(struct usb_in
                return;
        }
 
+       tty_hangup(acm->tty);
        up(&open_sem);
-
-       if (acm->tty)
-               tty_hangup(acm->tty);
 }
 
 /*

-- Pete


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to