linux/net/batman-adv
Sven Eckelmann edb557b2ba
batman-adv: tvlv: avoid race of cifsnotfound handler state
TVLV handlers can have the flag BATADV_TVLV_HANDLER_OGM_CIFNOTFND set to
signal that the OGM handler should be called (with NULL for data) when the
specific TVLV container was not found in the OGM. This is used by:

* DAT
* GW
* Multicast (OGM + Tracker)

The state whether the handler was executed was stored in the struct
batadv_tvlv_handler. But the TVLV processing is started without any lock.
Multiple parallel contexts processing TVLVs would therefore overwrite each
others BATADV_TVLV_HANDLER_OGM_CALLED flag in the shared
batadv_tvlv_handler.

Drop the shared BATADV_TVLV_HANDLER_OGM_CALLED flag and instead determine,
per TVLV buffer, whether a matching container was present by scanning the
packet's buffer.

Cc: stable@kernel.org
Fixes: ef26157747 ("batman-adv: tvlv - basic infrastructure")
Signed-off-by: Sven Eckelmann <sven@narfation.org>
2026-06-14 12:33:18 +02:00
..
bat_algo.c batman-adv: store hard_iface as iflink private data 2025-05-31 10:41:11 +02:00
bat_algo.h batman-adv: store hard_iface as iflink private data 2025-05-31 10:41:11 +02:00
bat_iv_ogm.c batman-adv: tvlv: enforce 2-byte alignment 2026-06-14 10:56:35 +02:00
bat_iv_ogm.h
bat_v_elp.c batman-adv: convert cancellation of work items to disable helper 2026-06-05 09:12:06 +02:00
bat_v_elp.h batman-adv: Drop unmanaged ELP metric worker 2025-01-22 21:46:42 +01:00
bat_v_ogm.c batman-adv: tvlv: enforce 2-byte alignment 2026-06-14 10:56:35 +02:00
bat_v_ogm.h
bat_v.c batman-adv: v: prevent OGM aggregation on disabled hardif 2026-06-13 07:57:52 +02:00
bat_v.h
bitarray.c batman-adv: fix kernel-doc typos and grammar errors 2026-06-05 09:12:09 +02:00
bitarray.h batman-adv: fix kernel-doc typos and grammar errors 2026-06-05 09:12:09 +02:00
bridge_loop_avoidance.c batman-adv: bla: update stale kernel-doc 2026-06-05 09:12:08 +02:00
bridge_loop_avoidance.h batman-adv: bla: update stale kernel-doc 2026-06-05 09:12:08 +02:00
distributed-arp-table.c batman-adv: dat: prevent false sharing between VLANs 2026-06-14 09:21:39 +02:00
distributed-arp-table.h batman-adv: Use consistent name for mesh interface 2025-02-22 11:36:22 +01:00
fragmentation.c batman-adv: frag: avoid underflow of TTL 2026-06-13 07:57:51 +02:00
fragmentation.h batman-adv: frag: ensure fragment is writable before modifying TTL 2026-06-13 07:57:51 +02:00
gateway_client.c batman-adv: replace non-atomic meshif config fields with (READ|WRITE)_ONCE 2026-06-01 14:22:00 +02:00
gateway_client.h
gateway_common.c batman-adv: replace non-atomic meshif config fields with (READ|WRITE)_ONCE 2026-06-01 14:22:00 +02:00
gateway_common.h batman-adv: Drop per algo GW section class code 2023-08-14 18:01:21 +02:00
hard-interface.c batman-adv: gw: don't deselect gateway with active hardif 2026-06-13 07:51:17 +02:00
hard-interface.h batman-adv: correct batadv_wifi_* kernel-doc 2026-06-05 09:12:07 +02:00
hash.c treewide: Replace kmalloc with kmalloc_obj for non-scalar types 2026-02-21 01:02:28 -08:00
hash.h batman-adv: fix kernel-doc typos and grammar errors 2026-06-05 09:12:09 +02:00
Kconfig batman-adv: use skb_crc32c() instead of skb_seq_read() 2025-10-17 16:30:43 +02:00
log.c batman-adv: Use consistent name for mesh interface 2025-02-22 11:36:22 +01:00
log.h batman-adv: replace non-atomic meshif config fields with (READ|WRITE)_ONCE 2026-06-01 14:22:00 +02:00
main.c batman-adv: tp_meter: split vars into sender and receiver types 2026-06-03 08:02:21 +02:00
main.h batman-adv: drop batman-adv specific version 2026-05-29 21:15:59 +02:00
Makefile batman-adv: drop batman-adv specific version 2026-05-29 21:15:59 +02:00
mesh-interface.c batman-adv: fix kernel-doc typos and grammar errors 2026-06-05 09:12:09 +02:00
mesh-interface.h batman-adv: remove includes for extern declarations 2025-09-05 15:11:02 +02:00
multicast_forw.c batman-adv: Use consistent name for mesh interface 2025-02-22 11:36:22 +01:00
multicast.c batman-adv: convert cancellation of work items to disable helper 2026-06-05 09:12:06 +02:00
multicast.h batman-adv: mcast: implement multicast packet generation 2023-11-14 08:16:34 +01:00
netlink.c batman-adv: fix kernel-doc typos and grammar errors 2026-06-05 09:12:09 +02:00
netlink.h batman-adv: remove includes for extern declarations 2025-09-05 15:11:02 +02:00
originator.c batman-adv: fix kernel-doc typos and grammar errors 2026-06-05 09:12:09 +02:00
originator.h batman-adv: mcast: implement multicast packet reception and forwarding 2023-11-14 08:16:34 +01:00
routing.c batman-adv: tvlv: enforce 2-byte alignment 2026-06-14 10:56:35 +02:00
routing.h batman-adv: mcast: implement multicast packet reception and forwarding 2023-11-14 08:16:34 +01:00
send.c batman-adv: convert cancellation of work items to disable helper 2026-06-05 09:12:06 +02:00
send.h batman-adv: Use consistent name for mesh interface 2025-02-22 11:36:22 +01:00
tp_meter.c batman-adv: tp_meter: handle overlapping packets 2026-06-13 07:57:52 +02:00
tp_meter.h batman-adv: stop tp_meter sessions during mesh teardown 2026-05-02 21:58:53 +02:00
trace.c
trace.h batman-adv: Use consistent name for mesh interface 2025-02-22 11:36:22 +01:00
translation-table.c batman-adv: tt: track roam count per VID 2026-06-14 09:21:31 +02:00
translation-table.h batman-adv: Use consistent name for mesh interface 2025-02-22 11:36:22 +01:00
tvlv.c batman-adv: tvlv: avoid race of cifsnotfound handler state 2026-06-14 12:33:18 +02:00
tvlv.h batman-adv: tvlv: avoid unnecessary OGM buffer reallocations 2026-06-01 14:22:02 +02:00
types.h batman-adv: tvlv: avoid race of cifsnotfound handler state 2026-06-14 12:33:18 +02:00
version.c batman-adv: drop batman-adv specific version 2026-05-29 21:15:59 +02:00