Skip to content

Commit d209f6e

Browse files
jtlaytonbrauner
authored andcommitted
filelock: add new locks_wake_up_waiter() helper
Currently the function that does this takes a struct file_lock, but __locks_wake_up_blocks() deals with both locks and leases. Currently this works because both file_lock and file_lease have the file_lock_core at the beginning of the struct, but it's fragile to rely on that. Add a new locks_wake_up_waiter() function and call that from __locks_wake_up_blocks(). Signed-off-by: Jeff Layton <jlayton@kernel.org> Link: https://lore.kernel.org/20250602-filelock-6-16-v1-1-7da5b2c930fd@kernel.org Signed-off-by: Christian Brauner <brauner@kernel.org>
1 parent dd765ba commit d209f6e

2 files changed

Lines changed: 7 additions & 2 deletions

File tree

fs/locks.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ static void __locks_wake_up_blocks(struct file_lock_core *blocker)
712712
fl->fl_lmops && fl->fl_lmops->lm_notify)
713713
fl->fl_lmops->lm_notify(fl);
714714
else
715-
locks_wake_up(fl);
715+
locks_wake_up_waiter(waiter);
716716

717717
/*
718718
* The setting of flc_blocker to NULL marks the "done"

include/linux/filelock.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,14 @@ static inline bool lock_is_write(struct file_lock *fl)
175175
return fl->c.flc_type == F_WRLCK;
176176
}
177177

178+
static inline void locks_wake_up_waiter(struct file_lock_core *flc)
179+
{
180+
wake_up(&flc->flc_wait);
181+
}
182+
178183
static inline void locks_wake_up(struct file_lock *fl)
179184
{
180-
wake_up(&fl->c.flc_wait);
185+
locks_wake_up_waiter(&fl->c);
181186
}
182187

183188
static inline bool locks_can_async_lock(const struct file_operations *fops)

0 commit comments

Comments
 (0)