On Tue, May 17, 2016 at 10:31:25PM -0700, Daniele Di Proietto wrote:
> The datapath code expects the RSS hash to always be initialized.  This
> is enforced by checking in emc_processing() that the hash is valid, and
> eventually by computing a new one.
> 
> Unfortunately, there is another entry point to the datapath,
> dpif_netdev_execute().  A packet generated by OVS (BFD frame,
> packet-out from controller) doesn't have a valid RSS hash and so is
> allowed to enter the datapath with an uninitialized hash value.
> 
> This commit recomputes the hash (if not valid) in dpif_netdev_execute().
> 
> The only place where we would use an invalid hash is netdev-vport, in
> push_udp_header().  This caused an uninitialized memory read, and a
> random value to be assigned to the outer tunnel header source port.
> 
> Reported-by: William Tu <u9012...@gmail.com>
> Signed-off-by: Daniele Di Proietto <diproiet...@vmware.com>

This is well reasoned.

Would there be any value in adding a comment explaining when the hash
might not already be valid?

Acked-by: Ben Pfaff <b...@ovn.org>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to