On Mon, Feb 11, 2019 at 06:19:21PM -0800, Han Zhou wrote:
> From: Han Zhou <[email protected]>
> 
> The OVSDB conditional monitor implementation allows many clients
> to share same copy of monitored data if the clients are sharing
> same tables and columns being monitored, while they can have
> different monitor conditions. In monitor conditions they can
> have different columns which can be different from the columns
> being monitored. So the struct ovsdb_monitor_table maintains the
> union of the all the columns being used in any conditions.
> 
> The problem of the current implementation is that for each change
> set generated, it doesn't maintain any metadata for the number of
> columns for the data that has already populated in it. Instead, it
> always rely on the n_columns field of the struct ovsdb_monitor_table
> to manipulate the data. However, the n_columns in struct
> ovsdb_monitor_table can increase (e.g. when a client changes its
> condition which involves more columns). So it can result in that
> the existing rows in a change set with N columns being later processed
> as if it had more than N columns, typically, when the row is freed.
> This causes the ovsdb-server crashing (see an example of the
> backtrace).

Thanks.  I applied this to master and backported as far as branch-2.7.
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to