On Fri, 2020-02-14 at 12:35 +0800, Murphy Zhou wrote: > Now child can't unlock the same file that has been locked by > parent. Fix this by not skipping unlock if requesting from > different process. > > Patch tested by LTP and xfstests using samba server. > > Signed-off-by: Murphy Zhou <jencce.kernel@xxxxxxxxx> > --- > fs/cifs/smb2file.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/fs/cifs/smb2file.c b/fs/cifs/smb2file.c > index afe1f03aabe3..b5bca0e13d51 100644 > --- a/fs/cifs/smb2file.c > +++ b/fs/cifs/smb2file.c > @@ -151,8 +151,6 @@ smb2_unlock_range(struct cifsFileInfo *cfile, struct file_lock *flock, > (flock->fl_start + length) < > (li->offset + li->length)) > continue; > - if (current->tgid != li->pid) > - continue; > if (cinode->can_cache_brlcks) { > /* > * We can cache brlock requests - simply remove a lock I'm not as familiar with this code as I once was, but... >From fork(2) manpage: * The child does not inherit process-associated record locks from its parent (fcntl(2)). (On the other hand, it does inherit fcntl(2) open file description locks and flock(2) locks from its parent.) It looks like cifs_setlk calls mand_unlock_range, and that gets called from both fcntl and flock codepaths. So, I'm not sure about just removing this. It seems like the pid check is probably correct for traditional posix locks, but probably not for OFD and flock locks? What ensures that completely unrelated tasks can't unlock your locks? -- Jeff Layton <jlayton@xxxxxxxxxx>