Linux: Use current_creds() if stashed creds fail
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Tue, 9 Feb 2010 19:53:40 +0000 (19:53 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 11 Feb 2010 02:40:03 +0000 (18:40 -0800)
If we can't use our stashed credentials (because SELinux hates us,
most likely), then fall back to trying the processes current credentials
instead of just oopsing.

Change-Id: Ib3676ff66f8400e86cccb97fb207a5f094ceb4ad
Reviewed-on: http://gerrit.openafs.org/1283
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/afs/LINUX/osi_file.c

index 9b9aa37..f5e21d5 100644 (file)
@@ -56,6 +56,8 @@ afs_linux_raw_open(afs_dcache_id_t *ainode)
 #if defined(STRUCT_TASK_HAS_CRED)
     /* Use stashed credentials - prevent selinux/apparmor problems  */
     filp = dentry_open(dp, mntget(afs_cacheMnt), O_RDWR, cache_creds);
+    if (IS_ERR(filp))
+       filp = dentry_open(dp, mntget(afs_cacheMnt), O_RDWR, current_cred());
 #else
     filp = dentry_open(dp, mntget(afs_cacheMnt), O_RDWR);
 #endif