vos: volume lock not released on convertROtoRW error
authorMark Vitale <mvitale@sinenomine.net>
Tue, 8 May 2012 19:03:46 +0000 (15:03 -0400)
committerDerrick Brashear <shadow@dementix.org>
Mon, 21 May 2012 17:08:48 +0000 (10:08 -0700)
If an error occurs during convertROtoRW, the volume lock may
not be released.

Change-Id: Ic03af00676de836cade4e39a743b234a0dc9b6cf
Reviewed-on: http://gerrit.openafs.org/7389
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Alistair Ferguson <alistair.ferguson@mac.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>

src/volser/vos.c

index fbd32a7..fb8a638 100644 (file)
@@ -5626,7 +5626,7 @@ ConvertRO(struct cmd_syndesc *as, void *arock)
                "Converting RO volume %lu to RW volume failed with code %d\n",
                (unsigned long)volid, code);
        PrintError("convertROtoRW ", code);
-       return -1;
+       goto error_exit;
     }
     entry.serverFlags[roindex] = ITSRWVOL;
     entry.flags |= RW_EXISTS;
@@ -5661,6 +5661,7 @@ ConvertRO(struct cmd_syndesc *as, void *arock)
                code);
     }
 
+  error_exit:
     vcode = UV_LockRelease(entry.volumeId[RWVOL]);
     if (vcode) {
        fprintf(STDERR,