X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=net%2Fcaif%2Fcfveil.c;h=3ec83fbc28875a55ff141610f84ea6d6feea9d02;hb=d762f4383100c2a87b1a3f2d678cd3b5425655b4;hp=c3b1dec4acf648777409bbac36ea9b659e84f03a;hpb=03e4970c10151c5fb25ddd7e9a142d63c6a8d058;p=~andy%2Flinux diff --git a/net/caif/cfveil.c b/net/caif/cfveil.c index c3b1dec4acf..3ec83fbc288 100644 --- a/net/caif/cfveil.c +++ b/net/caif/cfveil.c @@ -82,13 +82,14 @@ static int cfvei_transmit(struct cflayer *layr, struct cfpkt *pkt) int ret; struct cfsrvl *service = container_obj(layr); if (!cfsrvl_ready(service, &ret)) - return ret; + goto err; caif_assert(layr->dn != NULL); caif_assert(layr->dn->transmit != NULL); if (cfpkt_add_head(pkt, &tmp, 1) < 0) { pr_err("Packet is erroneous!\n"); - return -EPROTO; + ret = -EPROTO; + goto err; } /* Add info-> for MUX-layer to route the packet out. */ @@ -96,8 +97,8 @@ static int cfvei_transmit(struct cflayer *layr, struct cfpkt *pkt) info->channel_id = service->layer.id; info->hdr_len = 1; info->dev_info = &service->dev_info; - ret = layr->dn->transmit(layr->dn, pkt); - if (ret < 0) - cfpkt_extr_head(pkt, &tmp, 1); + return layr->dn->transmit(layr->dn, pkt); +err: + cfpkt_destroy(pkt); return ret; }