diff options
author | kib <kib@FreeBSD.org> | 2009-05-24 12:39:38 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2009-05-24 12:39:38 +0000 |
commit | 862b0fc4e34c231b61d1ab0c8f9abdc98f402ef1 (patch) | |
tree | c07ceecfdfbb97e8a579fcf5c97efe22316af3c0 /sys/compat | |
parent | c54d127bf0b5509d9233583ca4d8a8dc0441c38f (diff) | |
download | FreeBSD-src-862b0fc4e34c231b61d1ab0c8f9abdc98f402ef1.zip FreeBSD-src-862b0fc4e34c231b61d1ab0c8f9abdc98f402ef1.tar.gz |
The advisory lock may be activated or activated and removed during the
sleep waiting for conditions when the lock may be granted.
To prevent lf_setlock() from accessing possibly freed memory, add reference
counting to the struct lockf_entry. Bump refcount around the sleep.
Make lf_free_lock() return non-zero when structure was freed, and use
this after the sleep to return EINTR to the caller. The error code might
need a clarification, but we cannot return success to usermode, since
the lock is not owned anymore.
Reviewed by: dfr
Tested by: pho
MFC after: 1 month
Diffstat (limited to 'sys/compat')
0 files changed, 0 insertions, 0 deletions