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. > 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; > /* NACK on this one. 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 can 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. Cheers, -- Jeff Layton <jlayton@xxxxxxxxxx>