]> git.michaelhowe.org Git - packages/o/openafs.git/commit
STABLE14-viced-fix-check-rights-race-20060213
authorJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 13 Feb 2006 17:10:15 +0000 (17:10 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 13 Feb 2006 17:10:15 +0000 (17:10 +0000)
commit4e55e30f5b2c149b350b6d6875793adf722fdc21
tree54d78e4f882fc998c026541cde60dda3aef985dc
parent2f310b0dfff79739e6acecf8ac51a27db3b4fc2a
STABLE14-viced-fix-check-rights-race-20060213

FIXES 25869

acl_CheckRights() was generating core dumps because the client's prlist
was being invalidated by h_TossStuff_r() as part of freeing the associated
host.  This patch fixes the problem in probably redundant ways.
A missing hold on the host is now obtained.  refCounts on the client
are now preserved as part of GetClient()/PutClient().  Read/Write locks
are now obtained on the client when accessing/manipulating the prlist.

This patch adds the client parameter to GetVolumePackage() and
PutVolumePackage() and adds the new function PutClient().

This patch removes the need for the client X had conn Y stolen by X messages.
This is replaced by "deleted client X already had conn Y stolen by X.  If
we see this there is definitely a logic problem as the client should not
be deleted at this point.  We a no longer allowing the race condition that
would have resulted in the original message.

In addition, this patch fixes a problem with UAEs caused by the
inappropriate translation of VICE error into UAEs when there is overlap
between VICE error values and those in sys/errno.h.

(cherry picked from commit 6c7a2901b00ae2f7df0bdff23b19fdd3b7f35156)
src/viced/afsfileprocs.c
src/viced/host.c
src/viced/host.h