[Bug 266885] [FUSEFS] fcntl(F_GETLK) overwrites flock->l_pid even if unlocked
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 266885] [FUSEFS] fcntl(F_GETLK) overwrites flock->l_pid even if unlocked"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 266885] [FUSEFS] fcntl(F_GETLK) overwrites flock->l_pid even if unlocked"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 266885] [FUSEFS] fcntl(F_GETLK) overwrites flock->l_pid even if unlocked"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 266885] [FUSEFS] fcntl(F_GETLK) overwrites flock->l_pid even if unlocked"
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 266885] [FUSEFS] fcntl(F_GETLK) overwrites flock->l_pid even if unlocked"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 07 Oct 2022 10:18:13 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=266885
Bug ID: 266885
Summary: [FUSEFS] fcntl(F_GETLK) overwrites flock->l_pid even
if unlocked
Product: Base System
Version: CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Some People
Priority: ---
Component: kern
Assignee: bugs@FreeBSD.org
Reporter: jmillikin@gmail.com
The documentation for fcntl(F_GETLK) says:
If no lock is found that would prevent this lock from being created,
the structure is left unchanged by this system call except for
the lock type which is set to F_UNLCK.
However, the code is currently overwriting the flock structure's `l_pid` field:
/* sys/fs/fuse/fuse_vnops.c :: fuse_vnop_advlock() */
if (err == 0 && op == FUSE_GETLK) {
flo = fdi.answ;
fl->l_type = flo->lk.type;
fl->l_pid = flo->lk.pid; /* <- here */
if (flo->lk.type != F_UNLCK) {
fl->l_start = flo->lk.start;
I think that assignment should be moved down a line, into the `!= F_UNLCK`
branch.
--
You are receiving this mail because:
You are the assignee for the bug.