On Sun, Oct 13, 2024 at 3:01 PM Sabyrzhan Tasbolatov <snovitoll@xxxxxxxxx> wrote: > > Since in the commit 2865baf54077("x86: support user address masking instead > of non-speculative conditional") do_strncpy_from_user() is called from > multiple places, we should sanitize the kernel *dst memory and size > which were done in strncpy_from_user() previously. > > Fixes: 2865baf54077 ("x86: support user address masking instead of non-speculative conditional") > Signed-off-by: Sabyrzhan Tasbolatov <snovitoll@xxxxxxxxx> > --- > lib/strncpy_from_user.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c > index 989a12a6787..f36ad821176 100644 > --- a/lib/strncpy_from_user.c > +++ b/lib/strncpy_from_user.c > @@ -31,6 +31,9 @@ static __always_inline long do_strncpy_from_user(char *dst, const char __user *s > const struct word_at_a_time constants = WORD_AT_A_TIME_CONSTANTS; > unsigned long res = 0; > > + kasan_check_write(dst, count); > + check_object_size(dst, count, false); > + > if (IS_UNALIGNED(src, dst)) > goto byte_at_a_time; > > @@ -142,8 +145,6 @@ long strncpy_from_user(char *dst, const char __user *src, long count) > if (max > count) > max = count; > > - kasan_check_write(dst, count); > - check_object_size(dst, count, false); > if (user_read_access_begin(src, max)) { > retval = do_strncpy_from_user(dst, src, count, max); > user_read_access_end(); > -- > 2.34.1 > Reviewed-by: Andrey Konovalov <andreyknvl@xxxxxxxxx>