9p/trans_virtio: Remove sysfs file on probe failure
authorXie Yongji <xieyongji@bytedance.com>
Mon, 17 May 2021 08:35:57 +0000 (16:35 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 26 Sep 2021 11:37:28 +0000 (13:37 +0200)
commit f997ea3b7afc108eb9761f321b57de2d089c7c48 upstream.

This ensures we don't leak the sysfs file if we failed to
allocate chan->vc_wq during probe.

Link: http://lkml.kernel.org/r/20210517083557.172-1-xieyongji@bytedance.com
Fixes: 86c8437383ac ("net/9p: Add sysfs mount_tag file for virtio 9P device")
Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/9p/trans_virtio.c

index f88911cffa1add28b3ef3f68f3d9349946b587dc..c6a46e8e9eda59df216d7b5fa58e2bb77fe092f4 100644 (file)
@@ -602,7 +602,7 @@ static int p9_virtio_probe(struct virtio_device *vdev)
        chan->vc_wq = kmalloc(sizeof(wait_queue_head_t), GFP_KERNEL);
        if (!chan->vc_wq) {
                err = -ENOMEM;
-               goto out_free_tag;
+               goto out_remove_file;
        }
        init_waitqueue_head(chan->vc_wq);
        chan->ring_bufs_avail = 1;
@@ -620,6 +620,8 @@ static int p9_virtio_probe(struct virtio_device *vdev)
 
        return 0;
 
+out_remove_file:
+       sysfs_remove_file(&vdev->dev.kobj, &dev_attr_mount_tag.attr);
 out_free_tag:
        kfree(tag);
 out_free_vq: