if (!rec_dir_init)
                return 0;
  
 -      nfs4_save_user(&uid, &gid);
 +      status = nfs4_save_creds(&original_cred);
 +      if (status < 0)
 +              return status;
+       INIT_LIST_HEAD(dentries);
  
 -      filp = dentry_open(dget(dir), mntget(rec_dir.mnt), O_RDONLY);
 +      filp = dentry_open(dget(dir), mntget(rec_dir.mnt), O_RDONLY,
 +                         current_cred());
        status = PTR_ERR(filp);
        if (IS_ERR(filp))
                goto out;
 
        return cap_vm_enough_memory(current->mm, pages);
  }
  
- static inline int security_vm_enough_memory_kern(long pages)
+ static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages)
  {
-       return cap_vm_enough_memory(current->mm, pages);
+       WARN_ON(mm == NULL);
+       return cap_vm_enough_memory(mm, pages);
  }
  
- static inline int security_vm_enough_memory_mm(struct mm_struct *mm, long pages)
+ static inline int security_vm_enough_memory_kern(long pages)
  {
-       return cap_vm_enough_memory(mm, pages);
+       /* If current->mm is a kernel thread then we will pass NULL,
+          for this specific case that is fine */
+       return cap_vm_enough_memory(current->mm, pages);
  }
  
 -static inline int security_bprm_alloc(struct linux_binprm *bprm)
 -{
 -      return 0;
 -}
 -
 -static inline void security_bprm_free(struct linux_binprm *bprm)
 -{ }
 -
 -static inline void security_bprm_apply_creds(struct linux_binprm *bprm, int unsafe)
 +static inline int security_bprm_set_creds(struct linux_binprm *bprm)
  {
 -      cap_bprm_apply_creds(bprm, unsafe);
 +      return cap_bprm_set_creds(bprm);
  }
  
 -static inline void security_bprm_post_apply_creds(struct linux_binprm *bprm)
 +static inline int security_bprm_check(struct linux_binprm *bprm)
  {
 -      return;
 +      return 0;
  }
  
 -static inline int security_bprm_set(struct linux_binprm *bprm)
 +static inline void security_bprm_committing_creds(struct linux_binprm *bprm)
  {
 -      return cap_bprm_set_security(bprm);
  }
  
 -static inline int security_bprm_check(struct linux_binprm *bprm)
 +static inline void security_bprm_committed_creds(struct linux_binprm *bprm)
  {
 -      return 0;
  }
  
  static inline int security_bprm_secureexec(struct linux_binprm *bprm)