1 Jun 2008 05:11
PATCH] net: b44.c fix sleeping-with-spinlock-helt during resume
Arjan van de Ven <arjan <at> infradead.org>
2008-06-01 03:11:30 GMT
2008-06-01 03:11:30 GMT
From: Arjan van de Ven <arjan <at> linux.intel.com> Subject: [PATCH] net: b44.c fix sleeping-with-spinlock-helt during resume CC: Michael Buesch <mb <at> bu3sch.de> The b44.c driver calls b44_chip_reset() from the resume path, with the device spinlock held. Unfortunately, b44_chip_reset() calls ssb_pcicore_dev_irqvecs_enable() which is a sleeping function (and calls might_sleep), if and only if the device hasn't been enabled yet. Not having this hardware, the safest solution seems to be to enable the irqvec before taking the spinlock... http://www.kerneloops.org/search.php?search=ssb_pcicore_dev_irqvecs_enable Reported-by: www.kerneloops.org Signed-off-by: Arjan van de Ven --- drivers/net/b44.c | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/b44.c b/drivers/net/b44.c index 59dce6a..6028129 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c <at> <at> -1278,6 +1278,7 <at> <at> static void b44_chip_reset(struct b44 *bp, int reset_kind) bw32(bp, B44_DMARX_CTRL, 0); bp->rx_prod = bp->rx_cons = 0; } else + /* this function sleeps! */(Continue reading)
RSS Feed