lkml.org 
[lkml]   [2019]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.2 407/413] blkcg: update blkcg_print_stat() to handle larger outputs
    Date
    From: Tejun Heo <tj@kernel.org>

    commit f539da82f2158916e154d206054e0efd5df7ab61 upstream.

    Depending on the number of devices, blkcg stats can go over the
    default seqfile buf size. seqfile normally retries with a larger
    buffer but since the ->pd_stat() addition, blkcg_print_stat() doesn't
    tell seqfile that overflow has happened and the output gets printed
    truncated. Fix it by calling seq_commit() w/ -1 on possible
    overflows.

    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 903d23f0a354 ("blk-cgroup: allow controllers to output their own stats")
    Cc: stable@vger.kernel.org # v4.19+
    Cc: Josef Bacik <jbacik@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    block/blk-cgroup.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    --- a/block/blk-cgroup.c
    +++ b/block/blk-cgroup.c
    @@ -1006,8 +1006,12 @@ static int blkcg_print_stat(struct seq_f
    }
    next:
    if (has_stats) {
    - off += scnprintf(buf+off, size-off, "\n");
    - seq_commit(sf, off);
    + if (off < size - 1) {
    + off += scnprintf(buf+off, size-off, "\n");
    + seq_commit(sf, off);
    + } else {
    + seq_commit(sf, -1);
    + }
    }
    }


    \
     
     \ /
      Last update: 2019-07-24 21:45    [W:2.894 / U:0.988 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site