Patch "bpf: avoid uninitialized warnings in verifier_global_subprogs.c" has been added to the 6.9-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: avoid uninitialized warnings in verifier_global_subprogs.c

to the 6.9-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-avoid-uninitialized-warnings-in-verifier_global_.patch
and it can be found in the queue-6.9 subdirectory.

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



commit ea4f0bc17ae646ce580b331db8736d05149d9bff
Author: Jose E. Marchesi <jose.marchesi@xxxxxxxxxx>
Date:   Tue May 7 20:47:56 2024 +0200

    bpf: avoid uninitialized warnings in verifier_global_subprogs.c
    
    [ Upstream commit cd3fc3b9782130a5bc1dc3dfccffbc1657637a93 ]
    
    [Changes from V1:
    - The warning to disable is -Wmaybe-uninitialized, not -Wuninitialized.
    - This warning is only supported in GCC.]
    
    The BPF selftest verifier_global_subprogs.c contains code that
    purposedly performs out of bounds access to memory, to check whether
    the kernel verifier is able to catch them.  For example:
    
      __noinline int global_unsupp(const int *mem)
      {
            if (!mem)
                    return 0;
            return mem[100]; /* BOOM */
      }
    
    With -O1 and higher and no inlining, GCC notices this fact and emits a
    "maybe uninitialized" warning.  This is by design.  Note that the
    emission of these warnings is highly dependent on the precise
    optimizations that are performed.
    
    This patch adds a compiler pragma to verifier_global_subprogs.c to
    ignore these warnings.
    
    Tested in bpf-next master.
    No regressions.
    
    Signed-off-by: Jose E. Marchesi <jose.marchesi@xxxxxxxxxx>
    Cc: david.faust@xxxxxxxxxx
    Cc: cupertino.miranda@xxxxxxxxxx
    Cc: Yonghong Song <yonghong.song@xxxxxxxxx>
    Cc: Eduard Zingerman <eddyz87@xxxxxxxxx>
    Acked-by: Yonghong Song <yonghong.song@xxxxxxxxx>
    Link: https://lore.kernel.org/r/20240507184756.1772-1-jose.marchesi@xxxxxxxxxx
    Signed-off-by: Alexei Starovoitov <ast@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/tools/testing/selftests/bpf/progs/verifier_global_subprogs.c b/tools/testing/selftests/bpf/progs/verifier_global_subprogs.c
index baff5ffe94051..a9fc30ed4d732 100644
--- a/tools/testing/selftests/bpf/progs/verifier_global_subprogs.c
+++ b/tools/testing/selftests/bpf/progs/verifier_global_subprogs.c
@@ -8,6 +8,13 @@
 #include "xdp_metadata.h"
 #include "bpf_kfuncs.h"
 
+/* The compiler may be able to detect the access to uninitialized
+   memory in the routines performing out of bound memory accesses and
+   emit warnings about it.  This is the case of GCC. */
+#if !defined(__clang__)
+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
+#endif
+
 int arr[1];
 int unkn_idx;
 const volatile bool call_dead_subprog = false;




[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