Re: [BUG] BlueTooth socket busted in 2.6.0-test5

From: Marcel Holtmann
Date: Wed Sep 10 2003 - 18:41:35 EST


Hi Jean,

> This is self explanatory :
> -----------------------------------------------------------
> kernel BUG at include/net/sock.h:459!
> invalid operand: 0000 [#1]
> CPU: 1
> EIP: 0060:[<d08ae64e>] Not tainted
> EFLAGS: 00010282
> EIP is at l2cap_sock_alloc+0x36/0xb4 [l2cap]
> eax: d08b3500 ebx: c6b4de40 ecx: 00000020 edx: d08ac440
> esi: 00000000 edi: 00000000 ebp: ffffffa3 esp: c81abf1c
> ds: 007b es: 007b ss: 0068
> Process sdpd (pid: 390, threadinfo=c81aa000 task=ce634cc0)
> Stack: 00000000 d08ac524 d08ae72c c20e7780 00000000 000000d0 d08a10f4 c20e7780
> 00000000 c20e7780 0000007c c033ecc0 ffffff9f c01e1236 c20e7780 00000000
> 0000001f bffff894 c81abfa8 00000001 c01e1325 0000001f 00000005 00000000
> Call Trace:
> [<d08ae72c>] l2cap_sock_create+0x60/0x7c [l2cap]
> [<d08a10f4>] bt_sock_create+0x8c/0xd0 [bluetooth]
> [<c01e1236>] sock_create+0x12e/0x200
> [<c01e1325>] sys_socket+0x1d/0x50
> [<c01e216c>] sys_socketcall+0xbc/0x260
> [<c0108cd3>] syscall_call+0x7/0xb
>
> Code: 0f 0b cb 01 e2 1a 8b d0 89 83 28 01 00 00 85 c0 74 30 50 e8
>
> -----------------------------------------------------------
>
> Basically, the socket is already owned by the 'bluetooth'
> module in bt_sock_alloc(), and the 'l2cap' module try to change the
> ownersip to itself in l2cap_sock_alloc(). The socket layer doesn't
> like it. At least, that's the way I read it.
> Without the ability to open BT socket, BT is pretty much
> useless.

yesterday David Woodhouse sent a patch which should fix this.

Regards

Marcel


===== net/bluetooth/af_bluetooth.c 1.22 vs edited =====
--- 1.22/net/bluetooth/af_bluetooth.c Sun Aug 31 03:30:42 2003
+++ edited/net/bluetooth/af_bluetooth.c Tue Sep 9 11:28:51 2003
@@ -130,7 +130,6 @@
}

sock_init_data(sock, sk);
- sk_set_owner(sk, THIS_MODULE);
INIT_LIST_HEAD(&bt_sk(sk)->accept_q);

sk->sk_zapped = 0;
===== net/bluetooth/hci_sock.c 1.24 vs edited =====
--- 1.24/net/bluetooth/hci_sock.c Sat Jul 5 07:52:58 2003
+++ edited/net/bluetooth/hci_sock.c Tue Sep 9 11:30:43 2003
@@ -587,6 +587,8 @@
if (!sk)
return -ENOMEM;

+ sk_set_owner(sk, THIS_MODULE);
+
sock->state = SS_UNCONNECTED;
sk->sk_state = BT_OPEN;

===== net/bluetooth/bnep/sock.c 1.11 vs edited =====
--- 1.11/net/bluetooth/bnep/sock.c Thu Jun 5 01:57:08 2003
+++ edited/net/bluetooth/bnep/sock.c Tue Sep 9 11:29:54 2003
@@ -175,6 +175,9 @@

if (!(sk = bt_sock_alloc(sock, PF_BLUETOOTH, 0, GFP_KERNEL)))
return -ENOMEM;
+
+ sk_set_owner(sk, THIS_MODULE);
+
sock->ops = &bnep_sock_ops;

sock->state = SS_UNCONNECTED;


-
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/