Linux: don't oops on writeback if vcache has no stashed credentials
authorMarc Dionne <marc.c.dionne@gmail.com>
Tue, 5 Jan 2010 00:37:40 +0000 (19:37 -0500)
committerDerrick Brashear <shadow|account-1000005@unknown>
Tue, 5 Jan 2010 18:19:01 +0000 (10:19 -0800)
When doing writeback, use current credentials if we can't find
stashed credentials in the vcache entry.
This is normally stashed in afs_open, so it's not clear how we
get to that point, but that's not a reason to trigger an oops.

Change-Id: I60937e3f9e360e68ea84205570c05cabb47ef08e
Reviewed-on: http://gerrit.openafs.org/1063
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>

src/afs/LINUX/osi_vnodeops.c

index 83a5ab0..9f35ca7 100644 (file)
@@ -2171,7 +2171,10 @@ afs_linux_writepage(struct page *pp)
     /* Grab the creds structure currently held in the vnode, and
      * get a reference to it, in case it goes away ... */
     credp = vcp->cred;
-    crhold(credp);
+    if (credp)
+       crhold(credp);
+    else
+       credp = crref();
     ReleaseWriteLock(&vcp->lock);
     AFS_GUNLOCK();