From: Andrew Deason Date: Tue, 31 Jul 2012 18:40:41 +0000 (-0400) Subject: LINUX: Always hold afs_xuser for unixuser read X-Git-Tag: upstream/1.8.0_pre1^2~2123 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=351d3b8a19314027b30cdc499ef48c95ba7903b6;p=packages%2Fo%2Fopenafs.git LINUX: Always hold afs_xuser for unixuser read 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. Change-Id: I68782098b5af2feb56887bc577511da2983d4f21 Reviewed-on: http://gerrit.openafs.org/7916 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- diff --git a/src/afs/LINUX/osi_proc.c b/src/afs/LINUX/osi_proc.c index bb1529bf1..b5219fa9c 100644 --- a/src/afs/LINUX/osi_proc.c +++ b/src/afs/LINUX/osi_proc.c @@ -138,12 +138,14 @@ uu_start(struct seq_file *m, loff_t *pos) 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++) {