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