Loading fs/fuse/virtio_fs.c +12 −13 Original line number Original line Diff line number Diff line Loading @@ -1420,22 +1420,14 @@ static int virtio_fs_get_tree(struct fs_context *fsc) return -EINVAL; return -EINVAL; } } err = -ENOMEM; fc = kzalloc(sizeof(struct fuse_conn), GFP_KERNEL); fc = kzalloc(sizeof(struct fuse_conn), GFP_KERNEL); if (!fc) { if (!fc) mutex_lock(&virtio_fs_mutex); goto out_err; virtio_fs_put(fs); mutex_unlock(&virtio_fs_mutex); return -ENOMEM; } fm = kzalloc(sizeof(struct fuse_mount), GFP_KERNEL); fm = kzalloc(sizeof(struct fuse_mount), GFP_KERNEL); if (!fm) { if (!fm) mutex_lock(&virtio_fs_mutex); goto out_err; virtio_fs_put(fs); mutex_unlock(&virtio_fs_mutex); kfree(fc); return -ENOMEM; } fuse_conn_init(fc, fm, get_user_ns(current_user_ns()), fuse_conn_init(fc, fm, get_user_ns(current_user_ns()), &virtio_fs_fiq_ops, fs); &virtio_fs_fiq_ops, fs); Loading Loading @@ -1468,6 +1460,13 @@ static int virtio_fs_get_tree(struct fs_context *fsc) WARN_ON(fsc->root); WARN_ON(fsc->root); fsc->root = dget(sb->s_root); fsc->root = dget(sb->s_root); return 0; return 0; out_err: kfree(fc); mutex_lock(&virtio_fs_mutex); virtio_fs_put(fs); mutex_unlock(&virtio_fs_mutex); return err; } } static const struct fs_context_operations virtio_fs_context_ops = { static const struct fs_context_operations virtio_fs_context_ops = { Loading Loading
fs/fuse/virtio_fs.c +12 −13 Original line number Original line Diff line number Diff line Loading @@ -1420,22 +1420,14 @@ static int virtio_fs_get_tree(struct fs_context *fsc) return -EINVAL; return -EINVAL; } } err = -ENOMEM; fc = kzalloc(sizeof(struct fuse_conn), GFP_KERNEL); fc = kzalloc(sizeof(struct fuse_conn), GFP_KERNEL); if (!fc) { if (!fc) mutex_lock(&virtio_fs_mutex); goto out_err; virtio_fs_put(fs); mutex_unlock(&virtio_fs_mutex); return -ENOMEM; } fm = kzalloc(sizeof(struct fuse_mount), GFP_KERNEL); fm = kzalloc(sizeof(struct fuse_mount), GFP_KERNEL); if (!fm) { if (!fm) mutex_lock(&virtio_fs_mutex); goto out_err; virtio_fs_put(fs); mutex_unlock(&virtio_fs_mutex); kfree(fc); return -ENOMEM; } fuse_conn_init(fc, fm, get_user_ns(current_user_ns()), fuse_conn_init(fc, fm, get_user_ns(current_user_ns()), &virtio_fs_fiq_ops, fs); &virtio_fs_fiq_ops, fs); Loading Loading @@ -1468,6 +1460,13 @@ static int virtio_fs_get_tree(struct fs_context *fsc) WARN_ON(fsc->root); WARN_ON(fsc->root); fsc->root = dget(sb->s_root); fsc->root = dget(sb->s_root); return 0; return 0; out_err: kfree(fc); mutex_lock(&virtio_fs_mutex); virtio_fs_put(fs); mutex_unlock(&virtio_fs_mutex); return err; } } static const struct fs_context_operations virtio_fs_context_ops = { static const struct fs_context_operations virtio_fs_context_ops = { Loading