Re: [PATCH] btrfs: fix GET_SUBVOL_INFO after compat refactor
Qu Wenruo <[email protected]>
| Newsgroups | org.kernel.vger.linux-btrfs,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
在 2026/7/13 17:20, Daan De Meyer via B4 Relay 写道: > From: Daan De Meyer <[email protected]> > > btrfs_search_slot() returns a positive value when the search key does > not exactly match an item. This is expected here, since offset 0 is used > to find the first ROOT_BACKREF for the subvolume and the actual key has > the parent root ID as its offset. > > Before the compat ioctl refactoring, the native handler still copied the > filled structure to userspace when the search returned 1. After the > lookup was moved to a shared helper, both native and compat callers > treat the positive return value as a failure and skip copy_to_user(), > leaving BTRFS_IOC_GET_SUBVOL_INFO unusable for non-top-level > subvolumes. > > Reset ret after successfully validating and reading the ROOT_BACKREF so > the helper reports success and both callers copy the result to > userspace. > > Fixes: 538e5bdbc899 ("btrfs: add 32-bit compat ioctl for BTRFS_IOC_GET_SUBVOL_INFO") > Signed-off-by: Daan De Meyer <[email protected]> Reviewed-by: Qu Wenruo <[email protected]> Thanks, Qu > --- > Fix BTRFS_IOC_GET_SUBVOL_INFO for non-top-level subvolumes after the > recent 32-bit compat ioctl refactor. > --- > fs/btrfs/ioctl.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c > index 9d47d16394fc..ab6c17716026 100644 > --- a/fs/btrfs/ioctl.c > +++ b/fs/btrfs/ioctl.c > @@ -2042,6 +2042,7 @@ static int _btrfs_ioctl_get_subvol_info(struct inode *inode, > ret = -ENOENT; > goto out; > } > + ret = 0; > } > > out: > > --- > base-commit: cab9e339cfbc1a4e075e53e281dfb00391e1a6bb > change-id: 20260713-btrfs-get-subvol-info-fix-e93803926554 > > Best regards, > -- > Daan De Meyer <[email protected]> > > >