From: Christoph Hellwig <hch@lst.de>
To: akpm@osdl.org
Cc: Ram Pai <linuxram@us.ibm.com>, Jeff Mahoney <jeffm@suse.com>,
linux-fsdevel@vger.kernel.org
Subject: [PATCH] sanitize lookup_hash prototype
Date: Sat, 29 Oct 2005 01:40:30 +0200 [thread overview]
Message-ID: <20051028234030.GA13779@lst.de> (raw)
->permission and ->lookup have a struct nameidata * argument these
days to pass down lookup intents. Unfortunately some callers of
lookup_hash don't actually pass this one down. For lookup_one_len()
we don't have a struct nameidata to pass down, but as this function
is a library function only used by filesystem code this is an acceptable
limitation. All other callers should pass down the nameidata, so this
patch changes the lookup_hash interface to only take a struct nameidata
argument and derives the other two arguments to __lookup_hash from it.
All callers already have the nameidata argument available so this is not
a problem.
At the same time I'd like to deprecate the lookup_hash interface as
there are better exported interfaces for filesystem usage. Before it
can actually be removed I need to fix up rpc_pipefs.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Index: linux-2.6/fs/namei.c
===================================================================
--- linux-2.6.orig/fs/namei.c 2005-10-28 19:49:55.000000000 +0200
+++ linux-2.6/fs/namei.c 2005-10-28 20:01:10.000000000 +0200
@@ -1173,9 +1173,9 @@
return dentry;
}
-struct dentry * lookup_hash(struct qstr *name, struct dentry * base)
+struct dentry * lookup_hash(struct nameidata *nd)
{
- return __lookup_hash(name, base, NULL);
+ return __lookup_hash(&nd->last, nd->dentry, nd);
}
/* SMP-safe */
@@ -1199,7 +1199,7 @@
}
this.hash = end_name_hash(hash);
- return lookup_hash(&this, base);
+ return __lookup_hash(&this, base, NULL);
access:
return ERR_PTR(-EACCES);
}
@@ -1538,7 +1538,7 @@
dir = nd->dentry;
nd->flags &= ~LOOKUP_PARENT;
down(&dir->d_inode->i_sem);
- path.dentry = __lookup_hash(&nd->last, nd->dentry, nd);
+ path.dentry = lookup_hash(nd);
path.mnt = nd->mnt;
do_last:
@@ -1640,7 +1640,7 @@
}
dir = nd->dentry;
down(&dir->d_inode->i_sem);
- path.dentry = __lookup_hash(&nd->last, nd->dentry, nd);
+ path.dentry = lookup_hash(nd);
path.mnt = nd->mnt;
__putname(nd->last.name);
goto do_last;
@@ -1672,7 +1672,7 @@
/*
* Do the final lookup.
*/
- dentry = lookup_hash(&nd->last, nd->dentry);
+ dentry = lookup_hash(nd);
if (IS_ERR(dentry))
goto fail;
@@ -1907,7 +1907,7 @@
goto exit1;
}
down(&nd.dentry->d_inode->i_sem);
- dentry = lookup_hash(&nd.last, nd.dentry);
+ dentry = lookup_hash(&nd);
error = PTR_ERR(dentry);
if (!IS_ERR(dentry)) {
error = vfs_rmdir(nd.dentry->d_inode, dentry);
@@ -1976,7 +1976,7 @@
if (nd.last_type != LAST_NORM)
goto exit1;
down(&nd.dentry->d_inode->i_sem);
- dentry = lookup_hash(&nd.last, nd.dentry);
+ dentry = lookup_hash(&nd);
error = PTR_ERR(dentry);
if (!IS_ERR(dentry)) {
/* Why not before? Because we want correct error value */
@@ -2319,7 +2319,7 @@
trap = lock_rename(new_dir, old_dir);
- old_dentry = lookup_hash(&oldnd.last, old_dir);
+ old_dentry = lookup_hash(&oldnd);
error = PTR_ERR(old_dentry);
if (IS_ERR(old_dentry))
goto exit3;
@@ -2339,7 +2339,7 @@
error = -EINVAL;
if (old_dentry == trap)
goto exit4;
- new_dentry = lookup_hash(&newnd.last, new_dir);
+ new_dentry = lookup_hash(&newnd);
error = PTR_ERR(new_dentry);
if (IS_ERR(new_dentry))
goto exit4;
Index: linux-2.6/include/linux/namei.h
===================================================================
--- linux-2.6.orig/include/linux/namei.h 2005-10-28 19:49:56.000000000 +0200
+++ linux-2.6/include/linux/namei.h 2005-10-28 20:01:30.000000000 +0200
@@ -74,7 +74,7 @@
extern void release_open_intent(struct nameidata *);
extern struct dentry * lookup_one_len(const char *, struct dentry *, int);
-extern struct dentry * lookup_hash(struct qstr *, struct dentry *);
+extern struct dentry * lookup_hash(struct nameidata *);
extern int follow_down(struct vfsmount **, struct dentry **);
extern int follow_up(struct vfsmount **, struct dentry **);
Index: linux-2.6/net/sunrpc/rpc_pipe.c
===================================================================
--- linux-2.6.orig/net/sunrpc/rpc_pipe.c 2005-10-28 19:57:12.000000000 +0200
+++ linux-2.6/net/sunrpc/rpc_pipe.c 2005-10-28 20:01:43.000000000 +0200
@@ -665,7 +665,7 @@
return error;
dir = nd.dentry->d_inode;
down(&dir->i_sem);
- dentry = lookup_hash(&nd.last, nd.dentry);
+ dentry = lookup_hash(&nd);
if (IS_ERR(dentry)) {
error = PTR_ERR(dentry);
goto out_release;
@@ -726,7 +726,7 @@
return error;
dir = nd.dentry->d_inode;
down(&dir->i_sem);
- dentry = lookup_hash(&nd.last, nd.dentry);
+ dentry = lookup_hash(&nd);
if (IS_ERR(dentry)) {
error = PTR_ERR(dentry);
goto out_release;
Index: linux-2.6/Documentation/feature-removal-schedule.txt
===================================================================
--- linux-2.6.orig/Documentation/feature-removal-schedule.txt 2005-09-13 21:33:45.000000000 +0200
+++ linux-2.6/Documentation/feature-removal-schedule.txt 2005-10-28 20:04:05.000000000 +0200
@@ -95,3 +95,10 @@
to link against API-compatible library on top of libnfnetlink_queue
instead of the current 'libipq'.
Who: Harald Welte <laforge@netfilter.org>
+
+---------------------------
+
+What: EXPORT_SYMBOL(lookup_hash)
+When: January 2006
+Why: Too low-level interface. Use lookup_one_len or lookup_create instead.
+Who: Christoph Hellwig <hch@lst.de>
next reply other threads:[~2005-10-28 23:40 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-28 23:40 Christoph Hellwig [this message]
2005-10-29 16:49 ` [PATCH] sanitize lookup_hash prototype Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20051028234030.GA13779@lst.de \
--to=hch@lst.de \
--cc=akpm@osdl.org \
--cc=jeffm@suse.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linuxram@us.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.