From: Andrew Morton <akpm@xxxxxxxx> Date: Mon, 30 May 2005 14:17:14 -0700 > That local_bh_disable() in kmap_skb_frag() looks weird and might be > unnecessary. Does anyone know what it's there for? Replace it with > local_irq_save()? The SKB kmap types are to be used only from BH context. So the local_bh_disable() is really necessary. This limitation causes problems elsewhere too, for example if the tg3 driver has to do the 4GB DMA boundary workaround on transmit, then it tries to do a skb_copy() in IRQ disabled context, which thusly also tries to do some SKB kmapping and triggers the same assertion seen here. Both UDP and tg3 need to be fixed to not do these operations from such illegal contexts. It really stinks that this error on triggers with highmem enabled. We would have seen both bugs much earlier on otherwise. - : send the line "unsubscribe linux-net" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html