From 4a7352e13d952b743d959702413455f5f8198399 Mon Sep 17 00:00:00 2001 From: Xiaotian Feng Date: Wed, 21 Oct 2009 23:07:04 +0000 Subject: [PATCH] --- yaml --- r: 167931 b: refs/heads/master c: 2bd9af046fdc10703b266b0f3b25423f0b7d703e h: refs/heads/master i: 167929: 478d90750350c5b0f7f6018123f5ff8d6676d419 167927: d3ae746add9331750b5c57c1cd1c0221f39057cb v: v3 --- [refs] | 2 +- trunk/drivers/isdn/i4l/isdn_net.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 1ca20917fbc7..391d34a3e769 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0dc6d9cbe7df4d2c3cdf17cd2f78733102b0fea6 +refs/heads/master: 2bd9af046fdc10703b266b0f3b25423f0b7d703e diff --git a/trunk/drivers/isdn/i4l/isdn_net.h b/trunk/drivers/isdn/i4l/isdn_net.h index 74032d0881ef..7511f08effa5 100644 --- a/trunk/drivers/isdn/i4l/isdn_net.h +++ b/trunk/drivers/isdn/i4l/isdn_net.h @@ -83,19 +83,19 @@ static __inline__ isdn_net_local * isdn_net_get_locked_lp(isdn_net_dev *nd) spin_lock_irqsave(&nd->queue_lock, flags); lp = nd->queue; /* get lp on top of queue */ - spin_lock(&nd->queue->xmit_lock); while (isdn_net_lp_busy(nd->queue)) { - spin_unlock(&nd->queue->xmit_lock); nd->queue = nd->queue->next; if (nd->queue == lp) { /* not found -- should never happen */ lp = NULL; goto errout; } - spin_lock(&nd->queue->xmit_lock); } lp = nd->queue; nd->queue = nd->queue->next; + spin_unlock_irqrestore(&nd->queue_lock, flags); + spin_lock(&lp->xmit_lock); local_bh_disable(); + return lp; errout: spin_unlock_irqrestore(&nd->queue_lock, flags); return lp;