From: Paul Fulghum <paulkf@microgate.com>
To: Bob Copeland <me@bobcopeland.com>
Cc: paulus@samba.org, Linux Kernel list <linux-kernel@vger.kernel.org>
Subject: Re: 2.6.16-rc5 pppd oops on disconnects
Date: Sat, 11 Mar 2006 11:56:05 -0600 [thread overview]
Message-ID: <1142099765.3241.3.camel@x2.pipehead.org> (raw)
In-Reply-To: <20060311150908.GA4872@hash.localnet>
On Sat, 2006-03-11 at 10:09 -0500, Bob Copeland wrote:
> Well, back to at least 2.6.15-rc7 I get a similar oops so this looks old
> and unrelated to the mutex changes. I don't believe it triggers without
> CONFIG_DEBUG_SLAB. Also won't oops without something (ppp) using the
> device at the time of disconnect.
OK, try this patch with CONFIG_DEBUG_SLAB on and post the
debug output with the oops.
I do see one problem with the cdc-acm driver (not setting
acm->tty to NULL on the last close, where tty is released).
Thanks,
Paul
--
Paul Fulghum
Microgate Systems, Ltd
--- linux-2.6.16-rc5/drivers/usb/class/cdc-acm.c 2006-02-27 09:24:29.000000000 -0600
+++ b/drivers/usb/class/cdc-acm.c 2006-03-11 11:50:40.000000000 -0600
@@ -258,6 +258,7 @@ static void acm_ctrl_irq(struct urb *urb
if (acm->tty && !acm->clocal && (acm->ctrlin & ~newctrl & ACM_CTRL_DCD)) {
dbg("calling hangup");
+ printk("acm_ctrl_irq tty_hangup(%p)\n", acm->tty);
tty_hangup(acm->tty);
}
@@ -443,6 +444,8 @@ static int acm_tty_open(struct tty_struc
tty->driver_data = acm;
acm->tty = tty;
+ printk("acm_tty_open tty=%p acm=%p acm->used=%p\n", tty, acm, acm->used);
+
/* force low_latency on so that our tty_push actually forces the data through,
otherwise it is scheduled, and with high data rates data can get lost. */
tty->low_latency = 1;
@@ -504,6 +507,10 @@ static void acm_tty_close(struct tty_str
struct acm *acm = tty->driver_data;
int i;
+ printk("acm_tty_close tty=%p filp=%p acm=%p\n", tty, filp, acm);
+ if (acm)
+ printk("acm_tty_close acm->used=%d acm->dev=%p\n", acm->used, acm->dev);
+
if (!acm || !acm->used)
return;
@@ -517,6 +524,7 @@ static void acm_tty_close(struct tty_str
usb_kill_urb(acm->ru[i].urb);
} else
acm_tty_unregister(acm);
+ /* need to set acm->tty = NULL here */
}
up(&open_sem);
}
@@ -1008,6 +1016,10 @@ static void acm_disconnect(struct usb_in
struct usb_device *usb_dev = interface_to_usbdev(intf);
int i;
+ printk("acm_disconnect intf=%p acm=%p usb_dev=%p\n", intf, acm, usb_dev);
+ if (acm)
+ printk("acm_disconnect acm->used=%d acm->dev=%p acm->tty=%p\n", acm->used, acm->dev, acm->tty);
+
if (!acm || !acm->dev) {
dbg("disconnect on nonexisting interface");
return;
next prev parent reply other threads:[~2006-03-11 17:56 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-10 14:25 2.6.16-rc5 pppd oops on disconnects Bob Copeland
2006-03-10 17:22 ` Paul Fulghum
2006-03-10 18:48 ` Bob Copeland
2006-03-10 19:25 ` Paul Fulghum
2006-03-11 15:09 ` Bob Copeland
2006-03-11 17:56 ` Paul Fulghum [this message]
2006-03-11 20:21 ` Bob Copeland
2006-03-11 21:57 ` Paul Fulghum
2006-03-12 16:26 ` Paul Fulghum
2006-03-12 17:58 ` Bob Copeland
2006-03-12 20:09 ` [linux-usb-devel] " Oliver Neukum
2006-03-12 21:30 ` Bob Copeland
2006-03-13 2:21 ` Paul Fulghum
2006-03-12 5:35 ` Greg KH
2006-03-12 16:31 ` Bob Copeland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1142099765.3241.3.camel@x2.pipehead.org \
--to=paulkf@microgate.com \
--cc=linux-kernel@vger.kernel.org \
--cc=me@bobcopeland.com \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.