diff --git a/SOURCES/openvswitch-2.15.0.patch b/SOURCES/openvswitch-2.15.0.patch index 20efd7b..3b2e7ee 100644 --- a/SOURCES/openvswitch-2.15.0.patch +++ b/SOURCES/openvswitch-2.15.0.patch @@ -19138,7 +19138,7 @@ index ff8adaefb5..911b71dd4f 100644 return true; } diff --git a/lib/ovsdb-idl.c b/lib/ovsdb-idl.c -index 2c8a0c9cfe..1d385ca2fe 100644 +index 2c8a0c9cfe..2198c69c60 100644 --- a/lib/ovsdb-idl.c +++ b/lib/ovsdb-idl.c @@ -92,6 +92,9 @@ struct ovsdb_idl { @@ -19240,7 +19240,26 @@ index 2c8a0c9cfe..1d385ca2fe 100644 db->change_seqno++; } -@@ -416,7 +444,7 @@ ovsdb_idl_run(struct ovsdb_idl *idl) +@@ -401,9 +429,15 @@ ovsdb_idl_run(struct ovsdb_idl *idl) + break; + + case OVSDB_CS_EVENT_TYPE_LOCKED: +- /* If the client couldn't run a transaction because it didn't have +- * the lock, this will encourage it to try again. */ +- idl->change_seqno++; ++ if (ovsdb_cs_may_send_transaction(idl->cs)) { ++ /* If the client couldn't run a transaction because it didn't ++ * have the lock, this will encourage it to try again. */ ++ idl->change_seqno++; ++ } else { ++ /* We're setting up a session, so don't signal that the ++ * database changed. Finalizing the session will increment ++ * change_seqno anyhow. */ ++ } + break; + + case OVSDB_CS_EVENT_TYPE_UPDATE: +@@ -416,7 +450,7 @@ ovsdb_idl_run(struct ovsdb_idl *idl) } ovsdb_cs_event_destroy(event); } @@ -19249,7 +19268,7 @@ index 2c8a0c9cfe..1d385ca2fe 100644 ovsdb_idl_row_destroy_postprocess(idl); } -@@ -1140,7 +1168,7 @@ ovsdb_idl_track_add_all(struct ovsdb_idl *idl) +@@ -1140,7 +1174,7 @@ ovsdb_idl_track_add_all(struct ovsdb_idl *idl) } /* Returns true if 'table' has any tracked column. */ @@ -19258,7 +19277,7 @@ index 2c8a0c9cfe..1d385ca2fe 100644 ovsdb_idl_track_is_set(struct ovsdb_idl_table *table) { size_t i; -@@ -1227,13 +1255,8 @@ ovsdb_idl_track_clear__(struct ovsdb_idl *idl, bool flush_all) +@@ -1227,13 +1261,8 @@ ovsdb_idl_track_clear__(struct ovsdb_idl *idl, bool flush_all) free(row->updated); row->updated = NULL; } @@ -19273,7 +19292,7 @@ index 2c8a0c9cfe..1d385ca2fe 100644 if (ovsdb_idl_row_is_orphan(row)) { ovsdb_idl_row_unparse(row); if (row->tracked_old_datum) { -@@ -1351,6 +1374,33 @@ ovsdb_idl_parse_update(struct ovsdb_idl *idl, +@@ -1351,6 +1380,33 @@ ovsdb_idl_parse_update(struct ovsdb_idl *idl, } } @@ -19307,7 +19326,7 @@ index 2c8a0c9cfe..1d385ca2fe 100644 static struct ovsdb_idl_row * ovsdb_idl_get_row(struct ovsdb_idl_table *table, const struct uuid *uuid) { -@@ -1404,6 +1454,7 @@ ovsdb_idl_process_update(struct ovsdb_idl_table *table, +@@ -1404,6 +1460,7 @@ ovsdb_idl_process_update(struct ovsdb_idl_table *table, ovsdb_idl_insert_row(ovsdb_idl_row_create(table, uuid), ru->columns); } else if (ovsdb_idl_row_is_orphan(row)) { @@ -19315,7 +19334,7 @@ index 2c8a0c9cfe..1d385ca2fe 100644 ovsdb_idl_insert_row(row, ru->columns); } else { VLOG_ERR_RL(&semantic_rl, "cannot add existing row "UUID_FMT" to " -@@ -1451,13 +1502,8 @@ add_tracked_change_for_references(struct ovsdb_idl_row *row) +@@ -1451,13 +1508,8 @@ add_tracked_change_for_references(struct ovsdb_idl_row *row) if (ovs_list_is_empty(&ref->track_node) && ovsdb_idl_track_is_set(ref->table)) { @@ -19330,7 +19349,7 @@ index 2c8a0c9cfe..1d385ca2fe 100644 add_tracked_change_for_references(ref); } } -@@ -2023,6 +2069,32 @@ ovsdb_idl_row_reparse_backrefs(struct ovsdb_idl_row *row) +@@ -2023,6 +2075,32 @@ ovsdb_idl_row_reparse_backrefs(struct ovsdb_idl_row *row) } } @@ -19363,7 +19382,7 @@ index 2c8a0c9cfe..1d385ca2fe 100644 static struct ovsdb_idl_row * ovsdb_idl_row_create__(const struct ovsdb_idl_table_class *class) { -@@ -2049,22 +2121,26 @@ ovsdb_idl_row_create(struct ovsdb_idl_table *table, const struct uuid *uuid) +@@ -2049,22 +2127,26 @@ ovsdb_idl_row_create(struct ovsdb_idl_table *table, const struct uuid *uuid) return row; } @@ -19400,7 +19419,7 @@ index 2c8a0c9cfe..1d385ca2fe 100644 } } -@@ -2154,12 +2230,7 @@ ovsdb_idl_delete_row(struct ovsdb_idl_row *row) +@@ -2154,12 +2236,7 @@ ovsdb_idl_delete_row(struct ovsdb_idl_row *row) { ovsdb_idl_remove_from_indexes(row); ovsdb_idl_row_clear_arcs(row, true); @@ -19504,6 +19523,37 @@ index fd0b2fdea0..47db9bb57d 100644 cdtp.id = ct_tp->tp_id; SIMAP_FOR_EACH (node, &ct_tp->tp) { ct_dpif_set_timeout_policy_attr_by_name(&cdtp, node->name, node->data); +diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c +index b91517cd25..80ec2d9ac9 100644 +--- a/ofproto/ofproto.c ++++ b/ofproto/ofproto.c +@@ -968,7 +968,7 @@ ofproto_get_datapath_cap(const char *datapath_type, struct smap *dp_cap) + datapath_type = ofproto_normalize_type(datapath_type); + const struct ofproto_class *class = ofproto_class_find__(datapath_type); + +- if (class->get_datapath_cap) { ++ if (class && class->get_datapath_cap) { + class->get_datapath_cap(datapath_type, dp_cap); + } + } +@@ -981,7 +981,7 @@ ofproto_ct_set_zone_timeout_policy(const char *datapath_type, uint16_t zone_id, + datapath_type = ofproto_normalize_type(datapath_type); + const struct ofproto_class *class = ofproto_class_find__(datapath_type); + +- if (class->ct_set_zone_timeout_policy) { ++ if (class && class->ct_set_zone_timeout_policy) { + class->ct_set_zone_timeout_policy(datapath_type, zone_id, + timeout_policy); + } +@@ -993,7 +993,7 @@ ofproto_ct_del_zone_timeout_policy(const char *datapath_type, uint16_t zone_id) + datapath_type = ofproto_normalize_type(datapath_type); + const struct ofproto_class *class = ofproto_class_find__(datapath_type); + +- if (class->ct_del_zone_timeout_policy) { ++ if (class && class->ct_del_zone_timeout_policy) { + class->ct_del_zone_timeout_policy(datapath_type, zone_id); + } + diff --git a/ovsdb/ovsdb-client.c b/ovsdb/ovsdb-client.c index 72756eb1f2..ba28e36d78 100644 --- a/ovsdb/ovsdb-client.c diff --git a/SPECS/openvswitch2.15.spec b/SPECS/openvswitch2.15.spec index 83318ee..4a95f35 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: 23%{?dist} +Release: 24%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -697,6 +697,14 @@ exit 0 %endif %changelog +* Fri Jun 11 2021 Open vSwitch CI - 2.15.0-24 +- Merging upstream branch-2.15 [RH gerrit: 78ba3622d9] + Commit list: + bc0aa785a8 ovsdb-idl: Fix the database update signaling if it has never been connected. + 559426d2b0 ofproto: Fix potential NULL dereference in ofproto_ct_*_zone_timeout_policy(). + f31070e27e ofproto: Fix potential NULL dereference in ofproto_get_datapath_cap(). + + * Thu May 27 2021 Open vSwitch CI - 2.15.0-23 - Merging upstream branch-2.15 [RH gerrit: ba3ba16d42] Commit list: