aboutsummaryrefslogtreecommitdiffstats
path: root/net/caif/cfserl.c
diff options
context:
space:
mode:
authorDan Carpenter <error27@gmail.com>2010-05-26 05:16:48 +0000
committerDavid S. Miller <davem@davemloft.net>2010-05-29 00:18:50 -0700
commit97dc875f90a7b88a9fa476c256345c0d40fcdf6c (patch)
tree53979f092d9f6792f44b940d70a9b9920316bfc5 /net/caif/cfserl.c
parentc196b02ce60d7b1f9bc62a62c5706d4d58fbfc5a (diff)
downloadkernel_samsung_crespo-97dc875f90a7b88a9fa476c256345c0d40fcdf6c.zip
kernel_samsung_crespo-97dc875f90a7b88a9fa476c256345c0d40fcdf6c.tar.gz
kernel_samsung_crespo-97dc875f90a7b88a9fa476c256345c0d40fcdf6c.tar.bz2
caif: unlock on error path in cfserl_receive()
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>
Diffstat (limited to 'net/caif/cfserl.c')
-rw-r--r--net/caif/cfserl.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/caif/cfserl.c b/net/caif/cfserl.c
index cb4325a..965c5ba 100644
--- a/net/caif/cfserl.c
+++ b/net/caif/cfserl.c
@@ -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;
}