libbpf: Fix potential uninitialized tail padding with LIBBPF_OPTS_RESET
[platform/kernel/linux-rpi.git] / tools / lib / bpf / libbpf_common.h
index b7060f2..8fe248e 100644 (file)
  */
 #define LIBBPF_OPTS_RESET(NAME, ...)                                       \
        do {                                                                \
-               memset(&NAME, 0, sizeof(NAME));                             \
-               NAME = (typeof(NAME)) {                                     \
-                       .sz = sizeof(NAME),                                 \
-                       __VA_ARGS__                                         \
-               };                                                          \
+               typeof(NAME) ___##NAME = ({                                 \
+                       memset(&___##NAME, 0, sizeof(NAME));                \
+                       (typeof(NAME)) {                                    \
+                               .sz = sizeof(NAME),                         \
+                               __VA_ARGS__                                 \
+                       };                                                  \
+               });                                                         \
+               memcpy(&NAME, &___##NAME, sizeof(NAME));                    \
        } while (0)
 
 #endif /* __LIBBPF_LIBBPF_COMMON_H */