On Wed, Aug 14, 2024 at 12:33:03PM +0200, Ilya Maximets wrote:
> The 'parse()' callback has a function type with 'void *change'
> argument.  In all other cases it is used this way, except for
> the route_table_parse().  That generates UBsan error:
> 
>   lib/netlink-notifier.c:190:25: runtime error: call to function
>      route_table_parse through pointer to incorrect function type
>      'int (*)(struct ofpbuf *, void *)'
>   lib/route-table.c:227: note: route_table_parse defined here
>     0 0x24d0 in nln_run lib/netlink-notifier.c:190:25
>     1 0x7b39 in route_table_run lib/route-table.c:137:9
>     2 0x5565 in netdev_vport_run lib/netdev-vport.c:364:5
>     3 0xe978 in netdev_run lib/netdev.c:192:13
>     4 0x2f25 in main vswitchd/ovs-vswitchd.c:132:9
>     5 0xa1c9 in __libc_start_call_main
>     6 0xa28a in __libc_start_main
>     7 0xf004 in _start (vswitchd/ovs-vswitchd+0x726004)
> 
> Instead of turning off function sanitizer, let's just define
> this callback as all the other parsing callbacks and cast the
> void pointer inside the implementation.
> 
> This fixes system tests on Ubuntu 24.04 with UBsan.
> 
> Signed-off-by: Ilya Maximets <[email protected]>

Acked-by: Simon Horman <[email protected]>

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to