]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ipvs: properly dereference pe in ip_vs_add_service
authorChen Hanxiao <chenhx.fnst@fujitsu.com>
Thu, 27 Jun 2024 06:15:15 +0000 (14:15 +0800)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 17 Jul 2024 21:38:17 +0000 (23:38 +0200)
Use pe directly to resolve sparse warning:

  net/netfilter/ipvs/ip_vs_ctl.c:1471:27: warning: dereference of noderef expression

Fixes: 39b972231536 ("ipvs: handle connections started by real-servers")
Signed-off-by: Chen Hanxiao <chenhx.fnst@fujitsu.com>
Acked-by: Julian Anastasov <ja@ssi.bg>
Acked-by: Simon Horman <horms@kernel.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/ipvs/ip_vs_ctl.c

index 78a1cc72dc38ab4f43c1d6c1273a206664af1104..706c2b52a1ac6c63087c86ffaa9f9a3542eb1a76 100644 (file)
@@ -1459,18 +1459,18 @@ ip_vs_add_service(struct netns_ipvs *ipvs, struct ip_vs_service_user_kern *u,
        if (ret < 0)
                goto out_err;
 
-       /* Bind the ct retriever */
-       RCU_INIT_POINTER(svc->pe, pe);
-       pe = NULL;
-
        /* Update the virtual service counters */
        if (svc->port == FTPPORT)
                atomic_inc(&ipvs->ftpsvc_counter);
        else if (svc->port == 0)
                atomic_inc(&ipvs->nullsvc_counter);
-       if (svc->pe && svc->pe->conn_out)
+       if (pe && pe->conn_out)
                atomic_inc(&ipvs->conn_out_counter);
 
+       /* Bind the ct retriever */
+       RCU_INIT_POINTER(svc->pe, pe);
+       pe = NULL;
+
        /* Count only IPv4 services for old get/setsockopt interface */
        if (svc->af == AF_INET)
                ipvs->num_services++;