On Fri, Mar 29, 2013 at 12:06 PM, Dave Jones <da...@redhat.com> wrote: > > Here's an oops I just hit.. > > BUG: unable to handle kernel NULL pointer dereference at 000000000000000f > IP: [<ffffffff812c24ca>] testmsg.isra.5+0x1a/0x60
Btw, looking at the code leading up to this, what the f*ck is wrong with the IPC stuff? It's using the generic list stuff for most of the lists, but then it open-codes the accesses. So instead of using for_each_entry(walk_msg, &msq->q_messages, m_list) { .. } the ipc/msg.c code does all that by hand, with tmp = msq->q_messages.next; while (tmp != &msq->q_messages) { struct msg_msg *walk_msg; walk_msg = list_entry(tmp, struct msg_msg, m_list); ... tmp = tmp->next; } Ugh. The code is near unreadable. And then it has magic memory barriers etc, implying that it doesn't lock the data structures, but no comments about them. See expunge_all() and pipelined_send(). The code seems entirely random, and it's badly set up (annoyance of the day: crazy helper functions in ipc/msgutil.c to make sure that (a) you have to spend more effort looking for them, and (b) they won't get inlined). Clearly nobody has cared for the crazy IPC message code in a long time. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/