LINUX/: ifdef for GFP_NOFS conditionals
[openafs.git] / src / afs / LINUX / osi_cred.c
index 69b2614..3a0988b 100644 (file)
@@ -34,9 +34,6 @@ crget(void)
 {
     cred_t *tmp;
     
-#if !defined(GFP_NOFS)
-#define GFP_NOFS GFP_KERNEL
-#endif
     tmp = kmalloc(sizeof(cred_t), GFP_NOFS);
     memset(tmp, 0, sizeof(cred_t));
     if (!tmp)
@@ -45,7 +42,7 @@ crget(void)
 #if defined(STRUCT_TASK_HAS_CRED)
     get_cred(tmp);
 #else
-    tmp->cr_ref = 1;
+    atomic_set(&tmp->cr_ref, 1);
 #endif
     return tmp;
 }
@@ -56,12 +53,10 @@ crfree(cred_t * cr)
 #if defined(STRUCT_TASK_HAS_CRED)
     put_cred(cr);
 #else
-    if (cr->cr_ref > 1) {
-       cr->cr_ref--;
-       return;
+    if (atomic_dec_and_test(&cr->cr_ref)) {
+        put_group_info(afs_cr_group_info(cr));
+        kfree(cr);
     }
-    put_group_info(afs_cr_group_info(cr));
-    kfree(cr);
 #endif
 }