From: Gustavo Zacarias <gustavoz@xxxxxxxxxx> Date: Fri, 17 Nov 2006 12:47:26 -0300 > Kernel unaligned access at TPC[10247dc4] hci_send_to_sock+0xb4/0x174 > [bluetooth] > > With my limited kernel module debugging skills i think the culprit is at > net/bluetooth/hci_sock.c lines 123-126: > > if (flt->opcode && ((evt == HCI_EV_CMD_COMPLETE && > flt->opcode != *(__u16 *)(skb->data + 3)) || > (evt == HCI_EV_CMD_STATUS && > flt->opcode != *(__u16 *)(skb->data + 4)))) > > That looks terrible or am i wrong? Thanks for the report. This patch should fix the problem. [ Marcel, I'd like to send this in to Linus if you don't mind. ] diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c index f26a9eb..3bf9222 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c @@ -120,10 +120,13 @@ void hci_send_to_sock(struct hci_dev *hd if (!hci_test_bit(evt, &flt->event_mask)) continue; - if (flt->opcode && ((evt == HCI_EV_CMD_COMPLETE && - flt->opcode != *(__u16 *)(skb->data + 3)) || - (evt == HCI_EV_CMD_STATUS && - flt->opcode != *(__u16 *)(skb->data + 4)))) + if (flt->opcode && + ((evt == HCI_EV_CMD_COMPLETE && + flt->opcode != + get_unaligned((__u16 *)(skb->data + 3))) || + (evt == HCI_EV_CMD_STATUS && + flt->opcode != + get_unaligned((__u16 *)(skb->data + 4))))) continue; } - To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html