Skip to content

Commit

Permalink
ppp: remove unnecessary bh disable in xmit path
Browse files Browse the repository at this point in the history
Since the commit 55454a5 ("ppp: avoid dealock on recursive xmit"),
the PPP xmit path is protected by wrapper functions which disable the
bh already. So it is unnecessary to disable the bh again in the real
xmit path.

Signed-off-by: Gao Feng <[email protected]>
Acked-by: Guillaume Nault <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
gfreewind authored and davem330 committed Jun 1, 2017
1 parent ba52d61 commit 97fcc19
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions drivers/net/ppp/ppp_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -1618,7 +1618,7 @@ ppp_push(struct ppp *ppp)
list = list->next;
pch = list_entry(list, struct channel, clist);

spin_lock_bh(&pch->downl);
spin_lock(&pch->downl);
if (pch->chan) {
if (pch->chan->ops->start_xmit(pch->chan, skb))
ppp->xmit_pending = NULL;
Expand All @@ -1627,7 +1627,7 @@ ppp_push(struct ppp *ppp)
kfree_skb(skb);
ppp->xmit_pending = NULL;
}
spin_unlock_bh(&pch->downl);
spin_unlock(&pch->downl);
return;
}

Expand Down Expand Up @@ -1757,15 +1757,15 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb)
}

/* check the channel's mtu and whether it is still attached. */
spin_lock_bh(&pch->downl);
spin_lock(&pch->downl);
if (pch->chan == NULL) {
/* can't use this channel, it's being deregistered */
if (pch->speed == 0)
nzero--;
else
totspeed -= pch->speed;

spin_unlock_bh(&pch->downl);
spin_unlock(&pch->downl);
pch->avail = 0;
totlen = len;
totfree--;
Expand Down Expand Up @@ -1816,7 +1816,7 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb)
*/
if (flen <= 0) {
pch->avail = 2;
spin_unlock_bh(&pch->downl);
spin_unlock(&pch->downl);
continue;
}

Expand Down Expand Up @@ -1861,14 +1861,14 @@ static int ppp_mp_explode(struct ppp *ppp, struct sk_buff *skb)
len -= flen;
++ppp->nxseq;
bits = 0;
spin_unlock_bh(&pch->downl);
spin_unlock(&pch->downl);
}
ppp->nxchan = i;

return 1;

noskb:
spin_unlock_bh(&pch->downl);
spin_unlock(&pch->downl);
if (ppp->debug & 1)
netdev_err(ppp->dev, "PPP: no memory (fragment)\n");
++ppp->dev->stats.tx_errors;
Expand All @@ -1883,7 +1883,7 @@ static void __ppp_channel_push(struct channel *pch)
struct sk_buff *skb;
struct ppp *ppp;

spin_lock_bh(&pch->downl);
spin_lock(&pch->downl);
if (pch->chan) {
while (!skb_queue_empty(&pch->file.xq)) {
skb = skb_dequeue(&pch->file.xq);
Expand All @@ -1897,14 +1897,14 @@ static void __ppp_channel_push(struct channel *pch)
/* channel got deregistered */
skb_queue_purge(&pch->file.xq);
}
spin_unlock_bh(&pch->downl);
spin_unlock(&pch->downl);
/* see if there is anything from the attached unit to be sent */
if (skb_queue_empty(&pch->file.xq)) {
read_lock_bh(&pch->upl);
read_lock(&pch->upl);
ppp = pch->ppp;
if (ppp)
__ppp_xmit_process(ppp);
read_unlock_bh(&pch->upl);
read_unlock(&pch->upl);
}
}

Expand Down

0 comments on commit 97fcc19

Please sign in to comment.