mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
batman-adv: bla: avoid NULL-ptr deref for claim via dropped interface
Without rtnl_lock held, a hardif might be retrieved as primary interface of
a meshif, but then (while operating on this interface) getting decoupled
from the mesh interface. In this case, the meshif still exists but the
pointer from the primary hardif to the meshif is set to NULL.
The mesh_iface must be checked first to be non-NULL before continuing to
send an ARP request using meshif.
Cc: stable@kernel.org
Fixes: 23721387c4 ("batman-adv: add basic bridge loop avoidance code")
Reported-by: Ido Schimmel <idosch@nvidia.com>
Reported-by: syzbot+9fdcc9f05a98a540b816@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=9fdcc9f05a98a540b816
Signed-off-by: Sven Eckelmann <sven@narfation.org>
This commit is contained in:
parent
83ab69bd12
commit
f80d3d98d2
|
|
@ -356,12 +356,14 @@ static void batadv_bla_send_claim(struct batadv_priv *bat_priv, const u8 *mac,
|
|||
sizeof(local_claim_dest));
|
||||
local_claim_dest.type = claimtype;
|
||||
|
||||
mesh_iface = primary_if->mesh_iface;
|
||||
mesh_iface = READ_ONCE(primary_if->mesh_iface);
|
||||
if (!mesh_iface)
|
||||
goto out;
|
||||
|
||||
skb = arp_create(ARPOP_REPLY, ETH_P_ARP,
|
||||
/* IP DST: 0.0.0.0 */
|
||||
zeroip,
|
||||
primary_if->mesh_iface,
|
||||
mesh_iface,
|
||||
/* IP SRC: 0.0.0.0 */
|
||||
zeroip,
|
||||
/* Ethernet DST: Broadcast */
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user