On 04/01/2017 16:04, "Ben Pfaff" <b...@ovn.org> wrote:

>On Tue, Dec 27, 2016 at 07:39:52PM -0800, Daniele Di Proietto wrote:
>> nx_put_match() needs a non-NULL tunnel metadata table, otherwise it will
>> crash if a flow matches on tunnel metadata.
>> 
>> This wasn't handled in ofputil_append_flow_update(), causing a crash
>> when the controller sent a flow monitor request.
>> 
>> To fix the problem, this commit changes ofputil_append_flow_update() to
>> behave like ofputil_append_flow_stats_reply().
>> Since ofputil_append_flow_update() now needs to temporarily modify the
>> match, this commits also embeds 'struct match' into 'struct
>> ofputil_flow_update', to be safer.  This is more similar to
>> 'struct ofputil_flow_stats'.
>> 
>> A regression test is added and a comment is updated in ovs-ofctl.c
>> 
>>  #0  0x000055699bd82fa0 in memcpy_from_metadata (dst=0x7ffc770930d0, 
>> src=0x7ffc77093698, loc=0x18) at ../lib/tun-metadata.c:451
>>  #1  0x000055699bd83c2e in metadata_loc_from_match_read (map=0x0, 
>> match=0x7ffc77093410, idx=0, mask=0x7ffc77093658, is_masked=0x7ffc77093287) 
>> at ../lib/tun-metadata.c:848
>>  #2  0x000055699bd83d9b in tun_metadata_to_nx_match (b=0x55699d3f0300, 
>> oxm=0, match=0x7ffc77093410) at ../lib/tun-metadata.c:871
>>  #3  0x000055699bce523d in nx_put_raw (b=0x55699d3f0300, oxm=0, 
>> match=0x7ffc77093410, cookie=0, cookie_mask=0) at ../lib/nx-match.c:1052
>>  #4  0x000055699bce5580 in nx_put_match (b=0x55699d3f0300, 
>> match=0x7ffc77093410, cookie=0, cookie_mask=0) at ../lib/nx-match.c:1116
>>  #5  0x000055699bd3926f in ofputil_append_flow_update 
>> (update=0x7ffc770940b0, replies=0x7ffc77094e00) at ../lib/ofp-util.c:6805
>>  #6  0x000055699bc4b5a9 in ofproto_compose_flow_refresh_update 
>> (rule=0x55699d405b40, flags=(NXFMF_INITIAL | NXFMF_ACTIONS), 
>> msgs=0x7ffc77094e00) at ../ofproto/ofproto.c:5915
>>  #7  0x000055699bc4b5f6 in ofmonitor_compose_refresh_updates 
>> (rules=0x7ffc77094e10, msgs=0x7ffc77094e00) at ../ofproto/ofproto.c:5929
>>  #8  0x000055699bc4bafc in handle_flow_monitor_request 
>> (ofconn=0x55699d404090, oh=0x55699d404220) at ../ofproto/ofproto.c:6082
>>  #9  0x000055699bc4f46d in handle_openflow__ (ofconn=0x55699d404090, 
>> msg=0x55699d404910) at ../ofproto/ofproto.c:7912
>>  #10 0x000055699bc4f5df in handle_openflow (ofconn=0x55699d404090, 
>> ofp_msg=0x55699d404910) at ../ofproto/ofproto.c:8002
>>  #11 0x000055699bc88154 in ofconn_run (ofconn=0x55699d404090, 
>> handle_openflow=0x55699bc4f5bc <handle_openflow>) at 
>> ../ofproto/connmgr.c:1427
>>  #12 0x000055699bc85934 in connmgr_run (mgr=0x55699d3adb90, 
>> handle_openflow=0x55699bc4f5bc <handle_openflow>) at ../ofproto/connmgr.c:363
>>  #13 0x000055699bc422c9 in ofproto_run (p=0x55699d3c85e0) at 
>> ../ofproto/ofproto.c:1798
>>  #14 0x000055699bc31ec6 in bridge_run__ () at ../vswitchd/bridge.c:2881
>>  #15 0x000055699bc320a6 in bridge_run () at ../vswitchd/bridge.c:2938
>>  #16 0x000055699bc3784e in main (argc=10, argv=0x7ffc770952c8) at 
>> ../vswitchd/ovs-vswitchd.c:111
>> 
>> Fixes: 8d8ab6c2d574 ("tun-metadata: Manage tunnel TLV mapping table on a
>> per-bridge basis.")
>> 
>> Signed-off-by: Daniele Di Proietto <diproiet...@vmware.com>
>
>Thank you!
>
>Acked-by: Ben Pfaff <b...@ovn.org>

Thanks! I applied this to master
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to