lkml.org 
[lkml]   [2010]   [Jun]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] Only honor the FIGETBSZ ioctl for regular files, directories, and symlinks
    Date
    FIGETBSZ has an ioctl number of _IO(0x00,2) == 2, which can conflict
    with device driver ioctls. Let's avoid the potential for problems by
    only honoring the ioctl number for files where this ioctl is likely
    going to be useful: regular files, directories, and symlinks.

    Thanks to Johannes Stezenbach for pointing this consequence of commit
    19ba0559.

    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    Cc: Al Viro <viro@ZenIV.linux.org.uk>
    Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
    ---
    fs/compat_ioctl.c | 7 ++++++-
    fs/ioctl.c | 5 ++++-
    2 files changed, 10 insertions(+), 2 deletions(-)

    diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
    index 641640d..81d646b 100644
    --- a/fs/compat_ioctl.c
    +++ b/fs/compat_ioctl.c
    @@ -1715,8 +1715,13 @@ asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd,
    goto out_fput;
    #endif

    - case FIBMAP:
    case FIGETBSZ:
    + if (S_ISDIR(filp->f_path.dentry->d_inode->i_mode) ||
    + S_ISLNK(filp->f_path.dentry->d_inode->i_mode))
    + break;
    + /*FALL THROUGH */
    +
    + case FIBMAP:
    case FIONREAD:
    if (S_ISREG(filp->f_path.dentry->d_inode->i_mode))
    break;
    diff --git a/fs/ioctl.c b/fs/ioctl.c
    index 2d140a7..5c61d69 100644
    --- a/fs/ioctl.c
    +++ b/fs/ioctl.c
    @@ -597,7 +597,10 @@ int do_vfs_ioctl(struct file *filp, unsigned int fd, unsigned int cmd,
    {
    struct inode *inode = filp->f_path.dentry->d_inode;
    int __user *p = (int __user *)arg;
    - return put_user(inode->i_sb->s_blocksize, p);
    +
    + if (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
    + S_ISLNK(inode->i_mode))
    + return put_user(inode->i_sb->s_blocksize, p);
    }

    default:
    --
    1.7.0.4


    \
     
     \ /
      Last update: 2010-06-14 16:07    [W:0.031 / U:31.148 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site