summaryrefslogtreecommitdiff
path: root/fs/kernfs/file.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2024-04-22 14:35:22 +1000
committerDave Airlie <airlied@redhat.com>2024-04-22 14:35:52 +1000
commit0208ca55aa9c9b997da1f5bc45c4e98916323f08 (patch)
treee3130b2116f7738ac7cd79ad71698f545bb7db69 /fs/kernfs/file.c
parent2871ec40994912ce4f2e2d5072a428eb84c77d3c (diff)
parented30a4a51bb196781c8058073ea720133a65596f (diff)
Backmerge tag 'v6.9-rc5' into drm-next
Linux 6.9-rc5 I've had a persistent msm failure on clang, and the fix is in fixes so just pull it back to fix that. Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'fs/kernfs/file.c')
-rw-r--r--fs/kernfs/file.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
index e9df2f87072c..8502ef68459b 100644
--- a/fs/kernfs/file.c
+++ b/fs/kernfs/file.c
@@ -636,11 +636,18 @@ static int kernfs_fop_open(struct inode *inode, struct file *file)
* each file a separate locking class. Let's differentiate on
* whether the file has mmap or not for now.
*
- * Both paths of the branch look the same. They're supposed to
+ * For similar reasons, writable and readonly files are given different
+ * lockdep key, because the writable file /sys/power/resume may call vfs
+ * lookup helpers for arbitrary paths and readonly files can be read by
+ * overlayfs from vfs helpers when sysfs is a lower layer of overalyfs.
+ *
+ * All three cases look the same. They're supposed to
* look that way and give @of->mutex different static lockdep keys.
*/
if (has_mmap)
mutex_init(&of->mutex);
+ else if (file->f_mode & FMODE_WRITE)
+ mutex_init(&of->mutex);
else
mutex_init(&of->mutex);