aha/drivers/isdn
Xiaotian Feng 2bd9af046f isdn: fix possible circular locking dependency
There's a circular locking dependency:

---> isdn_net_get_locked_lp
    --->lock &nd->queue_lock
    --->lock &nd->queue->xmit_lock
    .....................
    ---->unlock &nd->queue_lock

---> isdn_net_writebuf_skb (called with &nd->queue->xmit_lock locked)
    ---->isdn_net_inc_frame_cnt
         ---->isdn_net_device_busy
              ----> lock &nd->queue_lock

This will trigger lockdep warnings:

 =======================================================
 [ INFO: possible circular locking dependency detected ]
 2.6.32-rc4-testing #7
 -------------------------------------------------------
 ipppd/28379 is trying to acquire lock:
 (&netdev->queue_lock){......}, at: [<e62ad0fd>] isdn_net_device_busy+0x2c/0x74 [isdn]

 but task is already holding lock:
 (&netdev->local->xmit_lock){+.....}, at: [<e62aefc2>] isdn_net_write_super+0x3f/0x6e [isdn]

 which lock already depends on the new lock.
 .......

 We don't need to lock nd->queue->xmit_lock to protect single
isdn_net_lp_busy(). This can fix above lockdep warnings.

Reported-and-tested-by: Tilman Schmidt <tilman@imap.cc>
Signed-off-by: Xiaotian Feng <xtfeng@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-10-22 18:27:53 -07:00
..
act2000 ISDN: ARRAY_SIZE changes 2009-07-25 20:23:05 +02:00
capi isdn: make capidrv module parameter "debugmode" writeable 2009-10-06 22:20:55 -07:00
divert trivial: fix typos s/paramter/parameter/ and s/excute/execute/ in documentation and source comments. 2009-06-12 18:01:46 +02:00
gigaset gigaset: add kerneldoc comments 2009-10-06 22:21:07 -07:00
hardware isdn: fix netjet/isdnhdlc build errors 2009-09-28 12:47:36 -07:00
hisax Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-08-12 17:44:53 -07:00
hysdn isdn: convert to netdev_tx_t 2009-09-01 01:13:16 -07:00
i4l isdn: fix possible circular locking dependency 2009-10-22 18:27:53 -07:00
icn fix ! versus & precedence in various places 2008-02-06 10:40:59 -08:00
isdnloop drivers/isdn: correct use of ! and & 2008-03-04 16:35:16 -08:00
mISDN net: Make setsockopt() optlen be unsigned. 2009-09-30 16:12:20 -07:00
pcbit isdn: remove some pointless conditionals before kfree_skb() 2009-02-26 23:07:29 -08:00
sc ISDN: fix sc/shmem printk format warning 2009-02-20 00:54:44 -08:00
Kconfig ISDN: Make isdnhdlc usable for other ISDN drivers 2009-07-25 20:15:21 +02:00
Makefile mISDN fix main ISDN Makefile 2008-08-02 16:28:20 +02:00