Re: 2.5.47 -- OOPS -- sleeping function called from illegal context atmm/page_alloc.c:417

From: Andrew Morton (
Date: Tue Nov 12 2002 - 03:58:51 EST

(It is not an oops. It is a debug trace)

Miles Lane wrote:
> ohci1394: $Rev: 601 $ Ben Collins <>
> ohci1394_0: Unexpected PCI resource length of 1000!
> ohci1394_0: OHCI-1394 1.0 (PCI): IRQ=[9] MMIO=[febfc000-febfc7ff] Max
> Packet=[2048]
> Debug: sleeping function called from illegal context at mm/page_alloc.c:417
> Call Trace:

void highlevel_add_host(struct hpsb_host *host)
        struct list_head *entry;
        struct hpsb_highlevel *hl;

        list_for_each(entry, &hl_drivers) {
                hl = list_entry(entry, struct hpsb_highlevel, hl_list);


That's a pretty bad bug. You shouldn't sleep inside read_lock(), and this
function is performing GFP_KERNEL allocations and even launching kernel
threads inside that lock.

Can hl_drivers_lock become a semaphore?
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

This archive was generated by hypermail 2b29 : Fri Nov 15 2002 - 22:00:25 EST