lkml.org 
[lkml]   [2016]   [Jan]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.16.y-ckt 069/126] fix sysvfs symlinks
    Date
    3.16.7-ckt22 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Al Viro <viro@zeniv.linux.org.uk>

    commit 0ebf7f10d67a70e120f365018f1c5fce9ddc567d upstream.

    The thing got broken back in 2002 - sysvfs does *not* have inline
    symlinks; even short ones have bodies stored in the first block
    of file. sysv_symlink() handles that correctly; unfortunately,
    attempting to look an existing symlink up will end up confusing
    them for inline symlinks, and interpret the block number containing
    the body as the body itself.

    Nobody has noticed until now, which says something about the level
    of testing sysvfs gets ;-/

    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    [ luis: backported to 3.16: adjusted context ]
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    fs/sysv/inode.c | 10 ++--------
    1 file changed, 2 insertions(+), 8 deletions(-)

    diff --git a/fs/sysv/inode.c b/fs/sysv/inode.c
    index 88956309cc86..02fa1dcc5969 100644
    --- a/fs/sysv/inode.c
    +++ b/fs/sysv/inode.c
    @@ -162,14 +162,8 @@ void sysv_set_inode(struct inode *inode, dev_t rdev)
    inode->i_fop = &sysv_dir_operations;
    inode->i_mapping->a_ops = &sysv_aops;
    } else if (S_ISLNK(inode->i_mode)) {
    - if (inode->i_blocks) {
    - inode->i_op = &sysv_symlink_inode_operations;
    - inode->i_mapping->a_ops = &sysv_aops;
    - } else {
    - inode->i_op = &sysv_fast_symlink_inode_operations;
    - nd_terminate_link(SYSV_I(inode)->i_data, inode->i_size,
    - sizeof(SYSV_I(inode)->i_data) - 1);
    - }
    + inode->i_op = &sysv_symlink_inode_operations;
    + inode->i_mapping->a_ops = &sysv_aops;
    } else
    init_special_inode(inode, inode->i_mode, rdev);
    }

    \
     
     \ /
      Last update: 2016-01-06 12:41    [W:4.053 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site