On Tue, 2023-06-20 at 14:55 +0500, Stas Sergeev wrote:
Currently F_OFD_GETLK sets the pid of the lock owner to -1.NACK on this one.
Remove such behavior to allow getting the proper owner's pid.
This may be helpful when you want to send some message (like SIGKILL)
to the offending locker.
Signed-off-by: Stas Sergeev <stsp2@xxxxxxxxx>
CC: Jeff Layton <jlayton@xxxxxxxxxx>
CC: Chuck Lever <chuck.lever@xxxxxxxxxx>
CC: Alexander Viro <viro@xxxxxxxxxxxxxxxxxx>
CC: Christian Brauner <brauner@xxxxxxxxxx>
CC: linux-fsdevel@xxxxxxxxxxxxxxx
CC: linux-kernel@xxxxxxxxxxxxxxx
---
fs/locks.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/fs/locks.c b/fs/locks.c
index 210766007e63..ee265e166542 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -2158,8 +2158,6 @@ static pid_t locks_translate_pid(struct file_lock *fl, struct pid_namespace *ns)
pid_t vnr;
struct pid *pid;
- if (IS_OFDLCK(fl))
- return -1;
if (IS_REMOTELCK(fl))
return fl->fl_pid;
/*
OFD locks are not owned by processes. They are owned by the file
description (hence the name). Because of this, returning a pid here is
wrong.
This precedent comes from BSD, where flock() and POSIX locks canOK if you insist I can drop this one and
conflict. BSD returns -1 for the pid if you call F_GETLK on a file
locked with flock(). Since OFD locks have similar ownership semantics to
flock() locks, we use the same convention here.