Loading fs/jfs/inode.c +2 −1 Original line number Diff line number Diff line Loading @@ -63,11 +63,12 @@ struct inode *jfs_iget(struct super_block *sb, unsigned long ino) inode->i_mapping->a_ops = &jfs_aops; } else { inode->i_op = &jfs_fast_symlink_inode_operations; inode->i_link = JFS_IP(inode)->i_inline; /* * The inline data should be null-terminated, but * don't let on-disk corruption crash the kernel */ JFS_IP(inode)->i_inline[inode->i_size] = '\0'; inode->i_link[inode->i_size] = '\0'; } } else { inode->i_op = &jfs_file_inode_operations; Loading fs/jfs/namei.c +2 −3 Original line number Diff line number Diff line Loading @@ -880,7 +880,6 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry, int ssize; /* source pathname size */ struct btstack btstack; struct inode *ip = d_inode(dentry); unchar *i_fastsymlink; s64 xlen = 0; int bmask = 0, xsize; s64 xaddr; Loading Loading @@ -946,8 +945,8 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry, if (ssize <= IDATASIZE) { ip->i_op = &jfs_fast_symlink_inode_operations; i_fastsymlink = JFS_IP(ip)->i_inline; memcpy(i_fastsymlink, name, ssize); ip->i_link = JFS_IP(ip)->i_inline; memcpy(ip->i_link, name, ssize); ip->i_size = ssize - 1; /* Loading fs/jfs/symlink.c +1 −9 Original line number Diff line number Diff line Loading @@ -17,21 +17,13 @@ */ #include <linux/fs.h> #include <linux/namei.h> #include "jfs_incore.h" #include "jfs_inode.h" #include "jfs_xattr.h" static void *jfs_follow_link(struct dentry *dentry, struct nameidata *nd) { char *s = JFS_IP(d_inode(dentry))->i_inline; nd_set_link(nd, s); return NULL; } const struct inode_operations jfs_fast_symlink_inode_operations = { .readlink = generic_readlink, .follow_link = jfs_follow_link, .follow_link = simple_follow_link, .setattr = jfs_setattr, .setxattr = jfs_setxattr, .getxattr = jfs_getxattr, Loading Loading
fs/jfs/inode.c +2 −1 Original line number Diff line number Diff line Loading @@ -63,11 +63,12 @@ struct inode *jfs_iget(struct super_block *sb, unsigned long ino) inode->i_mapping->a_ops = &jfs_aops; } else { inode->i_op = &jfs_fast_symlink_inode_operations; inode->i_link = JFS_IP(inode)->i_inline; /* * The inline data should be null-terminated, but * don't let on-disk corruption crash the kernel */ JFS_IP(inode)->i_inline[inode->i_size] = '\0'; inode->i_link[inode->i_size] = '\0'; } } else { inode->i_op = &jfs_file_inode_operations; Loading
fs/jfs/namei.c +2 −3 Original line number Diff line number Diff line Loading @@ -880,7 +880,6 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry, int ssize; /* source pathname size */ struct btstack btstack; struct inode *ip = d_inode(dentry); unchar *i_fastsymlink; s64 xlen = 0; int bmask = 0, xsize; s64 xaddr; Loading Loading @@ -946,8 +945,8 @@ static int jfs_symlink(struct inode *dip, struct dentry *dentry, if (ssize <= IDATASIZE) { ip->i_op = &jfs_fast_symlink_inode_operations; i_fastsymlink = JFS_IP(ip)->i_inline; memcpy(i_fastsymlink, name, ssize); ip->i_link = JFS_IP(ip)->i_inline; memcpy(ip->i_link, name, ssize); ip->i_size = ssize - 1; /* Loading
fs/jfs/symlink.c +1 −9 Original line number Diff line number Diff line Loading @@ -17,21 +17,13 @@ */ #include <linux/fs.h> #include <linux/namei.h> #include "jfs_incore.h" #include "jfs_inode.h" #include "jfs_xattr.h" static void *jfs_follow_link(struct dentry *dentry, struct nameidata *nd) { char *s = JFS_IP(d_inode(dentry))->i_inline; nd_set_link(nd, s); return NULL; } const struct inode_operations jfs_fast_symlink_inode_operations = { .readlink = generic_readlink, .follow_link = jfs_follow_link, .follow_link = simple_follow_link, .setattr = jfs_setattr, .setxattr = jfs_setxattr, .getxattr = jfs_getxattr, Loading