Patch "bpf: Fix a BTF_ID_LIST bug with CONFIG_DEBUG_INFO_BTF not set" has been added to the 6.0-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

    bpf: Fix a BTF_ID_LIST bug with CONFIG_DEBUG_INFO_BTF not set

to the 6.0-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:
     bpf-fix-a-btf_id_list-bug-with-config_debug_info_btf.patch
and it can be found in the queue-6.0 subdirectory.

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



commit 401a813ee018a13f77ae9d3d81020ee20031718c
Author: Yonghong Song <yhs@xxxxxx>
Date:   Wed Nov 23 07:57:59 2022 -0800

    bpf: Fix a BTF_ID_LIST bug with CONFIG_DEBUG_INFO_BTF not set
    
    [ Upstream commit beb3d47d1d3d7185bb401af628ad32ee204a9526 ]
    
    With CONFIG_DEBUG_INFO_BTF not set, we hit the following compilation error,
      /.../kernel/bpf/verifier.c:8196:23: error: array index 6 is past the end of the array
      (that has type 'u32[5]' (aka 'unsigned int[5]')) [-Werror,-Warray-bounds]
            if (meta->func_id == special_kfunc_list[KF_bpf_cast_to_kern_ctx])
                                 ^                  ~~~~~~~~~~~~~~~~~~~~~~~
      /.../kernel/bpf/verifier.c:8174:1: note: array 'special_kfunc_list' declared here
      BTF_ID_LIST(special_kfunc_list)
      ^
      /.../include/linux/btf_ids.h:207:27: note: expanded from macro 'BTF_ID_LIST'
      #define BTF_ID_LIST(name) static u32 __maybe_unused name[5];
                                ^
      /.../kernel/bpf/verifier.c:8443:19: error: array index 5 is past the end of the array
      (that has type 'u32[5]' (aka 'unsigned int[5]')) [-Werror,-Warray-bounds]
                     btf_id == special_kfunc_list[KF_bpf_list_pop_back];
                               ^                  ~~~~~~~~~~~~~~~~~~~~
      /.../kernel/bpf/verifier.c:8174:1: note: array 'special_kfunc_list' declared here
      BTF_ID_LIST(special_kfunc_list)
      ^
      /.../include/linux/btf_ids.h:207:27: note: expanded from macro 'BTF_ID_LIST'
      #define BTF_ID_LIST(name) static u32 __maybe_unused name[5];
      ...
    
    Fix the problem by increase the size of BTF_ID_LIST to 16 to avoid compilation error
    and also prevent potentially unintended issue due to out-of-bound access.
    
    Reported-by: kernel test robot <lkp@xxxxxxxxx>
    Reported-by: Dan Carpenter <error27@xxxxxxxxx>
    Reported-by: Nathan Chancellor <nathan@xxxxxxxxxx>
    Signed-off-by: Yonghong Song <yhs@xxxxxx>
    Link: https://lore.kernel.org/r/20221123155759.2669749-1-yhs@xxxxxx
    Signed-off-by: Alexei Starovoitov <ast@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h
index 2aea877d644f..2b9872008428 100644
--- a/include/linux/btf_ids.h
+++ b/include/linux/btf_ids.h
@@ -204,7 +204,7 @@ extern struct btf_id_set8 name;
 
 #else
 
-#define BTF_ID_LIST(name) static u32 __maybe_unused name[5];
+#define BTF_ID_LIST(name) static u32 __maybe_unused name[16];
 #define BTF_ID(prefix, name)
 #define BTF_ID_FLAGS(prefix, name, ...)
 #define BTF_ID_UNUSED



[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