struct ovl_cache_entry *p;
        struct dentry *dentry;
        const struct cred *old_cred;
 -      struct cred *override_cred;
 -
 -      override_cred = prepare_creds();
 -      if (!override_cred)
 -              return -ENOMEM;
  
 -      /*
 -       * CAP_DAC_OVERRIDE for lookup
 -       */
 -      cap_raise(override_cred->cap_effective, CAP_DAC_OVERRIDE);
 -      old_cred = override_creds(override_cred);
 +      old_cred = ovl_override_creds(rdd->dentry->d_sb);
  
-       inode_lock(dir->d_inode);
-       err = 0;
-       // XXX: err = mutex_lock_killable(&dir->d_inode->i_mutex);
+       err = down_write_killable(&dir->d_inode->i_rwsem);
        if (!err) {
                while (rdd->first_maybe_whiteout) {
                        p = rdd->first_maybe_whiteout;