Message ID | 1430803373-4948-11-git-send-email-viro@ZenIV.linux.org.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue 05-05-15 06:21:45, Al Viro wrote: > From: Al Viro <viro@zeniv.linux.org.uk> > > Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Looks good. You can add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > mm/shmem.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) > > diff --git a/mm/shmem.c b/mm/shmem.c > index de98137..7f6e2f8 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -2451,6 +2451,7 @@ static int shmem_symlink(struct inode *dir, struct dentry *dentry, const char *s > return -ENOMEM; > } > inode->i_op = &shmem_short_symlink_operations; > + inode->i_link = info->symlink; > } else { > error = shmem_getpage(inode, 0, &page, SGP_WRITE, NULL); > if (error) { > @@ -2474,12 +2475,6 @@ static int shmem_symlink(struct inode *dir, struct dentry *dentry, const char *s > return 0; > } > > -static void *shmem_follow_short_symlink(struct dentry *dentry, struct nameidata *nd) > -{ > - nd_set_link(nd, SHMEM_I(d_inode(dentry))->symlink); > - return NULL; > -} > - > static void *shmem_follow_link(struct dentry *dentry, struct nameidata *nd) > { > struct page *page = NULL; > @@ -2642,7 +2637,7 @@ static ssize_t shmem_listxattr(struct dentry *dentry, char *buffer, size_t size) > > static const struct inode_operations shmem_short_symlink_operations = { > .readlink = generic_readlink, > - .follow_link = shmem_follow_short_symlink, > + .follow_link = simple_follow_link, > #ifdef CONFIG_TMPFS_XATTR > .setxattr = shmem_setxattr, > .getxattr = shmem_getxattr, > -- > 2.1.4 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/mm/shmem.c b/mm/shmem.c index de98137..7f6e2f8 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2451,6 +2451,7 @@ static int shmem_symlink(struct inode *dir, struct dentry *dentry, const char *s return -ENOMEM; } inode->i_op = &shmem_short_symlink_operations; + inode->i_link = info->symlink; } else { error = shmem_getpage(inode, 0, &page, SGP_WRITE, NULL); if (error) { @@ -2474,12 +2475,6 @@ static int shmem_symlink(struct inode *dir, struct dentry *dentry, const char *s return 0; } -static void *shmem_follow_short_symlink(struct dentry *dentry, struct nameidata *nd) -{ - nd_set_link(nd, SHMEM_I(d_inode(dentry))->symlink); - return NULL; -} - static void *shmem_follow_link(struct dentry *dentry, struct nameidata *nd) { struct page *page = NULL; @@ -2642,7 +2637,7 @@ static ssize_t shmem_listxattr(struct dentry *dentry, char *buffer, size_t size) static const struct inode_operations shmem_short_symlink_operations = { .readlink = generic_readlink, - .follow_link = shmem_follow_short_symlink, + .follow_link = simple_follow_link, #ifdef CONFIG_TMPFS_XATTR .setxattr = shmem_setxattr, .getxattr = shmem_getxattr,