Also, please make sure that resulting patch works against Windows file share since the locking semantics may be different there. Depending on a kind of lease we have on a file, locks may be cached or not. We probably don't want to have different behavior for cached and non-cached locks. Especially given the fact that a lease may be broken in the middle of app execution and the different behavior will be applied immediately. -- Best regards, Pavel Shilovsky пт, 14 февр. 2020 г. в 06:30, Murphy Zhou <jencce.kernel@xxxxxxxxx>: > > On Fri, Feb 14, 2020 at 07:26:46AM -0500, Jeff Layton wrote: > > 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? > > You are right Jeff. Just removing this is not right. We need to handle > at least 3 types of locks: posix, OFD and flock. > > Thanks very much for reviewing! I'll try to sort this out. > > -- > > Jeff Layton <jlayton@xxxxxxxxxx> > >