linux/tools
Alexander Lobakin a39ff5bf23 stddef: make __struct_group() UAPI C++-friendly
[ Upstream commit 724c6ce38b ]

For the most part of the C++ history, it couldn't have type
declarations inside anonymous unions for different reasons. At the
same time, __struct_group() relies on the latters, so when the @TAG
argument is not empty, C++ code doesn't want to build (even under
`extern "C"`):

../linux/include/uapi/linux/pkt_cls.h:25:24: error:
'struct tc_u32_sel::<unnamed union>::tc_u32_sel_hdr,' invalid;
an anonymous union may only have public non-static data members
[-fpermissive]

The safest way to fix this without trying to switch standards (which
is impossible in UAPI anyway) etc., is to disable tag declaration
for that language. This won't break anything since for now it's not
buildable at all.
Use a separate definition for __struct_group() when __cplusplus is
defined to mitigate the error, including the version from tools/.

Fixes: 50d7bd38c3 ("stddef: Introduce struct_group() helper macro")
Reported-by: Christopher Ferris <cferris@google.com>
Closes: https://lore.kernel.org/linux-hardening/Z1HZpe3WE5As8UAz@google.com
Suggested-by: Kees Cook <kees@kernel.org> # __struct_group_tag()
Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Link: https://lore.kernel.org/r/20241219135734.2130002-1-aleksander.lobakin@intel.com
Signed-off-by: Kees Cook <kees@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-01-02 10:34:16 +01:00
..
accounting delayacct: track delays from IRQ/SOFTIRQ 2023-04-18 16:39:34 -07:00
arch perf cap: Add __NR_capget to arch/x86 unistd 2024-10-28 13:04:52 -03:00
bootconfig bootconfig: Fix testcase to increase max node 2023-03-22 01:00:28 +09:00
bpf bpftool: fix potential NULL pointer dereferencing in prog_dump() 2024-12-14 20:03:14 +01:00
build perf build: Fix build feature-dwarf_getlocations fail for old libdw 2024-10-02 18:21:49 -03:00
certs tools/certs: Add print-cert-tbs-hash.sh 2022-05-23 18:47:49 +03:00
cgroup proc: rewrite stable_page_flags() 2024-04-25 20:56:15 -07:00
counter tools/counter: Remove unneeded semicolon 2023-12-20 11:43:31 -05:00
crypto crypto: tools/ccp - Remove unused variable 2024-08-30 18:22:30 +08:00
debugging tools: Add new "test" taint to kernel-chktaint 2022-09-07 14:51:12 -06:00
firewire treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
firmware Driver Core and debugfs changes for 5.3-rc1 2019-07-12 12:24:03 -07:00
gpio gpio: sloppy-logic-analyzer remove reference to rcu_momentary_dyntick_idle() 2024-12-05 14:01:28 +01:00
hv tools: hv: Fix a complier warning in the fcopy uio daemon 2024-12-27 14:02:15 +01:00
iio tools: iio: rm .*.cmd when make clean 2024-09-05 19:27:13 +01:00
include stddef: make __struct_group() UAPI C++-friendly 2025-01-02 10:34:16 +01:00
kvm/kvm_stat tools/kvm_stat: use canonical ftrace path 2023-03-29 06:52:08 -04:00
laptop change email address for Pali Rohár 2020-04-10 15:36:22 -07:00
leds .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
lib libperf: evlist: Fix --cpu argument on hybrid platform 2024-12-19 18:13:17 +01:00
memory-model tools/memory-model: simple.txt: Fix stale reference to recipes-pairs.txt 2024-09-13 23:56:44 -07:00
mm tools/mm: fix compile error 2024-11-14 22:43:48 -08:00
net tools/net/ynl: fix sub-message key lookup for nested attributes 2024-12-27 14:02:02 +01:00
objtool objtool/x86: allow syscall instruction 2024-12-19 18:13:23 +01:00
pci tools: PCI: Remove unused BILLION macro 2024-09-13 22:37:06 +00:00
pcmcia .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
perf perf machine: Initialize machine->env to address a segfault 2024-12-19 18:13:11 +01:00
power tools/power turbostat: Fix child's argument forwarding 2024-12-05 14:03:10 +01:00
rcu tools/rcu: Remove RCU Tasks Rude asynchronous APIs from rcu-updaters.sh 2024-07-29 07:39:32 +05:30
sched_ext sched_ext: Update scx_show_state.py to match scx_ops_bypass_depth's new type 2024-11-05 11:45:27 -10:00
scripts tools: Override makefile ARCH variable if defined, but empty 2024-12-14 20:03:15 +01:00
sound ASoC: dapm-graph: show path name for non-static routes 2024-08-23 11:03:00 +01:00
spi spi: spidev_fdx: Fix the wrong format specifier 2024-09-04 16:50:33 +01:00
testing selftests/bpf: Fix compilation error in get_uprobe_offset() 2025-01-02 10:34:10 +01:00
thermal tools/thermal/tmon: Fix compilation warning for wrong format 2024-01-02 09:33:19 +01:00
time treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
tracing tools/rtla: Enhance argument parsing in timerlat_load.py 2024-12-14 20:04:03 +01:00
usb usbip: tools: Fix detach_port() invalid port error path 2024-10-29 04:23:23 +01:00
verification verification/dot2: Improve dot parser robustness 2024-12-14 20:04:03 +01:00
virtio Fix typo in vringh_test.c 2024-11-06 04:40:07 -05:00
wmi treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
workqueue workqueue: remove unnecessary import and function in wq_monitor.py 2024-03-25 10:11:32 -10:00
writeback writeback: add wb_monitor.py script to monitor writeback info on bdi 2024-05-05 17:53:51 -07:00
Makefile sched_ext: Add scx_simple and scx_example_qmap example schedulers 2024-06-18 10:09:17 -10:00