kernel_samsung_a53x/include
Pablo Neira Ayuso e5bebb75e7 netfilter: nf_tables: fix table flag updates
commit 179d9ba5559a756f4322583388b3213fe4e391b0 upstream.

The dormant flag need to be updated from the preparation phase,
otherwise, two consecutive requests to dorm a table in the same batch
might try to remove the same hooks twice, resulting in the following
warning:

 hook not found, pf 3 num 0
 WARNING: CPU: 0 PID: 334 at net/netfilter/core.c:480 __nf_unregister_net_hook+0x1eb/0x610 net/netfilter/core.c:480
 Modules linked in:
 CPU: 0 PID: 334 Comm: kworker/u4:5 Not tainted 5.12.0-syzkaller #0
 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
 Workqueue: netns cleanup_net
 RIP: 0010:__nf_unregister_net_hook+0x1eb/0x610 net/netfilter/core.c:480

This patch is a partial revert of 0ce7cf4127f1 ("netfilter: nftables:
update table flags from the commit phase") to restore the previous
behaviour.

However, there is still another problem: A batch containing a series of
dorm-wakeup-dorm table and vice-versa also trigger the warning above
since hook unregistration happens from the preparation phase, while hook
registration occurs from the commit phase.

To fix this problem, this patch adds two internal flags to annotate the
original dormant flag status which are __NFT_TABLE_F_WAS_DORMANT and
__NFT_TABLE_F_WAS_AWAKEN, to restore it from the abort path.

The __NFT_TABLE_F_UPDATE bitmask allows to handle the dormant flag update
with one single transaction.

Reported-by: syzbot+7ad5cd1615f2d89c6e7e@syzkaller.appspotmail.com
Fixes: 0ce7cf4127f1 ("netfilter: nftables: update table flags from the commit phase")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-18 11:43:32 +01:00
..
acpi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
asm-generic Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
clocksource Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
crypto Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
drm drm: Stub out debug prints 2024-11-17 17:45:26 +01:00
dt-bindings Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
keys Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kunit Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
kvm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
linux tracing: Have trace_event_file have ref counters 2024-11-18 11:43:32 +01:00
math-emu Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
media Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
memory Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
misc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
net netfilter: nf_tables: fix table flag updates 2024-11-18 11:43:32 +01:00
pcmcia Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
ras Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
rdma Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
scsc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
scsi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
sdp Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
soc exynos_pm_qos: Remove exynos_pm_qos_update_request_timeout() 2024-11-17 17:44:09 +01:00
sound ASoC: soc-card: Add storage for PCI SSID 2024-11-18 11:43:13 +01:00
target Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
test Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trace neighbor: tracing: Move pin6 inside CONFIG_IPV6=y section 2024-11-08 11:26:11 +01:00
uapi netfilter: nf_tables: fix table flag updates 2024-11-18 11:43:32 +01:00
variant1/linux Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
vdso Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
video Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
xen Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00