Hi, On Mon, Feb 1, 2010 at 11:14 AM, Marcel Holtmann <marcel@xxxxxxxxxxxx> wrote: > Hi David, > >> >> This message has been generated automatically as a part of a report >> >> of regressions introduced between 2.6.31 and 2.6.32. >> >> >> >> The following bug entry is on the current list of known regressions >> >> introduced between 2.6.31 and 2.6.32. Please verify if it still should >> >> be listed and let me know (either way). >> >> >> >> >> >> Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=15127 >> >> Subject : Bluetooth: sleeping function called from invalid context >> >> Submitter : David John <davidjon@xxxxxxxxxxx> >> >> Date : 2010-01-12 9:19 (20 days old) >> >> First-Bad-Commit: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=9e726b17422bade75fba94e625cd35fd1353e682 >> >> References : http://marc.info/?l=linux-kernel&m=126328727021949&w=4 >> > >> > you have an outdated email from Luiz and I change it to the right one >> > now. >> > >> > I looked with him at the patch and I think this will fix it: >> > >> > diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c >> > index fc5ee32..2b50637 100644 >> > --- a/net/bluetooth/rfcomm/core.c >> > +++ b/net/bluetooth/rfcomm/core.c >> > @@ -252,7 +252,6 @@ static void rfcomm_session_timeout(unsigned long >> > arg) >> > BT_DBG("session %p state %ld", s, s->state); >> > >> > set_bit(RFCOMM_TIMED_OUT, &s->flags); >> > - rfcomm_session_put(s); >> > rfcomm_schedule(RFCOMM_SCHED_TIMEO); >> > } >> > >> > @@ -1920,6 +1919,7 @@ static inline void rfcomm_process_sessions(void) >> > if (test_and_clear_bit(RFCOMM_TIMED_OUT, &s->flags)) { >> > s->state = BT_DISCONN; >> > rfcomm_send_disc(s, 0); >> > + rfcomm_session_put(s); >> > continue; >> > } >> > >> > We need some extra testing on this with the actual hardware we did the >> > patch for. So this will take at least a few days before we get our hands >> > on it. >> >> FWIW, your patch fixes the issue. > > nice. So I can add a tested-by line to the final patch? > > Just our of curiosity, which hardware did you test this with. We only > know about one headset that should cause this issue. > Just in case, here is the hcidump of the Nokia HS-12W, the one that has problem when we connection authorization is denied: > ACL data: handle 11 flags 0x02 dlen 8 L2CAP(d): cid 0x0041 len 4 [psm 3] RFCOMM(s): SABM: cr 1 dlci 26 pf 1 ilen 0 fcs 0xe7 < ACL data: handle 11 flags 0x02 dlen 12 L2CAP(s): Disconn req: dcid 0x0042 scid 0x0040 < ACL data: handle 11 flags 0x02 dlen 8 L2CAP(d): cid 0x0044 len 4 [psm 3] RFCOMM(s): DM: cr 1 dlci 26 pf 1 ilen 0 fcs 0xcd > HCI Event: Number of Completed Packets (0x13) plen 5 > ACL data: handle 11 flags 0x02 dlen 12 L2CAP(s): Disconn rsp: dcid 0x0042 scid 0x0040 < ACL data: handle 11 flags 0x02 dlen 8 L2CAP(d): cid 0x0044 len 4 [psm 3] RFCOMM(s): DISC: cr 0 dlci 0 pf 1 ilen 0 fcs 0x9c > ACL data: handle 11 flags 0x02 dlen 8 L2CAP(d): cid 0x0041 len 4 [psm 3] RFCOMM(s): UA: cr 0 dlci 0 pf 1 ilen 0 fcs 0xb6 < ACL data: handle 11 flags 0x02 dlen 12 L2CAP(s): Disconn req: dcid 0x0044 scid 0x0041 > HCI Event: Number of Completed Packets (0x13) plen 5 > ACL data: handle 11 flags 0x02 dlen 12 L2CAP(s): Disconn rsp: dcid 0x0044 scid 0x0041 < HCI Command: Disconnect (0x01|0x0006) plen 3 > HCI Event: Command Status (0x0f) plen 4 > HCI Event: Disconn Complete (0x05) plen 4 So this means the patch works. DISC 0 is send from our side (due to the session timeout) when normally it should be other end that disconnects right away when we respond with DM. -- Luiz Augusto von Dentz Engenheiro de Computação -- To unsubscribe from this list: send the line "unsubscribe kernel-testers" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html