I found following code in msg.c
/* allocate message header and text space*/
msgh = (struct msg *) kmalloc (sizeof(*msgh) + msgsz,
GFP_ATOMIC);
~~~~~~~~~~
Should not this be (in_interrupt()?GFP_ATOMIC:GFP_KERNEL), or
(msgflg & IPC_KERNEL? ... )? I really do not think message queues
should eat valuable atomic memory.
I think you're right. If you look in include/net/ipv6.h, Pedro Roque
has this little inline called gfp_any(), that should be moved into a
generic header and used in cases like the one you are pointing out.
Later,
David "Sparc" Miller
davem@caip.rutgers.edu