From a9821961754712289d9e63368caf47709dc48b86 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Sun, 12 Feb 2017 22:19:52 +0800 Subject: [PATCH] net: Make sure that local variable is really used. --- sys/net/if.c | 7 ++++++- sys/net/if_ethersubr.c | 2 ++ sys/net/pfil.c | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/sys/net/if.c b/sys/net/if.c index db24f7bcb4..8ffb453133 100644 --- a/sys/net/if.c +++ b/sys/net/if.c @@ -3554,8 +3554,13 @@ ifnet_array_del(struct ifnet *ifp, const struct ifnet_array *old_arr) const struct ifnet_array * ifnet_array_get(void) { + const struct ifnet_array *ret; + KASSERT(curthread->td_type == TD_TYPE_NETISR, ("not in netisr")); - return ifnet_array; + ret = ifnet_array; + /* Make sure 'ret' is really used. */ + cpu_ccfence(); + return (ret); } int diff --git a/sys/net/if_ethersubr.c b/sys/net/if_ethersubr.c index 71dc0e4db6..2c77eb1ad1 100644 --- a/sys/net/if_ethersubr.c +++ b/sys/net/if_ethersubr.c @@ -1051,6 +1051,8 @@ post_stats: void (*vlan_input_func)(struct mbuf *); vlan_input_func = vlan_input_p; + /* Make sure 'vlan_input_func' is really used. */ + cpu_ccfence(); if (vlan_input_func != NULL) { vlan_input_func(m); } else { diff --git a/sys/net/pfil.c b/sys/net/pfil.c index a23654c34a..34f4791e1f 100644 --- a/sys/net/pfil.c +++ b/sys/net/pfil.c @@ -106,6 +106,8 @@ pfil_run_hooks(struct pfil_head *ph, struct mbuf **mp, struct ifnet *ifp, else return 0; /* XXX panic? */ + /* Make sure 'list' is really used. */ + cpu_ccfence(); TAILQ_FOREACH(pfh, list, pfil_link) { if (pfh->pfil_func != NULL) { rv = pfh->pfil_func(pfh->pfil_arg, &m, ifp, dir); -- 2.41.0