* otherwise be livelocked...
                 */
                journal_lock_updates(EXT3_SB(sb)->s_journal);
 -              journal_flush(EXT3_SB(sb)->s_journal);
 +              err = journal_flush(EXT3_SB(sb)->s_journal);
                journal_unlock_updates(EXT3_SB(sb)->s_journal);
 +              if (err) {
 +                      path_put(&nd.path);
 +                      return err;
 +              }
        }
  
-       err = vfs_quota_on_path(sb, type, format_id, &nd.path);
-       path_put(&nd.path);
+       err = vfs_quota_on_path(sb, type, format_id, &path);
+       path_put(&path);
        return err;
  }
  
 
        if (len == 0) {
                set_bit(CACHE_NEGATIVE, &key.h.flags);
                ek = svc_expkey_update(&key, ek);
 -              if (ek)
 -                      cache_put(&ek->h, &svc_expkey_cache);
 -              else err = -ENOMEM;
 +              if (!ek)
 +                      err = -ENOMEM;
        } else {
-               struct nameidata nd;
-               err = path_lookup(buf, 0, &nd);
+               err = kern_path(buf, 0, &key.ek_path);
                if (err)
                        goto out;
  
                dprintk("Found the path %s\n", buf);
-               key.ek_path = nd.path;
  
                ek = svc_expkey_update(&key, ek);
 -              if (ek)
 -                      cache_put(&ek->h, &svc_expkey_cache);
 -              else
 +              if (!ek)
                        err = -ENOMEM;
-               path_put(&nd.path);
+               path_put(&key.ek_path);
        }
        cache_flush();
   out: