caif: unlock on error path in cfserl_receive()
authorDan Carpenter <error27@gmail.com>
Wed, 26 May 2010 05:16:48 +0000 (05:16 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 29 May 2010 07:18:50 +0000 (00:18 -0700)
There was an spin_unlock missing on the error path.  The spin_lock was
tucked in with the declarations so it was hard to spot.  I added a new
line.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Acked-by: Sjur Brændeland <sjurbren@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/caif/cfserl.c

index cb4325a3dc83184f4a4f8e382dbec6b7ac6c21f2..965c5baace40b10c401c8fff3ecaaacb612c0aa6 100644 (file)
@@ -59,16 +59,18 @@ static int cfserl_receive(struct cflayer *l, struct cfpkt *newpkt)
        u8 stx = CFSERL_STX;
        int ret;
        u16 expectlen = 0;
+
        caif_assert(newpkt != NULL);
        spin_lock(&layr->sync);
 
        if (layr->incomplete_frm != NULL) {
-
                layr->incomplete_frm =
                    cfpkt_append(layr->incomplete_frm, newpkt, expectlen);
                pkt = layr->incomplete_frm;
-               if (pkt == NULL)
+               if (pkt == NULL) {
+                       spin_unlock(&layr->sync);
                        return -ENOMEM;
+               }
        } else {
                pkt = newpkt;
        }