| From f997ea3b7afc108eb9761f321b57de2d089c7c48 Mon Sep 17 00:00:00 2001 |
| From: Xie Yongji <xieyongji@bytedance.com> |
| Date: Mon, 17 May 2021 16:35:57 +0800 |
| Subject: 9p/trans_virtio: Remove sysfs file on probe failure |
| |
| From: Xie Yongji <xieyongji@bytedance.com> |
| |
| 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 | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/net/9p/trans_virtio.c |
| +++ b/net/9p/trans_virtio.c |
| @@ -620,7 +620,7 @@ static int p9_virtio_probe(struct virtio |
| 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; |
| @@ -638,6 +638,8 @@ static int p9_virtio_probe(struct virtio |
| |
| return 0; |
| |
| +out_remove_file: |
| + sysfs_remove_file(&vdev->dev.kobj, &dev_attr_mount_tag.attr); |
| out_free_tag: |
| kfree(tag); |
| out_free_vq: |