Commit 70754960 authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: bch2_ioctl_subvolume_destroy() fixes



bch2_evict_subvolume_inodes() was getting stuck - due to incorrectly
pruning the dcache.

Also, fix missing permissions checks.

Reported-by: default avatarAlexander Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent b3981564
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -541,10 +541,12 @@ static long bch2_ioctl_subvolume_destroy(struct bch_fs *c, struct file *filp,
		ret = -ENOENT;
		goto err;
	}
	ret = __bch2_unlink(dir, victim, true);

	ret =   inode_permission(file_mnt_idmap(filp), d_inode(victim), MAY_WRITE) ?:
		__bch2_unlink(dir, victim, true);
	if (!ret) {
		fsnotify_rmdir(dir, victim);
		d_delete(victim);
		d_invalidate(victim);
	}
err:
	inode_unlock(dir);