]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
vxlan: vxlan_rcv(): Extract vxlan_hdr(skb) to a named variable
authorPetr Machata <petrm@nvidia.com>
Thu, 5 Dec 2024 15:40:53 +0000 (16:40 +0100)
committerJakub Kicinski <kuba@kernel.org>
Mon, 9 Dec 2024 22:47:03 +0000 (14:47 -0800)
Having a named reference to the VXLAN header is more handy than having to
conjure it anew through vxlan_hdr() on every use. Add a new variable and
convert several open-coded sites.

Additionally, convert one "unparsed" use to the new variable as well. Thus
the only "unparsed" uses that remain are the flag-clearing and the header
validity check at the end.

Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://patch.msgid.link/2a0a940e883c435a0fdbcdc1d03c4858957ad00e.1733412063.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/vxlan/vxlan_core.c

index 37c20cf93f92b3689718d487e3df7dfad1deac4c..f114568b67a3fe3dffec88530cc8513591c00322 100644 (file)
@@ -1667,6 +1667,7 @@ static bool vxlan_ecn_decapsulate(struct vxlan_sock *vs, void *oiph,
 static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
 {
        struct vxlan_vni_node *vninode = NULL;
+       const struct vxlanhdr *vh;
        struct vxlan_dev *vxlan;
        struct vxlan_sock *vs;
        struct vxlanhdr unparsed;
@@ -1685,11 +1686,11 @@ static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
                goto drop;
 
        unparsed = *vxlan_hdr(skb);
+       vh = vxlan_hdr(skb);
        /* VNI flag always required to be set */
-       if (!(unparsed.vx_flags & VXLAN_HF_VNI)) {
+       if (!(vh->vx_flags & VXLAN_HF_VNI)) {
                netdev_dbg(skb->dev, "invalid vxlan flags=%#x vni=%#x\n",
-                          ntohl(vxlan_hdr(skb)->vx_flags),
-                          ntohl(vxlan_hdr(skb)->vx_vni));
+                          ntohl(vh->vx_flags), ntohl(vh->vx_vni));
                reason = SKB_DROP_REASON_VXLAN_INVALID_HDR;
                /* Return non vxlan pkt */
                goto drop;
@@ -1701,7 +1702,7 @@ static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
        if (!vs)
                goto drop;
 
-       vni = vxlan_vni(vxlan_hdr(skb)->vx_vni);
+       vni = vxlan_vni(vh->vx_vni);
 
        vxlan = vxlan_vs_find_vni(vs, skb->dev->ifindex, vni, &vninode);
        if (!vxlan) {
@@ -1713,7 +1714,7 @@ static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
         * used by VXLAN extensions if explicitly requested.
         */
        if (vxlan->cfg.flags & VXLAN_F_GPE) {
-               if (!vxlan_parse_gpe_proto(vxlan_hdr(skb), &protocol))
+               if (!vxlan_parse_gpe_proto(vh, &protocol))
                        goto drop;
                unparsed.vx_flags &= ~VXLAN_GPE_USED_BITS;
                raw_proto = true;