[ovs-git] [openvswitch/ovs] 94d03a: replication: Be more careful about JSON parsing an...

GitHub noreply at github.com
Mon Sep 12 18:33:16 UTC 2016


  Branch: refs/heads/branch-2.6
  Home:   https://github.com/openvswitch/ovs
  Commit: 94d03aa7a7d39724202a545987fc9439f90aae4d
      https://github.com/openvswitch/ovs/commit/94d03aa7a7d39724202a545987fc9439f90aae4d
  Author: Ben Pfaff <blp at ovn.org>
  Date:   2016-09-12 (Mon, 12 Sep 2016)

  Changed paths:
    M ovsdb/replication.c

  Log Message:
  -----------
  replication: Be more careful about JSON parsing and simplify code.

The code here wasn't careful about parsing JSON received from the remote
OVSDB server.  It assumed, for example, that a row that the remote server
implied was new was actually new, without looking to see whether there was
already a row with that UUID.  This commit improves this validation.  It
also rewrites code that translated updates locally into calls into the
query engine, via JSON, into simple lookups by UUID.

For me, this fixes a test failure in test 1866
(ovsdb-server/active-backup-role-switching), which caused the following
valgrind report:

==18725== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==18725==  Access not within mapped region at address 0x0
==18725==    at 0x43937E: ovsdb_datum_compare_3way (ovsdb-data.c:1626)
==18725==    by 0x439344: ovsdb_datum_equals (ovsdb-data.c:1616)
==18725==    by 0x4166CC: update_monitor_row_data (monitor.c:310)
==18725==    by 0x414A90: ovsdb_monitor_changes_update (monitor.c:1255)
==18725==    by 0x417009: ovsdb_monitor_change_cb (monitor.c:1339)
==18725==    by 0x41DB52: ovsdb_txn_for_each_change (transaction.c:906)
==18725==    by 0x416CC9: ovsdb_monitor_commit (monitor.c:1553)
==18725==    by 0x41D993: ovsdb_txn_commit_ (transaction.c:868)
==18725==    by 0x41D6F5: ovsdb_txn_commit (transaction.c:893)
==18725==    by 0x418185: process_notification (replication.c:576)
==18725==    by 0x417705: replication_run (replication.c:185)
==18725==    by 0x408240: main_loop (ovsdb-server.c:198)
==18725==    by 0x406432: main (ovsdb-server.c:429)

I don't know the exact cause of the problem, but this new implementation
leaves me more confident due to its simplicity.

Reported-by: Joe Stringer <joe at ovn.org>
Reported-at: http://openvswitch.org/pipermail/dev/2016-September/079315.html
Fixes: 60e0cd041958 ("ovsdb: Replication usability improvements")
Signed-off-by: Ben Pfaff <blp at ovn.org>
Tested-by: Joe Stringer <joe at ovn.org>
Acked-by: Andy Zhou <azhou at ovn.org>




More information about the git mailing list