mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-04 16:15:11 +00:00
locks: report l_pid as -1 for FL_FILE_PVT locks
FL_FILE_PVT locks are no longer tied to a particular pid, and are instead inheritable by child processes. Report a l_pid of '-1' for these sorts of locks since the pid is somewhat meaningless for them. This precedent comes from FreeBSD. There, POSIX and flock() locks can conflict with one another. If fcntl(F_GETLK, ...) returns a lock set with flock() then the l_pid member cannot be a process ID because the lock is not held by a process as such. Acked-by: J. Bruce Fields <bfields@fieldses.org> Signed-off-by: Jeff Layton <jlayton@redhat.com>
This commit is contained in:
parent
c918d42a27
commit
3fd80cddc6
1 changed files with 2 additions and 2 deletions
|
@ -1864,7 +1864,7 @@ EXPORT_SYMBOL_GPL(vfs_test_lock);
|
||||||
|
|
||||||
static int posix_lock_to_flock(struct flock *flock, struct file_lock *fl)
|
static int posix_lock_to_flock(struct flock *flock, struct file_lock *fl)
|
||||||
{
|
{
|
||||||
flock->l_pid = fl->fl_pid;
|
flock->l_pid = IS_FILE_PVT(fl) ? -1 : fl->fl_pid;
|
||||||
#if BITS_PER_LONG == 32
|
#if BITS_PER_LONG == 32
|
||||||
/*
|
/*
|
||||||
* Make sure we can represent the posix lock via
|
* Make sure we can represent the posix lock via
|
||||||
|
@ -1886,7 +1886,7 @@ static int posix_lock_to_flock(struct flock *flock, struct file_lock *fl)
|
||||||
#if BITS_PER_LONG == 32
|
#if BITS_PER_LONG == 32
|
||||||
static void posix_lock_to_flock64(struct flock64 *flock, struct file_lock *fl)
|
static void posix_lock_to_flock64(struct flock64 *flock, struct file_lock *fl)
|
||||||
{
|
{
|
||||||
flock->l_pid = fl->fl_pid;
|
flock->l_pid = IS_FILE_PVT(fl) ? -1 : fl->fl_pid;
|
||||||
flock->l_start = fl->fl_start;
|
flock->l_start = fl->fl_start;
|
||||||
flock->l_len = fl->fl_end == OFFSET_MAX ? 0 :
|
flock->l_len = fl->fl_end == OFFSET_MAX ? 0 :
|
||||||
fl->fl_end - fl->fl_start + 1;
|
fl->fl_end - fl->fl_start + 1;
|
||||||
|
|
Loading…
Reference in a new issue