Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ufs: switch to simple_follow_link()

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro 4b8061a6 5723cb01

+6 -15
+3 -2
fs/ufs/inode.c
··· 572 572 inode->i_fop = &ufs_dir_operations; 573 573 inode->i_mapping->a_ops = &ufs_aops; 574 574 } else if (S_ISLNK(inode->i_mode)) { 575 - if (!inode->i_blocks) 575 + if (!inode->i_blocks) { 576 576 inode->i_op = &ufs_fast_symlink_inode_operations; 577 - else { 577 + inode->i_link = (char *)UFS_I(inode)->i_u1.i_symlink; 578 + } else { 578 579 inode->i_op = &ufs_symlink_inode_operations; 579 580 inode->i_mapping->a_ops = &ufs_aops; 580 581 }
+2 -1
fs/ufs/namei.c
··· 144 144 } else { 145 145 /* fast symlink */ 146 146 inode->i_op = &ufs_fast_symlink_inode_operations; 147 - memcpy(UFS_I(inode)->i_u1.i_symlink, symname, l); 147 + inode->i_link = (char *)UFS_I(inode)->i_u1.i_symlink; 148 + memcpy(inode->i_link, symname, l); 148 149 inode->i_size = l-1; 149 150 } 150 151 mark_inode_dirty(inode);
+1 -12
fs/ufs/symlink.c
··· 25 25 * ext2 symlink handling code 26 26 */ 27 27 28 - #include <linux/fs.h> 29 - #include <linux/namei.h> 30 - 31 28 #include "ufs_fs.h" 32 29 #include "ufs.h" 33 30 34 - 35 - static void *ufs_follow_link(struct dentry *dentry, struct nameidata *nd) 36 - { 37 - struct ufs_inode_info *p = UFS_I(d_inode(dentry)); 38 - nd_set_link(nd, (char*)p->i_u1.i_symlink); 39 - return NULL; 40 - } 41 - 42 31 const struct inode_operations ufs_fast_symlink_inode_operations = { 43 32 .readlink = generic_readlink, 44 - .follow_link = ufs_follow_link, 33 + .follow_link = simple_follow_link, 45 34 .setattr = ufs_setattr, 46 35 }; 47 36