ufs: switch to simple_follow_link()
authorAl Viro <viro@zeniv.linux.org.uk>
Sat, 2 May 2015 14:28:56 +0000 (10:28 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 11 May 2015 02:18:25 +0000 (22:18 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/ufs/inode.c
fs/ufs/namei.c
fs/ufs/symlink.c

index be7d42c7d9382bf8072a7e6e9eff7e03b24bab25..99aaf5c9bf4d83f0f5ec6469d6d6cb20827750d0 100644 (file)
@@ -572,9 +572,10 @@ static void ufs_set_inode_ops(struct inode *inode)
                inode->i_fop = &ufs_dir_operations;
                inode->i_mapping->a_ops = &ufs_aops;
        } else if (S_ISLNK(inode->i_mode)) {
-               if (!inode->i_blocks)
+               if (!inode->i_blocks) {
                        inode->i_op = &ufs_fast_symlink_inode_operations;
-               else {
+                       inode->i_link = (char *)UFS_I(inode)->i_u1.i_symlink;
+               } else {
                        inode->i_op = &ufs_symlink_inode_operations;
                        inode->i_mapping->a_ops = &ufs_aops;
                }
index e491a93a7e9af14c4227ee5072fa4a9d0bc17709..f773deb1d2e3fd561b906a0dd2a050d16161a5be 100644 (file)
@@ -144,7 +144,8 @@ static int ufs_symlink (struct inode * dir, struct dentry * dentry,
        } else {
                /* fast symlink */
                inode->i_op = &ufs_fast_symlink_inode_operations;
-               memcpy(UFS_I(inode)->i_u1.i_symlink, symname, l);
+               inode->i_link = (char *)UFS_I(inode)->i_u1.i_symlink;
+               memcpy(inode->i_link, symname, l);
                inode->i_size = l-1;
        }
        mark_inode_dirty(inode);
index 5b537e2fdda385a0da9aa346e93e05e83084e1dd..874480bb43e9d08190707d7d2ed30aee02eec531 100644 (file)
  *  ext2 symlink handling code
  */
 
-#include <linux/fs.h>
-#include <linux/namei.h>
-
 #include "ufs_fs.h"
 #include "ufs.h"
 
-
-static void *ufs_follow_link(struct dentry *dentry, struct nameidata *nd)
-{
-       struct ufs_inode_info *p = UFS_I(d_inode(dentry));
-       nd_set_link(nd, (char*)p->i_u1.i_symlink);
-       return NULL;
-}
-
 const struct inode_operations ufs_fast_symlink_inode_operations = {
        .readlink       = generic_readlink,
-       .follow_link    = ufs_follow_link,
+       .follow_link    = simple_follow_link,
        .setattr        = ufs_setattr,
 };