net/macb: better manage tx errors
Hello Nicolas Ferre,
The patch e86cd53afc59: "net/macb: better manage tx errors" from Oct 31, 2012, leads to the following static checker warning:
drivers/net/ethernet/cadence/macb.c:517 macb_halt_tx()
error: scheduling with locks held: 'spin_lock:lock'
drivers/net/ethernet/cadence/macb.c
503 static int macb_halt_tx(struct macb *bp)
504 {
505 unsigned long halt_time, timeout;
506 u32 status;
507
508 macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(THALT));
509
510 timeout = jiffies + usecs_to_jiffies(MACB_HALT_TIMEOUT);
511 do {
512 halt_time = jiffies;
513 status = macb_readl(bp, TSR);
514 if (!(status & MACB_BIT(TGO)))
515 return 0;
516
517 usleep_range(10, 250);
^^^^^^^^^^^^^^^^^^^^^This function is called with a spinlock held so we are not allowed to sleep.
518 } while (time_before(halt_time, timeout)); 519 520 return -ETIMEDOUT; 521 }
regards,
dan carpenter