• Michael Lyle's avatar
    bcache: fix bch_hprint crash and improve output · 9276717b
    Michael Lyle authored
    Most importantly, solve a crash where %llu was used to format signed
    numbers.  This would cause a buffer overflow when reading sysfs
    writeback_rate_debug, as only 20 bytes were allocated for this and
    %llu writes 20 characters plus a null.
    
    Always use the units mechanism rather than having different output
    paths for simplicity.
    
    Also, correct problems with display output where 1.10 was a larger
    number than 1.09, by multiplying by 10 and then dividing by 1024 instead
    of dividing by 100.  (Remainders of >= 1000 would print as .10).
    
    Minor changes: Always display the decimal point instead of trying to
    omit it based on number of digits shown.  Decide what units to use
    based on 1000 as a threshold, not 1024 (in other words, always print
    at most 3 digits before the decimal point).
    Signed-off-by: default avatarMichael Lyle <mlyle@lyle.org>
    Reported-by: default avatarDmitry Yu Okunev <dyokunev@ut.mephi.ru>
    Acked-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
    Reviewed-by: default avatarColy Li <colyli@suse.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    9276717b
util.c 12.8 KB