new ->follow_link() and ->put_link() calling conventions
[deliverable/linux.git] / fs / configfs / symlink.c
index cc9f2546ea4a041273654b6076d1fbc774d447e4..fac8e8517f3345a5b6431cb1a4d398fbf73eca3b 100644 (file)
@@ -279,30 +279,26 @@ static int configfs_getlink(struct dentry *dentry, char * path)
 
 }
 
-static void *configfs_follow_link(struct dentry *dentry, struct nameidata *nd)
+static const char *configfs_follow_link(struct dentry *dentry, void **cookie, struct nameidata *nd)
 {
-       int error = -ENOMEM;
        unsigned long page = get_zeroed_page(GFP_KERNEL);
+       int error;
 
-       if (page) {
-               error = configfs_getlink(dentry, (char *)page);
-               if (!error) {
-                       nd_set_link(nd, (char *)page);
-                       return (void *)page;
-               }
+       if (!page)
+               return ERR_PTR(-ENOMEM);
+
+       error = configfs_getlink(dentry, (char *)page);
+       if (!error) {
+               return *cookie = (void *)page;
        }
 
-       nd_set_link(nd, ERR_PTR(error));
-       return NULL;
+       free_page(page);
+       return ERR_PTR(error);
 }
 
-static void configfs_put_link(struct dentry *dentry, struct nameidata *nd,
-                             void *cookie)
+static void configfs_put_link(struct dentry *dentry, void *cookie)
 {
-       if (cookie) {
-               unsigned long page = (unsigned long)cookie;
-               free_page(page);
-       }
+       free_page((unsigned long)cookie);
 }
 
 const struct inode_operations configfs_symlink_inode_operations = {
This page took 0.039247 seconds and 5 git commands to generate.