drivers/net: Add missing unlock
authorJulia Lawall <julia@diku.dk>
Mon, 29 Mar 2010 05:35:05 +0000 (05:35 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 31 Mar 2010 06:03:18 +0000 (23:03 -0700)
Unlock the lock before leaving the function.

A simplified version of the semantic patch that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@r exists@
expression E1;
identifier f;
@@

f (...) { <+...
* spin_lock_irqsave (E1,...);
... when != E1
* return ...;
...+> }
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/sgiseeq.c

index ed999d31f1fa802e4738d466c68ea7e03f263ce0..37f6a00cde17572cf270cb54ad394be74567af85 100644 (file)
@@ -592,8 +592,10 @@ static int sgiseeq_start_xmit(struct sk_buff *skb, struct net_device *dev)
        /* Setup... */
        len = skb->len;
        if (len < ETH_ZLEN) {
-               if (skb_padto(skb, ETH_ZLEN))
+               if (skb_padto(skb, ETH_ZLEN)) {
+                       spin_unlock_irqrestore(&sp->tx_lock, flags);
                        return NETDEV_TX_OK;
+               }
                len = ETH_ZLEN;
        }