• Christian Marangi's avatar
    cpufreq: stats: Fix buffer overflow detection in trans_stats() · ea167a7f
    Christian Marangi authored
    Commit 3c0897c1 ("cpufreq: Use scnprintf() for avoiding potential
    buffer overflow") switched from snprintf to the more secure scnprintf
    but never updated the exit condition for PAGE_SIZE.
    
    As the commit say and as scnprintf document, what scnprintf returns what
    is actually written not counting the '\0' end char. This results in the
    case of len exceeding the size, len set to PAGE_SIZE - 1, as it can be
    written at max PAGE_SIZE - 1 (as '\0' is not counted)
    
    Because of len is never set to PAGE_SIZE, the function never break early,
    never prints the warning and never return -EFBIG.
    
    Fix this by changing the condition to PAGE_SIZE - 1 to correctly trigger
    the error.
    
    Cc: 5.10+ <stable@vger.kernel.org> # 5.10+
    Fixes: 3c0897c1 ("cpufreq: Use scnprintf() for avoiding potential buffer overflow")
    Signed-off-by: default avatarChristian Marangi <ansuelsmth@gmail.com>
    [ rjw: Subject and changelog edits ]
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    ea167a7f
cpufreq_stats.c 7.07 KB