kyber: Replace strlcpy with strscpy
authorAzeem Shaikh <azeemshaikh38@gmail.com>
Mon, 3 Jul 2023 17:21:58 +0000 (17:21 +0000)
committerJens Axboe <axboe@kernel.dk>
Mon, 17 Jul 2023 14:18:17 +0000 (08:18 -0600)
strlcpy() reads the entire source buffer first.
This read may exceed the destination size limit.
This is both inefficient and can lead to linear read
overflows if a source string is not NUL-terminated [1].
In an effort to remove strlcpy() completely [2], replace
strlcpy() here with strscpy().
No return values were used, so direct replacement is safe.

[1] https://www.kernel.org/doc/html/latest/process/deprecated.html#strlcpy
[2] https://github.com/KSPP/linux/issues/89

Signed-off-by: Azeem Shaikh <azeemshaikh38@gmail.com>
Reviewed-by: Kees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20230703172159.3668349-2-azeemshaikh38@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/trace/events/kyber.h

index bf7533f171ff9c6542203d31599956227c11cc66..9d44781efc1c4ed0413516dd22f6511d5d937049 100644 (file)
@@ -31,8 +31,8 @@ TRACE_EVENT(kyber_latency,
 
        TP_fast_assign(
                __entry->dev            = dev;
-               strlcpy(__entry->domain, domain, sizeof(__entry->domain));
-               strlcpy(__entry->type, type, sizeof(__entry->type));
+               strscpy(__entry->domain, domain, sizeof(__entry->domain));
+               strscpy(__entry->type, type, sizeof(__entry->type));
                __entry->percentile     = percentile;
                __entry->numerator      = numerator;
                __entry->denominator    = denominator;
@@ -59,7 +59,7 @@ TRACE_EVENT(kyber_adjust,
 
        TP_fast_assign(
                __entry->dev            = dev;
-               strlcpy(__entry->domain, domain, sizeof(__entry->domain));
+               strscpy(__entry->domain, domain, sizeof(__entry->domain));
                __entry->depth          = depth;
        ),
 
@@ -81,7 +81,7 @@ TRACE_EVENT(kyber_throttled,
 
        TP_fast_assign(
                __entry->dev            = dev;
-               strlcpy(__entry->domain, domain, sizeof(__entry->domain));
+               strscpy(__entry->domain, domain, sizeof(__entry->domain));
        ),
 
        TP_printk("%d,%d %s", MAJOR(__entry->dev), MINOR(__entry->dev),