summaryrefslogtreecommitdiffstats
path: root/drivers/net/usb
diff options
context:
space:
mode:
authorDenis Joseph Barrow <D.Barrow@option.com>2009-01-15 13:31:24 +0000
committerLinus Torvalds <torvalds@linux-foundation.org>2009-01-15 12:48:36 -0800
commitd45eb81c3e345fabaf27ef3ab437b85c0bf9fafa (patch)
tree46f3008a49f0c3dd167237419267d70626729e8c /drivers/net/usb
parentfe41cbb164a0dc55f3914a0e4cabe8240410157c (diff)
downloadop-kernel-dev-d45eb81c3e345fabaf27ef3ab437b85c0bf9fafa.zip
op-kernel-dev-d45eb81c3e345fabaf27ef3ab437b85c0bf9fafa.tar.gz
tty: Fix double grabbing of a spinlock
The HSO changes for kref introduced a recursive spinlock take. All functions which call put_rxbuf_data already have serial->serial_lock grabbed. [Comment to code added-AC] Signed-off-by: Denis Joseph Barrow <D.Barrow@option.com> Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/net/usb')
-rw-r--r--drivers/net/usb/hso.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/net/usb/hso.c b/drivers/net/usb/hso.c
index 9df04dd..e25a58f 100644
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -2044,9 +2044,8 @@ static int put_rxbuf_data(struct urb *urb, struct hso_serial *serial)
return -2;
}
- spin_lock(&serial->serial_lock);
+ /* All callers to put_rxbuf_data hold serial_lock */
tty = tty_kref_get(serial->tty);
- spin_unlock(&serial->serial_lock);
/* Push data to tty */
if (tty) {
OpenPOWER on IntegriCloud