From: Andrew Deason Date: Fri, 8 Feb 2013 23:24:28 +0000 (-0600) Subject: afs: Avoid SetupVolume panic X-Git-Tag: upstream/1.6.6_pre2^2~141 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=bd52d1a2c3cb50aba533adc44a99e9c20db27706;p=packages%2Fo%2Fopenafs.git afs: Avoid SetupVolume panic Currently SetupVolume panics if it cannot successfully read a volumeinfo entry from disk. Try to return an error instead, so we don't panic the machine. Reviewed-on: http://gerrit.openafs.org/9094 Reviewed-by: Chas Williams - CONTRACTOR Tested-by: BuildBot Reviewed-by: Derrick Brashear (cherry picked from commit 6f7ae535bbac2a5376358801b7f2c9e072f2d141) Change-Id: Ib8ea06192bfcd6c2111444db325abc4a90190bbc Reviewed-on: http://gerrit.openafs.org/9131 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Stephan Wiesand --- diff --git a/src/afs/afs_volume.c b/src/afs/afs_volume.c index 2d9babbd2..e3b31c7fe 100644 --- a/src/afs/afs_volume.c +++ b/src/afs/afs_volume.c @@ -594,9 +594,18 @@ afs_SetupVolume(afs_int32 volid, char *aname, void *ve, struct cell *tcell, err = afs_osi_Read(tfile, sizeof(struct fvolume) * j, &staticFVolume, sizeof(struct fvolume)); - if (err != sizeof(struct fvolume)) - osi_Panic("read volumeinfo2"); osi_UFSClose(tfile); + if (err != sizeof(struct fvolume)) { + afs_warn("afs_SetupVolume: error %d reading volumeinfo\n", + (int)err); + /* put tv back on the free list; the data in it is not valid */ + tv->next = afs_freeVolList; + afs_freeVolList = tv; + /* staticFVolume contents are not valid */ + afs_FVIndex = -1; + ReleaseWriteLock(&afs_xvolume); + return NULL; + } afs_FVIndex = j; } tf = &staticFVolume;