diff --git a/datapath/flow.c b/datapath/flow.c index 5cf0d54a7..b33b31559 100644 --- a/datapath/flow.c +++ b/datapath/flow.c @@ -175,7 +175,7 @@ void flow_put(struct sw_flow *flow) return; if (atomic_dec_and_test(&flow->refcnt)) { - kfree(flow->sf_acts); + kfree((struct sf_flow_acts __force *)flow->sf_acts); kmem_cache_free(flow_cache, flow); } } diff --git a/datapath/tunnel.c b/datapath/tunnel.c index ee9e45d31..d49d928cc 100644 --- a/datapath/tunnel.c +++ b/datapath/tunnel.c @@ -1456,10 +1456,11 @@ error: static void free_port_rcu(struct rcu_head *rcu) { - struct tnl_vport *tnl_vport = container_of(rcu, struct tnl_vport, rcu); + struct tnl_vport *tnl_vport = container_of(rcu, + struct tnl_vport, rcu); - free_cache(tnl_vport->cache); - kfree(tnl_vport->mutable); + free_cache((struct tnl_cache __force *)tnl_vport->cache); + kfree((struct tnl_mutable __force *)tnl_vport->mutable); vport_free(tnl_vport_to_vport(tnl_vport)); } diff --git a/datapath/vport-patch.c b/datapath/vport-patch.c index ef9778f3c..67b68a367 100644 --- a/datapath/vport-patch.c +++ b/datapath/vport-patch.c @@ -185,9 +185,9 @@ error: static void free_port_rcu(struct rcu_head *rcu) { struct patch_vport *patch_vport = container_of(rcu, - struct patch_vport, rcu); + struct patch_vport, rcu); - kfree(patch_vport->devconf); + kfree((struct device_config __force *)patch_vport->devconf); vport_free(vport_from_priv(patch_vport)); }