Merge tag 'wireless-drivers-2021-02-26' of git://git.kernel.org/pub/scm/linux/kernel...
[platform/kernel/linux-rpi.git] / net / qrtr / tun.c
index b238c40..304b41f 100644 (file)
@@ -31,6 +31,7 @@ static int qrtr_tun_send(struct qrtr_endpoint *ep, struct sk_buff *skb)
 static int qrtr_tun_open(struct inode *inode, struct file *filp)
 {
        struct qrtr_tun *tun;
+       int ret;
 
        tun = kzalloc(sizeof(*tun), GFP_KERNEL);
        if (!tun)
@@ -43,7 +44,16 @@ static int qrtr_tun_open(struct inode *inode, struct file *filp)
 
        filp->private_data = tun;
 
-       return qrtr_endpoint_register(&tun->ep, QRTR_EP_NID_AUTO);
+       ret = qrtr_endpoint_register(&tun->ep, QRTR_EP_NID_AUTO);
+       if (ret)
+               goto out;
+
+       return 0;
+
+out:
+       filp->private_data = NULL;
+       kfree(tun);
+       return ret;
 }
 
 static ssize_t qrtr_tun_read_iter(struct kiocb *iocb, struct iov_iter *to)