Re: [BUG net-2.6] bluetooth/rfcomm : sleeping function called from invalid context at mm/slub.c:1719

Dave Young
2009-10-11T02:39:36Z

On Sat, Oct 10, 2009 at 9:45 PM, Dave Young <hidave.darkstar@gmail.com> wro=
te:
> On Sat, Oct 10, 2009 at 12:38:32PM +0200, Marcel Holtmann wrote:
>> Hi Dave,
>>
>> > > * Dave Young <hidave.darkstar@gmail.com> [2009-10-04 11:26:17 +0800]=
:
>> > >
>> > > >
>> > > > I can reproduce the bug.
>> > > >
>> > > > It's probably caused by the l2cap changes by =C2=A0Gustavo F. Pado=
van
>> > > > <gustavo@las.ic.unicamp.br>, I didn't see such problem after rever=
ting
>> > > > Gustavo's patch series.
>> > >
>> > > I can't reproduce the bug. I'm trying to reproduce it to figure out =
what of
>> > > my changes cause it.
>> > >
>> > > I' running
>> > >
>> > > $ dund -snu -i 00:11:67:CD:0F:CB # to pretend to be dialup/telephone
>> > >
>> > > and on the other side
>> > >
>> > > $ rfcomm bind 0 00:11:67:CD:0F:CB 1
>> > > $ wvdial =C2=A0# wvdial to /dev/rfcomm0
>> > >
>> > > Both sides are on the same machine. Do you see any real difference
>> > > between my try and the call that get the bug?
>> > >
>> >
>> > Hi oliver
>> >
>> > Could try following patch?
>> > ---
>> >
>> > When shutdown ppp connection, lockdep waring about non-static key
>> > will happen, it is caused by the lock is not initialized properly
>> > at that time.
>> >
>> > Fix with tuning the lock/skb_queue_head init order
>> >
>> > [ =C2=A0 94.339261] INFO: trying to register non-static key.
>> > [ =C2=A0 94.342509] the code is fine but needs lockdep annotation.
>> > [ =C2=A0 94.342509] turning off the locking correctness validator.
>> > [ =C2=A0 94.342509] Pid: 0, comm: swapper Not tainted 2.6.31-mm1 #2
>> > [ =C2=A0 94.342509] Call Trace:
>> > [ =C2=A0 94.342509] =C2=A0[<c0248fbe>] register_lock_class+0x58/0x241
>> > [ =C2=A0 94.342509] =C2=A0[<c024b5df>] ? __lock_acquire+0xb57/0xb73
>> > [ =C2=A0 94.342509] =C2=A0[<c024ab34>] __lock_acquire+0xac/0xb73
>> > [ =C2=A0 94.342509] =C2=A0[<c024b7fa>] ? lock_release_non_nested+0x17b=
/0x1de
>> > [ =C2=A0 94.342509] =C2=A0[<c024b662>] lock_acquire+0x67/0x84
>> > [ =C2=A0 94.342509] =C2=A0[<c04cd1eb>] ? skb_dequeue+0x15/0x41
>> > [ =C2=A0 94.342509] =C2=A0[<c054a857>] _spin_lock_irqsave+0x2f/0x3f
>> > [ =C2=A0 94.342509] =C2=A0[<c04cd1eb>] ? skb_dequeue+0x15/0x41
>> > [ =C2=A0 94.342509] =C2=A0[<c04cd1eb>] skb_dequeue+0x15/0x41
>> > [ =C2=A0 94.342509] =C2=A0[<c054a648>] ? _read_unlock+0x1d/0x20
>> > [ =C2=A0 94.342509] =C2=A0[<c04cd641>] skb_queue_purge+0x14/0x1b
>> > [ =C2=A0 94.342509] =C2=A0[<fab94fdc>] l2cap_recv_frame+0xea1/0x115a [=
l2cap]
>> > [ =C2=A0 94.342509] =C2=A0[<c024b5df>] ? __lock_acquire+0xb57/0xb73
>> > [ =C2=A0 94.342509] =C2=A0[<c0249c04>] ? mark_lock+0x1e/0x1c7
>> > [ =C2=A0 94.342509] =C2=A0[<f8364963>] ? hci_rx_task+0xd2/0x1bc [bluet=
ooth]
>> > [ =C2=A0 94.342509] =C2=A0[<fab95346>] l2cap_recv_acldata+0xb1/0x1c6 [=
l2cap]
>> > [ =C2=A0 94.342509] =C2=A0[<f8364997>] hci_rx_task+0x106/0x1bc [blueto=
oth]
>> > [ =C2=A0 94.342509] =C2=A0[<fab95295>] ? l2cap_recv_acldata+0x0/0x1c6 =
[l2cap]
>> > [ =C2=A0 94.342509] =C2=A0[<c02302c4>] tasklet_action+0x69/0xc1
>> > [ =C2=A0 94.342509] =C2=A0[<c022fbef>] __do_softirq+0x94/0x11e
>> > [ =C2=A0 94.342509] =C2=A0[<c022fcaf>] do_softirq+0x36/0x5a
>> > [ =C2=A0 94.342509] =C2=A0[<c022fe14>] irq_exit+0x35/0x68
>> > [ =C2=A0 94.342509] =C2=A0[<c0204ced>] do_IRQ+0x72/0x89
>> > [ =C2=A0 94.342509] =C2=A0[<c02038ee>] common_interrupt+0x2e/0x34
>> > [ =C2=A0 94.342509] =C2=A0[<c024007b>] ? pm_qos_add_requirement+0x63/0=
x9d
>> > [ =C2=A0 94.342509] =C2=A0[<c038e8a5>] ? acpi_idle_enter_bm+0x209/0x23=
8
>> > [ =C2=A0 94.342509] =C2=A0[<c049d238>] cpuidle_idle_call+0x5c/0x94
>> > [ =C2=A0 94.342509] =C2=A0[<c02023f8>] cpu_idle+0x4e/0x6f
>> > [ =C2=A0 94.342509] =C2=A0[<c0534153>] rest_init+0x53/0x55
>> > [ =C2=A0 94.342509] =C2=A0[<c0781894>] start_kernel+0x2f0/0x2f5
>> > [ =C2=A0 94.342509] =C2=A0[<c0781091>] i386_start_kernel+0x91/0x96
>> >
>> > Reported-by: Oliver Hartkopp <oliver@hartkopp.net>
>> > Signed-off-by: Dave Young <hidave.darkstar@gmail.com>
>>
>> actually Gustavo send a patch titled "Initialize variables and timers
>> for both channel's sides" that should fix this, too. Can we test that
>> patch before I include this one.

Marcel, I tested Gustavo's latest patch series including
the "Initialize variables and timers for both channel". Lockdep
warning still happen.

>>
>
> Hi, marcel, of course.
>
>> Regards
>>
>> Marcel
>>
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-bluetoot=
h" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at =C2=A0http://vger.kernel.org/majordomo-info.html
>

--=20
Regards
dave