lkml.org 
[lkml]   [2018]   [Apr]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL for 4.15 084/189] blk-mq-debugfs: don't allow write on attributes with seq_operations set
    Date
    From: Eryu Guan <eguan@redhat.com>

    [ Upstream commit 6b136a24b05c81a24e0b648a4bd938bcd0c4f69e ]

    Attributes that only implement .seq_ops are read-only, any write to
    them should be rejected. But currently kernel would crash when
    writing to such debugfs entries, e.g.

    chmod +w /sys/kernel/debug/block/<dev>/requeue_list
    echo 0 > /sys/kernel/debug/block/<dev>/requeue_list
    chmod -w /sys/kernel/debug/block/<dev>/requeue_list

    Fix it by returning -EPERM in blk_mq_debugfs_write() when writing to
    such attributes.

    Cc: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Eryu Guan <eguan@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    ---
    block/blk-mq-debugfs.c | 6 +++++-
    1 file changed, 5 insertions(+), 1 deletion(-)

    diff --git a/block/blk-mq-debugfs.c b/block/blk-mq-debugfs.c
    index b56a4f35720d..54bd8c31b822 100644
    --- a/block/blk-mq-debugfs.c
    +++ b/block/blk-mq-debugfs.c
    @@ -703,7 +703,11 @@ static ssize_t blk_mq_debugfs_write(struct file *file, const char __user *buf,
    const struct blk_mq_debugfs_attr *attr = m->private;
    void *data = d_inode(file->f_path.dentry->d_parent)->i_private;

    - if (!attr->write)
    + /*
    + * Attributes that only implement .seq_ops are read-only and 'attr' is
    + * the same with 'data' in this case.
    + */
    + if (attr == data || !attr->write)
    return -EPERM;

    return attr->write(data, buf, count, ppos);
    --
    2.15.1
    \
     
     \ /
      Last update: 2018-04-09 05:57    [W:4.217 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site