]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
vxlan: vnifilter: fix spurious notification on VNI update
authorAndy Roulin <aroulin@nvidia.com>
Tue, 2 Jun 2026 18:51:37 +0000 (11:51 -0700)
committerJakub Kicinski <kuba@kernel.org>
Thu, 4 Jun 2026 15:47:45 +0000 (08:47 -0700)
When a VNI is re-added with the same attributes (e.g. same group or no
group), vxlan_vni_update() sends a spurious RTM_NEWTUNNEL notification
even though nothing changed.

The bug is that 'if (changed)' tests whether the pointer is non-NULL,
not the bool value it points to. Since every caller passes a valid
pointer, the condition is always true and the notification fires
unconditionally.

Fix by dereferencing the pointer: 'if (*changed)'.

Reproducer:

 # ip link add vxlan100 type vxlan dstport 4789 local 10.0.0.1 \
      nolearning external vnifilter
 # ip link set vxlan100 up
 # bridge monitor vni &
 # bridge vni add vni 1000 dev vxlan100
 # bridge vni add vni 1000 dev vxlan100  # spurious notification

Fixes: f9c4bb0b245c ("vxlan: vni filtering support on collect metadata device")
Signed-off-by: Andy Roulin <aroulin@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Link: https://patch.msgid.link/20260602185138.253265-3-aroulin@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/vxlan/vxlan_vnifilter.c

index f2a202d468928c04ec4effee951707934c54a44b..3e76f4e210944ffecd35e872c7b7ce36923117b5 100644 (file)
@@ -661,7 +661,7 @@ static int vxlan_vni_update(struct vxlan_dev *vxlan,
        if (ret)
                return ret;
 
-       if (changed)
+       if (*changed)
                vxlan_vnifilter_notify(vxlan, vninode, RTM_NEWTUNNEL);
 
        return 0;