put_encapsulation() is meant to load the logical output port into bits 24 to 40 of the tunnel ID metadata field, but 'outport << 24' did not have that effect because outport has type uint16_t. This fixes the problem.
Found by Coverity. Reported-at: https://scan3.coverity.com/reports.htm#v16889/p10449/fileInstanceId=14763078&defectInstanceId=4304791&mergedDefectId=180391 Signed-off-by: Ben Pfaff <[email protected]> --- ovn/controller/physical.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ovn/controller/physical.c b/ovn/controller/physical.c index 457fc45414bd..532c7252e1ea 100644 --- a/ovn/controller/physical.c +++ b/ovn/controller/physical.c @@ -128,8 +128,8 @@ put_encapsulation(enum mf_field_id mff_ovn_geneve, put_load(outport, mff_ovn_geneve, 0, 32, ofpacts); put_move(MFF_LOG_INPORT, 0, mff_ovn_geneve, 16, 15, ofpacts); } else if (tun->type == STT) { - put_load(datapath->tunnel_key | (outport << 24), MFF_TUN_ID, 0, 64, - ofpacts); + put_load(datapath->tunnel_key | ((uint64_t) outport << 24), + MFF_TUN_ID, 0, 64, ofpacts); put_move(MFF_LOG_INPORT, 0, MFF_TUN_ID, 40, 15, ofpacts); } else if (tun->type == VXLAN) { put_load(datapath->tunnel_key, MFF_TUN_ID, 0, 24, ofpacts); -- 2.10.2 _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
