Re: [2.6.13.3] occasional oops mostly in iget_locked

From: Francois Romieu
Date: Thu Jan 05 2006 - 19:31:27 EST


Folkert van Heusden <folkert@xxxxxxxxxxxxxx> :
[...]
> Well that problem seems to be solved in 2.6.15 so does this problem
> matter anymore? I'm a little hesitant to play a lot with that system as
> it'll make some people really upset.

If you experience random crashes and netconsole is not able to catch
anything, you want to disable netconsole and use a serial console
instead (whenever possible).

I'd say that you do not want netconsole on a non-devel or production
SMP machine.

Side note: even if it does not hit your system, you can probably report
the sequence below to the maintainer of the zaptel module (extracted from
the default branch of current cvs):

static void zt_free_pseudo(struct zt_chan *pseudo)
{
unsigned long flags;
if (pseudo) {
spin_lock_irqsave(&bigzaplock, flags);
zt_chan_unreg(pseudo);
[...]

static void zt_chan_unreg(struct zt_chan *chan)
{
[...]
unregister_hdlc_device(chan->hdlcnetdev->netdev);

void unregister_hdlc_device(struct net_device *dev)
{
rtnl_lock();

-> sleep with spinlock held.

static int zt_ctl_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long data)
{
[...]
spin_lock_irqsave(&chans[ch.chan]->lock, flags);
#ifdef CONFIG_ZAPATA_NET
if (chans[ch.chan]->flags & ZT_FLAG_NETDEV) {
if (ztchan_to_dev(chans[ch.chan])->flags & IFF_UP) {
spin_unlock_irqrestore(&chans[ch.chan]->lock, flags);
printk(KERN_WARNING "Can't switch HDLC net mode on channel %s, since current interface is up\n", chans[ch.chan]->name);
return -EBUSY;
}
#ifdef LINUX26
[...]
#else
unregister_hdlc_device(&chans[ch.chan]->hdlcnetdev->netdev);


-> same thing (btw #ifdef are not fun to review :o| )

--
Ueimor
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/