diff options
author | 2025-03-17 06:44:52 +0100 | |
---|---|---|
committer | 2025-03-18 13:06:00 +0100 | |
commit | beba9487138151c17dec17105364b35935f21562 (patch) | |
tree | a16d468392cdb31132a67e8db3dd5f658bcb38cb | |
parent | xfs: Remove duplicate xfs_rtbitmap.h header (diff) | |
download | wireguard-linux-beba9487138151c17dec17105364b35935f21562.tar.xz wireguard-linux-beba9487138151c17dec17105364b35935f21562.zip |
xfs: fix a missing unlock in xfs_growfs_data
The newly added check for the internal RT device needs to unlock
m_growlock just like all ther other error cases.
Fixes: bdc03eb5f98f ("xfs: allow internal RT devices for zoned mode")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
Diffstat (limited to '')
-rw-r--r-- | fs/xfs/xfs_fsops.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index ee2cefbd5df8..d7658b7dcdbd 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c @@ -301,7 +301,7 @@ xfs_growfs_data( struct xfs_mount *mp, struct xfs_growfs_data *in) { - int error = 0; + int error; if (!capable(CAP_SYS_ADMIN)) return -EPERM; @@ -309,8 +309,10 @@ xfs_growfs_data( return -EWOULDBLOCK; /* we can't grow the data section when an internal RT section exists */ - if (in->newblocks != mp->m_sb.sb_dblocks && mp->m_sb.sb_rtstart) - return -EINVAL; + if (in->newblocks != mp->m_sb.sb_dblocks && mp->m_sb.sb_rtstart) { + error = -EINVAL; + goto out_error; + } /* update imaxpct separately to the physical grow of the filesystem */ if (in->imaxpct != mp->m_sb.sb_imax_pct) { |