FAILED: patch "[PATCH] xfs: fix unreachable BIGTIME check in dquot flush validation" failed to apply to 5.10-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.10.y
git checkout FETCH_HEAD
git cherry-pick -x 03866d130ed33ab68cc7faaf4bf2c4abef96d42e
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026071407-parmesan-cyclic-e3d5@gregkh' --subject-prefix 'PATCH 5.10.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 03866d130ed33ab68cc7faaf4bf2c4abef96d42e Mon Sep 17 00:00:00 2001
From: Alexey Nepomnyashih <[email protected]>
Date: Wed, 3 Jun 2026 20:41:47 +0000
Subject: [PATCH] xfs: fix unreachable BIGTIME check in dquot flush validation
The dqp->q_id == 0 check inside the XFS_DQTYPE_BIGTIME block is unreachable because root dquots return successfully earlier. Reject root dquots with XFS_DQTYPE_BIGTIME before that early return, preserving the intended validation and removing the unreachable condition.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
fs/xfs/xfs_dquot.c +8 -8
@@ -1216,6 +1216,14 @@ xfs_qm_dqflush_check( type != XFS_DQTYPE_PROJ)return __this_address; +/* bigtime flag should never be set on root dquots */ +if (dqp->q_type &XFS_DQTYPE_BIGTIME ) { +if (!xfs_has_bigtime (dqp->q_mount)) +return __this_address; +if (dqp->q_id ==0 ) +return __this_address; + } +if (dqp->q_id ==0 )return NULL ;
@@ -1231,14 +1239,6 @@ xfs_qm_dqflush_check( !dqp->q_rtb.timer)return __this_address; -/* bigtime flag should never be set on root dquots */ -if (dqp->q_type &XFS_DQTYPE_BIGTIME ) { -if (!xfs_has_bigtime (dqp->q_mount)) -return __this_address; -if (dqp->q_id ==0 ) -return __this_address; - } -return NULL ; }
Sasha Levin
maintainerPATCH 1/2 xfs: reflect sb features in xfs_mount
From: Dave Chinner <[email protected]>
[ Upstream commit a1d86e8dec8c1325d301c9d5594bb794bc428fc3 ]
Currently on-disk feature checks require decoding the superblock fileds and so can be non-trivial. We have almost 400 hundred individual feature checks in the XFS code, so this is a significant amount of code. To reduce runtime check overhead, pre-process all the version flags into a features field in the xfs_mount at mount time so we can convert all the feature checks to a simple flag check.
There is also a need to convert the dynamic feature flags to update the m_features field. This is required for attr, attr2 and quota features. New xfs_mount based wrappers are added for this.
Stable-dep-of: 03866d130ed3 ("xfs: fix unreachable BIGTIME check in dquot flush validation")
--- fs/xfs/libxfs/xfs_format.h | 2 +- fs/xfs/libxfs/xfs_sb.c | 64 ++++++++++++++++++++++++++++++++ fs/xfs/libxfs/xfs_sb.h | 1 + fs/xfs/xfs_dquot.c | 2 +- fs/xfs/xfs_log_recover.c | 1 + fs/xfs/xfs_mount.c | 1 + fs/xfs/xfs_mount.h | 75 ++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_rtalloc.c | 3 ++ 8 files changed, 147 insertions(+), 2 deletions(-)
fs/xfs/libxfs/xfs_format.h +1 -1
@@ -412,7 +412,7 @@ static inline bool xfs_sb_version_hasprojid32bit(struct xfs_sb *sbp) (sbp->sb_features2 & XFS_SB_VERSION2_PROJID32BIT)); } -static inline void xfs_sb_version_addprojid32bit (struct xfs_sb *sbp) +static inline void xfs_sb_version_addprojid32 (struct xfs_sb *sbp) { sbp->sb_versionnum |=XFS_SB_VERSION_MOREBITSBIT ; sbp->sb_features2 |=XFS_SB_VERSION2_PROJID32BIT ;
fs/xfs/libxfs/xfs_sb.c +64 -0
70 lines not on this page · raw message
fs/xfs/libxfs/xfs_sb.h +1 -0
@@ -29,6 +29,7 @@ extern void xfs_sb_mount_common(struct xfs_mount *mp, struct xfs_sb *sbp);extern void xfs_sb_from_disk (struct xfs_sb *to,struct xfs_dsb *from);extern void xfs_sb_to_disk (struct xfs_dsb *to,struct xfs_sb *from);extern void xfs_sb_quota_from_disk (struct xfs_sb *sbp); +extern uint64_t xfs_sb_version_to_features (struct xfs_sb *sbp);extern int xfs_update_secondary_sbs (struct xfs_mount *mp);
fs/xfs/xfs_dquot.c +1 -1
@@ -1218,7 +1218,7 @@ xfs_qm_dqflush_check(/* bigtime flag should never be set on root dquots */ if (dqp->q_type &XFS_DQTYPE_BIGTIME ) { -if (!xfs_sb_version_hasbigtime (&dqp->q_mount->m_sb)) +if (!xfs_has_bigtime (dqp->q_mount))return __this_address;if (dqp->q_id ==0 )return __this_address;
fs/xfs/xfs_log_recover.c +1 -0
@@ -3325,6 +3325,7 @@ xlog_do_recover(xfs_buf_relse (bp);/* re-initialise in-core superblock and geometry structures */ + mp->m_features |=xfs_sb_version_to_features (sbp);xfs_reinit_percpu_counters (mp); error =xfs_initialize_perag (mp, sbp->sb_agcount, &mp->m_maxagi);if (error) {
fs/xfs/xfs_mount.c +1 -0
@@ -345,6 +345,7 @@ xfs_readsb( goto reread; } + mp->m_features |=xfs_sb_version_to_features (sbp);xfs_reinit_percpu_counters (mp);/* no need to be quiet anymore, so reset the buf ops */
fs/xfs/xfs_mount.h +75 -0
87 lines not on this page · raw message
fs/xfs/xfs_rtalloc.c +3 -0
@@ -1101,6 +1101,9 @@ xfs_growfs_rt( error =xfs_trans_commit (tp);if (error)break ; + +/* Ensure the mount RT feature flag is now set. */ + mp->m_features |=XFS_FEAT_REALTIME ; }if (error) goto out_free;
Signature · 1 line
2.53.0
Sasha Levin
maintainerPATCH 2/2 xfs: fix unreachable BIGTIME check in dquot flush validation
From: Alexey Nepomnyashih <[email protected]>
[ Upstream commit 03866d130ed33ab68cc7faaf4bf2c4abef96d42e ]
The dqp->q_id == 0 check inside the XFS_DQTYPE_BIGTIME block is unreachable because root dquots return successfully earlier. Reject root dquots with XFS_DQTYPE_BIGTIME before that early return, preserving the intended validation and removing the unreachable condition.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
--- fs/xfs/xfs_dquot.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
fs/xfs/xfs_dquot.c +8 -8
@@ -1201,6 +1201,14 @@ xfs_qm_dqflush_check( type != XFS_DQTYPE_PROJ)return __this_address; +/* bigtime flag should never be set on root dquots */ +if (dqp->q_type &XFS_DQTYPE_BIGTIME ) { +if (!xfs_has_bigtime (dqp->q_mount)) +return __this_address; +if (dqp->q_id ==0 ) +return __this_address; + } +if (dqp->q_id ==0 )return NULL ;
@@ -1216,14 +1224,6 @@ xfs_qm_dqflush_check( !dqp->q_rtb.timer)return __this_address; -/* bigtime flag should never be set on root dquots */ -if (dqp->q_type &XFS_DQTYPE_BIGTIME ) { -if (!xfs_has_bigtime (dqp->q_mount)) -return __this_address; -if (dqp->q_id ==0 ) -return __this_address; - } -return NULL ; }
Signature · 1 line
2.53.0