Merge tag 'rproc-v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc...
[platform/kernel/linux-starfive.git] / net / openvswitch / flow_table.c
index 0a0e4c2..4f3b179 100644 (file)
@@ -79,6 +79,7 @@ struct sw_flow *ovs_flow_alloc(void)
                return ERR_PTR(-ENOMEM);
 
        flow->stats_last_writer = -1;
+       flow->cpu_used_mask = (struct cpumask *)&flow->stats[nr_cpu_ids];
 
        /* Initialize the default stat node. */
        stats = kmem_cache_alloc_node(flow_stats_cache,
@@ -91,7 +92,7 @@ struct sw_flow *ovs_flow_alloc(void)
 
        RCU_INIT_POINTER(flow->stats[0], stats);
 
-       cpumask_set_cpu(0, &flow->cpu_used_mask);
+       cpumask_set_cpu(0, flow->cpu_used_mask);
 
        return flow;
 err:
@@ -115,7 +116,7 @@ static void flow_free(struct sw_flow *flow)
                                          flow->sf_acts);
        /* We open code this to make sure cpu 0 is always considered */
        for (cpu = 0; cpu < nr_cpu_ids;
-            cpu = cpumask_next(cpu, &flow->cpu_used_mask)) {
+            cpu = cpumask_next(cpu, flow->cpu_used_mask)) {
                if (flow->stats[cpu])
                        kmem_cache_free(flow_stats_cache,
                                        (struct sw_flow_stats __force *)flow->stats[cpu]);
@@ -1012,7 +1013,7 @@ static int flow_mask_insert(struct flow_table *tbl, struct sw_flow *flow,
 
        mask = flow_mask_find(tbl, new);
        if (!mask) {
-               /* Allocate a new mask if none exsits. */
+               /* Allocate a new mask if none exists. */
                mask = mask_alloc();
                if (!mask)
                        return -ENOMEM;
@@ -1196,7 +1197,8 @@ int ovs_flow_init(void)
 
        flow_cache = kmem_cache_create("sw_flow", sizeof(struct sw_flow)
                                       + (nr_cpu_ids
-                                         * sizeof(struct sw_flow_stats *)),
+                                         * sizeof(struct sw_flow_stats *))
+                                      + cpumask_size(),
                                       0, 0, NULL);
        if (flow_cache == NULL)
                return -ENOMEM;