Patch "kasan: move checks to do_strncpy_from_user" has been added to the 6.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    kasan: move checks to do_strncpy_from_user

to the 6.12-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     kasan-move-checks-to-do_strncpy_from_user.patch
and it can be found in the queue-6.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit b33503632c9048d7596bfef13f035545ff6f5493
Author: Sabyrzhan Tasbolatov <snovitoll@xxxxxxxxx>
Date:   Wed Oct 16 18:18:00 2024 +0500

    kasan: move checks to do_strncpy_from_user
    
    [ Upstream commit ae193dd79398970ee760e0c8129ac42ef8f5c6ff ]
    
    Patch series "kasan: migrate the last module test to kunit", v4.
    
    copy_user_test() is the last KUnit-incompatible test with
    CONFIG_KASAN_MODULE_TEST requirement, which we are going to migrate to
    KUnit framework and delete the former test and Kconfig as well.
    
    In this patch series:
    
            - [1/3] move kasan_check_write() and check_object_size() to
                    do_strncpy_from_user() to cover with KASAN checks with
                    multiple conditions     in strncpy_from_user().
    
            - [2/3] migrated copy_user_test() to KUnit, where we can also test
                    strncpy_from_user() due to [1/4].
    
                    KUnits have been tested on:
                    - x86_64 with CONFIG_KASAN_GENERIC. Passed
                    - arm64 with CONFIG_KASAN_SW_TAGS. 1 fail. See [1]
                    - arm64 with CONFIG_KASAN_HW_TAGS. 1 fail. See [1]
                    [1] https://lore.kernel.org/linux-mm/CACzwLxj21h7nCcS2-KA_q7ybe+5pxH0uCDwu64q_9pPsydneWQ@xxxxxxxxxxxxxx/
    
            - [3/3] delete CONFIG_KASAN_MODULE_TEST and documentation occurrences.
    
    This patch (of 3):
    
    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.
    
    Link: https://lkml.kernel.org/r/20241016131802.3115788-1-snovitoll@xxxxxxxxx
    Link: https://lkml.kernel.org/r/20241016131802.3115788-2-snovitoll@xxxxxxxxx
    Fixes: 2865baf54077 ("x86: support user address masking instead of non-speculative conditional")
    Signed-off-by: Sabyrzhan Tasbolatov <snovitoll@xxxxxxxxx>
    Reviewed-by: Andrey Konovalov <andreyknvl@xxxxxxxxx>
    Cc: Alexander Potapenko <glider@xxxxxxxxxx>
    Cc: Alex Shi <alexs@xxxxxxxxxx>
    Cc: Andrey Ryabinin <ryabinin.a.a@xxxxxxxxx>
    Cc: Dmitry Vyukov <dvyukov@xxxxxxxxxx>
    Cc: Hu Haowen <2023002089@xxxxxxxxxxxxxxxx>
    Cc: Jonathan Corbet <corbet@xxxxxxx>
    Cc: Marco Elver <elver@xxxxxxxxxx>
    Cc: Vincenzo Frascino <vincenzo.frascino@xxxxxxx>
    Cc: Yanteng Si <siyanteng@xxxxxxxxxxx>
    Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c
index 989a12a678721..6dc234913dd58 100644
--- a/lib/strncpy_from_user.c
+++ b/lib/strncpy_from_user.c
@@ -120,6 +120,9 @@ long strncpy_from_user(char *dst, const char __user *src, long count)
 	if (unlikely(count <= 0))
 		return 0;
 
+	kasan_check_write(dst, count);
+	check_object_size(dst, count, false);
+
 	if (can_do_masked_user_access()) {
 		long retval;
 
@@ -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();




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux