* [PATCH] tg3: Do not call device_set_wakeup_enable() under spin_lock_bh
@ 2010-10-25 23:01 Rafael J. Wysocki
2010-10-26 18:34 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: Rafael J. Wysocki @ 2010-10-25 23:01 UTC (permalink / raw)
To: David S. Miller; +Cc: Matt Carlson, Michael Chan, netdev, Maxim Levitsky
From: Rafael J. Wysocki <rjw@sisk.pl>
The tg3 driver calls device_set_wakeup_enable() under spin_lock_bh,
which causes a problem to happen after the recent core power
management changes, because this function can sleep now. Fix this
by moving the device_set_wakeup_enable() call out of the
spin_lock_bh-protected area.
Reported-by: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
Hi,
This fixes a regression from 2.6.36, please apply.
Thanks,
Rafael
---
drivers/net/tg3.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
Index: linux-2.6/drivers/net/tg3.c
===================================================================
--- linux-2.6.orig/drivers/net/tg3.c
+++ linux-2.6/drivers/net/tg3.c
@@ -9732,16 +9732,16 @@ static int tg3_set_wol(struct net_device
!((tp->tg3_flags & TG3_FLAG_WOL_CAP) && device_can_wakeup(dp)))
return -EINVAL;
+ device_set_wakeup_enable(dp, wol->wolopts & WAKE_MAGIC);
+
spin_lock_bh(&tp->lock);
- if (wol->wolopts & WAKE_MAGIC) {
+ if (device_may_wakeup(dp))
tp->tg3_flags |= TG3_FLAG_WOL_ENABLE;
- device_set_wakeup_enable(dp, true);
- } else {
+ else
tp->tg3_flags &= ~TG3_FLAG_WOL_ENABLE;
- device_set_wakeup_enable(dp, false);
- }
spin_unlock_bh(&tp->lock);
+
return 0;
}
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PATCH] tg3: Do not call device_set_wakeup_enable() under spin_lock_bh
2010-10-25 23:01 [PATCH] tg3: Do not call device_set_wakeup_enable() under spin_lock_bh Rafael J. Wysocki
@ 2010-10-26 18:34 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2010-10-26 18:34 UTC (permalink / raw)
To: rjw; +Cc: mcarlson, mchan, netdev, maximlevitsky
From: "Rafael J. Wysocki" <rjw@sisk.pl>
Date: Tue, 26 Oct 2010 01:01:55 +0200
> From: Rafael J. Wysocki <rjw@sisk.pl>
>
> The tg3 driver calls device_set_wakeup_enable() under spin_lock_bh,
> which causes a problem to happen after the recent core power
> management changes, because this function can sleep now. Fix this
> by moving the device_set_wakeup_enable() call out of the
> spin_lock_bh-protected area.
>
> Reported-by: Maxim Levitsky <maximlevitsky@gmail.com>
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Applied, thanks a lot.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-10-26 18:34 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-25 23:01 [PATCH] tg3: Do not call device_set_wakeup_enable() under spin_lock_bh Rafael J. Wysocki
2010-10-26 18:34 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox