All of lore.kernel.org
 help / color / mirror / Atom feed
* "deadlock" between smc91x driver and link_watch
@ 2004-11-23 17:16 Ian Campbell
  2004-11-23 23:31 ` Andrew Morton
  0 siblings, 1 reply; 11+ messages in thread
From: Ian Campbell @ 2004-11-23 17:16 UTC (permalink / raw)
  To: Nicolas Pitre; +Cc: linux-kernel

Hi,

I'm seeing a deadlock in linkwatch_event() when bringing down an
Ethernet interface using the smc91x driver (drivers/net/smc91x.c).

What I am seeing is that smc_close() is calling netif_carrier_off which
has the call chain:
	netif_carrier_off
	-> linkwatch_fire_event
	   -> schedule_work or schedule_delayed_work
The function that is scheduled is linkwatch_event().

smc_close() then goes on to call flush_scheduled_work() in order to
ensure that it's own pending workqueue stuff (smc_phy_configure()) is
completed before powering down the PHY.

What I am seeing is that linkwatch_event() is deadlocking trying take
rtnl_sem via rtnl_shlock(). The lock appears to already be held by a
call to rtnl_lock() from devinet_ioctl().

Any ideas? Perhaps smc_phy_configure calls could just check that the
interface is up before continuing, then there would be no need to flush
the queue to get rid of it.

Ian.

-- 
Ian Campbell, Senior Design Engineer
                                        Web: http://www.arcom.com
Arcom, Clifton Road,                    Direct: +44 (0)1223 403 465
Cambridge CB1 7EA, United Kingdom       Phone:  +44 (0)1223 411 200


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2004-11-27  1:40 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-11-23 17:16 "deadlock" between smc91x driver and link_watch Ian Campbell
2004-11-23 23:31 ` Andrew Morton
2004-11-24  9:41   ` Ian Campbell
2004-11-24  9:46     ` Andrew Morton
2004-11-24  9:58       ` Ian Campbell
2004-11-24 15:21         ` Nicolas Pitre
2004-11-24 15:52           ` Ian Campbell
2004-11-24 16:57             ` Nicolas Pitre
2004-11-24 17:13               ` Ian Campbell
2004-11-25  9:59               ` Ian Campbell
2004-11-25 16:31                 ` Nicolas Pitre

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.