Interrupt handler wlcore_irq in wlcore/main.c file invokes mutex_lock that is might sleep operation. Found by Linux Driver Verification project (linuxtesting.org) within my participation in the GSoC 2012 program. drivers/net/wireless/ti/wlcore/main.c static irqreturn_t wlcore_irq(int irq, void *cookie) { int ret; unsigned long flags; struct wl1271 *wl = cookie; /* TX might be handled here, avoid redundant work */ set_bit(WL1271_FLAG_TX_PENDING, &wl->flags); cancel_work_sync(&wl->tx_work); mutex_lock(&wl->mutex); ... } int __devinit wlcore_probe(struct wl1271 *wl, struct platform_device *pdev) { ... ret = request_threaded_irq(wl->irq, wl12xx_hardirq, wlcore_irq, irqflags, pdev->name, wl); ... } -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html