From 5fccb7565daf671858e74249f0fd0e6e915d5278 Mon Sep 17 00:00:00 2001 From: Open vSwitch CI Date: Aug 16 2021 18:18:46 +0000 Subject: Import openvswitch2.15-2.15.0-33 from Fast DataPath --- diff --git a/SOURCES/openvswitch-2.15.0.patch b/SOURCES/openvswitch-2.15.0.patch index dad3484..3e13104 100644 --- a/SOURCES/openvswitch-2.15.0.patch +++ b/SOURCES/openvswitch-2.15.0.patch @@ -18617,7 +18617,7 @@ index 9e2d06b3dd..cb3f30e5b6 100644 static inline void diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c -index 4381c618f1..3e45c816a0 100644 +index 4381c618f1..916b7917fa 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -279,8 +279,9 @@ static bool dpcls_lookup(struct dpcls *cls, @@ -18656,7 +18656,7 @@ index 4381c618f1..3e45c816a0 100644 if (errno != 0 || new_prio > UINT8_MAX) { unixctl_command_reply_error(conn, "error converting priority, use integer in range 0-255\n"); -@@ -1364,58 +1367,42 @@ dpif_netdev_subtable_lookup_set(struct unixctl_conn *conn, int argc, +@@ -1364,58 +1367,43 @@ dpif_netdev_subtable_lookup_set(struct unixctl_conn *conn, int argc, return; } @@ -18738,11 +18738,12 @@ index 4381c618f1..3e45c816a0 100644 - ovs_mutex_unlock(&dp->port_mutex); + /* release port mutex before netdev mutex. */ + ovs_mutex_unlock(&dp->port_mutex); ++ free(pmd_list); + } ovs_mutex_unlock(&dp_netdev_mutex); struct ds reply = DS_EMPTY_INITIALIZER; -@@ -1644,8 +1631,8 @@ dpif_netdev_init(void) +@@ -1644,8 +1632,8 @@ dpif_netdev_init(void) 0, 1, dpif_netdev_bond_show, NULL); unixctl_command_register("dpif-netdev/subtable-lookup-prio-set", @@ -18753,7 +18754,7 @@ index 4381c618f1..3e45c816a0 100644 NULL); unixctl_command_register("dpif-netdev/subtable-lookup-prio-get", "", 0, 0, dpif_netdev_subtable_lookup_get, -@@ -2569,18 +2556,6 @@ mark_to_flow_disassociate(struct dp_netdev_pmd_thread *pmd, +@@ -2569,18 +2557,6 @@ mark_to_flow_disassociate(struct dp_netdev_pmd_thread *pmd, return ret; } @@ -18772,7 +18773,7 @@ index 4381c618f1..3e45c816a0 100644 static struct dp_netdev_flow * mark_to_flow_find(const struct dp_netdev_pmd_thread *pmd, const uint32_t mark) -@@ -2659,7 +2634,8 @@ dp_netdev_flow_offload_put(struct dp_flow_offload_item *offload) +@@ -2659,7 +2635,8 @@ dp_netdev_flow_offload_put(struct dp_flow_offload_item *offload) struct dp_netdev_flow *flow = offload->flow; odp_port_t in_port = flow->flow.in_port.odp_port; const char *dpif_type_str = dpif_normalize_type(pmd->dp->class->type); @@ -18782,7 +18783,7 @@ index 4381c618f1..3e45c816a0 100644 struct offload_info info; struct netdev *port; uint32_t mark; -@@ -2671,7 +2647,6 @@ dp_netdev_flow_offload_put(struct dp_flow_offload_item *offload) +@@ -2671,7 +2648,6 @@ dp_netdev_flow_offload_put(struct dp_flow_offload_item *offload) if (modification) { mark = flow->mark; @@ -18790,7 +18791,7 @@ index 4381c618f1..3e45c816a0 100644 } else { /* * If a mega flow has already been offloaded (from other PMD -@@ -2798,10 +2773,9 @@ queue_netdev_flow_del(struct dp_netdev_pmd_thread *pmd, +@@ -2798,10 +2774,9 @@ queue_netdev_flow_del(struct dp_netdev_pmd_thread *pmd, static void queue_netdev_flow_put(struct dp_netdev_pmd_thread *pmd, struct dp_netdev_flow *flow, struct match *match, @@ -18802,7 +18803,7 @@ index 4381c618f1..3e45c816a0 100644 if (!netdev_is_flow_api_enabled()) { return; -@@ -2814,11 +2788,6 @@ queue_netdev_flow_put(struct dp_netdev_pmd_thread *pmd, +@@ -2814,11 +2789,6 @@ queue_netdev_flow_put(struct dp_netdev_pmd_thread *pmd, ovsthread_once_done(&offload_thread_once); } @@ -18814,7 +18815,7 @@ index 4381c618f1..3e45c816a0 100644 offload = dp_netdev_alloc_flow_offload(pmd, flow, op); offload->match = *match; offload->actions = xmalloc(actions_len); -@@ -3691,7 +3660,8 @@ dp_netdev_flow_add(struct dp_netdev_pmd_thread *pmd, +@@ -3691,7 +3661,8 @@ dp_netdev_flow_add(struct dp_netdev_pmd_thread *pmd, cmap_insert(&pmd->flow_table, CONST_CAST(struct cmap_node *, &flow->node), dp_netdev_flow_hash(&flow->ufid)); @@ -18824,7 +18825,7 @@ index 4381c618f1..3e45c816a0 100644 if (OVS_UNLIKELY(!VLOG_DROP_DBG((&upcall_rl)))) { struct ds ds = DS_EMPTY_INITIALIZER; -@@ -3778,7 +3748,8 @@ flow_put_on_pmd(struct dp_netdev_pmd_thread *pmd, +@@ -3778,7 +3749,8 @@ flow_put_on_pmd(struct dp_netdev_pmd_thread *pmd, ovsrcu_set(&netdev_flow->actions, new_actions); queue_netdev_flow_put(pmd, netdev_flow, match, @@ -18834,7 +18835,7 @@ index 4381c618f1..3e45c816a0 100644 if (stats) { get_dpif_flow_status(pmd->dp, netdev_flow, stats, NULL); -@@ -3834,6 +3805,15 @@ dpif_netdev_flow_put(struct dpif *dpif, const struct dpif_flow_put *put) +@@ -3834,6 +3806,15 @@ dpif_netdev_flow_put(struct dpif *dpif, const struct dpif_flow_put *put) return error; } @@ -18850,7 +18851,7 @@ index 4381c618f1..3e45c816a0 100644 if (put->ufid) { ufid = *put->ufid; } else { -@@ -4159,7 +4139,6 @@ dpif_netdev_execute(struct dpif *dpif, struct dpif_execute *execute) +@@ -4159,7 +4140,6 @@ dpif_netdev_execute(struct dpif *dpif, struct dpif_execute *execute) } dp_packet_batch_init_packet(&pp, execute->packet); @@ -18858,7 +18859,7 @@ index 4381c618f1..3e45c816a0 100644 dp_netdev_execute_actions(pmd, &pp, false, execute->flow, execute->actions, execute->actions_len); dp_netdev_pmd_flush_output_packets(pmd, true); -@@ -4878,6 +4857,12 @@ struct rr_numa { +@@ -4878,6 +4858,12 @@ struct rr_numa { bool idx_inc; }; @@ -18871,7 +18872,7 @@ index 4381c618f1..3e45c816a0 100644 static struct rr_numa * rr_numa_list_lookup(struct rr_numa_list *rr, int numa_id) { -@@ -5149,7 +5134,6 @@ reload_affected_pmds(struct dp_netdev *dp) +@@ -5149,7 +5135,6 @@ reload_affected_pmds(struct dp_netdev *dp) CMAP_FOR_EACH (pmd, node, &dp->poll_threads) { if (pmd->need_reload) { @@ -18879,7 +18880,7 @@ index 4381c618f1..3e45c816a0 100644 dp_netdev_reload_pmd__(pmd); } } -@@ -5590,10 +5574,17 @@ get_dry_run_variance(struct dp_netdev *dp, uint32_t *core_list, +@@ -5590,10 +5575,17 @@ get_dry_run_variance(struct dp_netdev *dp, uint32_t *core_list, for (int i = 0; i < n_rxqs; i++) { int numa_id = netdev_get_numa_id(rxqs[i]->port->netdev); numa = rr_numa_list_lookup(&rr, numa_id); @@ -18900,7 +18901,7 @@ index 4381c618f1..3e45c816a0 100644 goto cleanup; } -@@ -6203,12 +6194,14 @@ dp_netdev_run_meter(struct dp_netdev *dp, struct dp_packet_batch *packets_, +@@ -6203,12 +6195,14 @@ dp_netdev_run_meter(struct dp_netdev *dp, struct dp_packet_batch *packets_, /* Update all bands and find the one hit with the highest rate for each * packet (if any). */ for (int m = 0; m < meter->n_bands; ++m) { @@ -18919,7 +18920,7 @@ index 4381c618f1..3e45c816a0 100644 } /* Drain the bucket for all the packets, if possible. */ -@@ -6226,8 +6219,8 @@ dp_netdev_run_meter(struct dp_netdev *dp, struct dp_packet_batch *packets_, +@@ -6226,8 +6220,8 @@ dp_netdev_run_meter(struct dp_netdev *dp, struct dp_packet_batch *packets_, * (Only one band will be fired by a packet, and that * can be different for each packet.) */ for (int i = band_exceeded_pkt; i < cnt; i++) { @@ -18930,7 +18931,7 @@ index 4381c618f1..3e45c816a0 100644 exceeded_band[i] = m; } } -@@ -6246,8 +6239,8 @@ dp_netdev_run_meter(struct dp_netdev *dp, struct dp_packet_batch *packets_, +@@ -6246,8 +6240,8 @@ dp_netdev_run_meter(struct dp_netdev *dp, struct dp_packet_batch *packets_, /* Update the exceeding band for the exceeding packet. * (Only one band will be fired by a packet, and that * can be different for each packet.) */ @@ -18941,7 +18942,7 @@ index 4381c618f1..3e45c816a0 100644 exceeded_band[i] = m; } } -@@ -6329,16 +6322,14 @@ dpif_netdev_meter_set(struct dpif *dpif, ofproto_meter_id meter_id, +@@ -6329,16 +6323,14 @@ dpif_netdev_meter_set(struct dpif *dpif, ofproto_meter_id meter_id, config->bands[i].burst_size = config->bands[i].rate; } @@ -18963,7 +18964,7 @@ index 4381c618f1..3e45c816a0 100644 if (band_max_delta_t > meter->max_delta_t) { meter->max_delta_t = band_max_delta_t; } -@@ -8493,6 +8484,7 @@ const struct dpif_class dpif_netdev_class = { +@@ -8493,6 +8485,7 @@ const struct dpif_class dpif_netdev_class = { NULL, /* ct_timeout_policy_dump_next */ NULL, /* ct_timeout_policy_dump_done */ dpif_netdev_ct_get_timeout_policy_name, diff --git a/SPECS/openvswitch2.15.spec b/SPECS/openvswitch2.15.spec index e015487..648c057 100644 --- a/SPECS/openvswitch2.15.spec +++ b/SPECS/openvswitch2.15.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.15.0 -Release: 32%{?dist} +Release: 33%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -697,6 +697,12 @@ exit 0 %endif %changelog +* Mon Aug 16 2021 Open vSwitch CI - 2.15.0-33 +- Merging upstream branch-2.15 [RH gerrit: 08b4ccb1c4] + Commit list: + 64d1bba919 dpif-netdev: fix memory leak in dpcls subtable set command + + * Tue Aug 03 2021 Open vSwitch CI - 2.15.0-32 - Merging upstream branch-2.15 [RH gerrit: 2cc833ce5b] Commit list: