[Bug 191593] [fcntl] F_SETLK returns EDEADLK when it shouldn't - only F_SETLKW and waiting should return EDEADLK

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Jul 4 22:41:20 UTC 2014


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191593

Jilles Tjoelker <jilles at FreeBSD.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jilles at FreeBSD.org
            Summary|[fcntl] F_SETLK returns     |[fcntl] F_SETLK returns
                   |EDEADLK when it shouldn't - |EDEADLK when it shouldn't -
                   |only F_SETFLW and waiting   |only F_SETLKW and waiting
                   |should return EDEADLK       |should return EDEADLK

--- Comment #3 from Jilles Tjoelker <jilles at FreeBSD.org> ---
You are right that fcntl(F_SETLK) should not fail with [EDEADLK]; this error is
only defined for fcntl(F_SETLKW). A non-blocking locking attempt cannot
deadlock.

The proposed patch looks wrong, though. The above if ((lock->lf_flags & F_WAIT)
== 0 && lock->lf_async_task == NULL) should already catch this case. Perhaps
lf_async_task is set incorrectly?

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list