]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
dax: skip read lock assertion for read-only filesystems
authorYuezhang Mo <Yuezhang.Mo@sony.com>
Tue, 30 Sep 2025 05:42:57 +0000 (13:42 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Oct 2025 13:01:18 +0000 (14:01 +0100)
[ Upstream commit 154d1e7ad9e5ce4b2aaefd3862b3dba545ad978d ]

The commit 168316db3583("dax: assert that i_rwsem is held
exclusive for writes") added lock assertions to ensure proper
locking in DAX operations. However, these assertions trigger
false-positive lockdep warnings since read lock is unnecessary
on read-only filesystems(e.g., erofs).

This patch skips the read lock assertion for read-only filesystems,
eliminating the spurious warnings while maintaining the integrity
checks for writable filesystems.

Fixes: 168316db3583 ("dax: assert that i_rwsem is held exclusive for writes")
Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: Friendy Su <friendy.su@sony.com>
Reviewed-by: Daniel Palmer <daniel.palmer@sony.com>
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/dax.c

index 6619a71b57bbe648ebfc3712004b709e2352d505..a6f481f1517ddb6c59bc4060f0c4d24394179b61 100644 (file)
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -1222,7 +1222,7 @@ dax_iomap_rw(struct kiocb *iocb, struct iov_iter *iter,
        if (iov_iter_rw(iter) == WRITE) {
                lockdep_assert_held_write(&iomi.inode->i_rwsem);
                iomi.flags |= IOMAP_WRITE;
-       } else {
+       } else if (!sb_rdonly(iomi.inode->i_sb)) {
                lockdep_assert_held(&iomi.inode->i_rwsem);
        }