We were failing to hold the afs_xuser lock when we entered our
unixuser traversal for the first time (when the given position is 0).
This means we can release the lock without acquiring it, causing all
kinds of weird behavior.
Just always grab afs_xuser on entry. We could possibly do some tricks
to avoid grabbing this lock until after we've printed the column
headers, but it does not seem worth it.
Reviewed-on: http://gerrit.openafs.org/7916
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
(cherry picked from commit
351d3b8a19314027b30cdc499ef48c95ba7903b6)
Change-Id: I75e137e588fcbf973a5d564db3a077c4ec4f50e1
Reviewed-on: http://gerrit.openafs.org/8547
Reviewed-by: Ken Dreyer <ktdreyer@ktdreyer.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
Tested-by: Stephan Wiesand <stephan.wiesand@desy.de>
Reviewed-by: Paul Smeddle <paul.smeddle@gmail.com>
loff_t n = 0;
afs_int32 i;
- if (!*pos)
- return (void *)(1);
-
AFS_GLOCK();
ObtainReadLock(&afs_xuser);
+ if (!*pos) {
+ ret = (void *)(1);
+ goto done;
+ }
+
ret = NULL;
for (i = 0; i < NUSERS; i++) {