Re: [PATCH] Make POSIX locks compatible with the NPTL thread model

From: Trond Myklebust
Date: Wed Jun 23 2004 - 18:03:21 EST


På on , 23/06/2004 klokka 17:41, skreiv Chris Wright:

> Yes, it's a BUG in locks_remove_flock. The first patch changes
> locks_remove_posix, so posix lock is missed on filp_close and the BUG
> is hit. I believe the problem is that locks can have same fl_owner,
> w/out having same tgid.

Yep. I agree with that analysis. Blech...

That just goes to show how broken the posix locks "logic" is when
applied to CLONE_FILES: POSIX locks are not supposed to be inherited by
child processes, and so the current VFS code checks both lock->fl_pid &
lock->fl_owner in tests such as posix_locks_conflict(). Currently (as I
said) on filp_close() we remove all locks with the same lock->fl_owner
without checking the pid.

However upon the last fput(), then in practice locks_remove_flock()
expects all locks with the same *file descriptor* to have been cleaned
up.

So what do we do? There is no way that we can keep the current rules, as
they provide no consistent way to inform the underlying NFS or CIFS
filesystem when to test for lock->fl_pid, when to test for
lock->fl_owner, and when to test for lock->fl_file.

Cheers,
Trond
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/