From: Satyam Sharma Date: Thu, 17 May 2007 06:50:16 +0000 (-0700) Subject: [BLUETOOTH]: Fix locking in hci_sock_dev_event(). X-Git-Tag: v2.6.22-rc2~9^2~4 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ce61d1c7a8ef4c1337fa983a3036d4010e3c19e;p=pandora-kernel.git [BLUETOOTH]: Fix locking in hci_sock_dev_event(). We presently use lock_sock() to acquire a lock on a socket in hci_sock_dev_event(), but this goes BUG because lock_sock() can sleep and we're already holding a read-write spinlock at that point. So, we must use the non-sleeping BH version, bh_lock_sock(). However, hci_sock_dev_event() is called from user context and hence using simply bh_lock_sock() will deadlock against a concurrent softirq that tries to acquire a lock on the same socket. Hence, disabling BH's before acquiring the socket lock and enable them afterwards, is the proper solution to fix socket locking in hci_sock_dev_event(). Signed-off-by: Satyam Sharma Signed-off-by: Marcel Holtmann Signed-off-by: Jiri Kosina Signed-off-by: David S. Miller --- Reading git-diff-tree failed