diff options
author | sjur.brandeland@stericsson.com <sjur.brandeland@stericsson.com> | 2012-01-17 04:03:14 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-01-17 16:46:55 +0100 |
commit | 59f608d84f937cb5e2fd3a0b9f848f200d47ba85 (patch) | |
tree | 1f2e58895a410e494c910176f401cea24dabff7d /net/caif/caif_dev.c | |
parent | caif: Fix typo in Vendor/Product-ID for CAIF modems (diff) | |
download | linux-59f608d84f937cb5e2fd3a0b9f848f200d47ba85.tar.xz linux-59f608d84f937cb5e2fd3a0b9f848f200d47ba85.zip |
caif: Remove bad WARN_ON in caif_dev
Remove WARN_ON and bad handling of SKB without destructor callback
in caif_flow_cb. SKB without destructor cannot be handled as an
error case.
Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/caif/caif_dev.c')
-rw-r--r-- | net/caif/caif_dev.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/net/caif/caif_dev.c b/net/caif/caif_dev.c index 61570ee76fe6..673728add60b 100644 --- a/net/caif/caif_dev.c +++ b/net/caif/caif_dev.c @@ -146,15 +146,17 @@ void caif_flow_cb(struct sk_buff *skb) spin_lock_bh(&caifd->flow_lock); send_xoff = caifd->xoff; caifd->xoff = 0; - if (!WARN_ON(caifd->xoff_skb_dtor == NULL)) { - WARN_ON(caifd->xoff_skb != skb); - dtor = caifd->xoff_skb_dtor; - caifd->xoff_skb = NULL; - caifd->xoff_skb_dtor = NULL; - } + dtor = caifd->xoff_skb_dtor; + + if (WARN_ON(caifd->xoff_skb != skb)) + skb = NULL; + + caifd->xoff_skb = NULL; + caifd->xoff_skb_dtor = NULL; + spin_unlock_bh(&caifd->flow_lock); - if (dtor) + if (dtor && skb) dtor(skb); if (send_xoff) |