]> Pileus Git - ~andy/linux/blobdiff - net/caif/cfveil.c
Merge branch 'sh-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal...
[~andy/linux] / net / caif / cfveil.c
index c3b1dec4acf648777409bbac36ea9b659e84f03a..3ec83fbc28875a55ff141610f84ea6d6feea9d02 100644 (file)
@@ -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;
 }