Linux kernel commit 6e237d099fac introduced warnings when validating the
length of some types. This exposed a bug in dpif-netlink.c
dpif_netlink_vport_to_ofpbuf where ovs was passing the upcall pids as
variable length array while the kernel was expecting a single u32. This
resulted in the kernel reporting "netlink: 'ovs-vswitchd': attribute
type 5 has an invalid length.".

This patch changes the kernel to expect NLA_UNSPEC, which is for
arbitrary length data.

Signed-off-by: Nathanael Davison <[email protected]>
---
 datapath/datapath.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/datapath/datapath.c b/datapath/datapath.c
index e3d3c8c..3204bf3 100644
--- a/datapath/datapath.c
+++ b/datapath/datapath.c
@@ -2170,7 +2170,7 @@ static const struct nla_policy 
vport_policy[OVS_VPORT_ATTR_MAX + 1] = {
        [OVS_VPORT_ATTR_STATS] = { .len = sizeof(struct ovs_vport_stats) },
        [OVS_VPORT_ATTR_PORT_NO] = { .type = NLA_U32 },
        [OVS_VPORT_ATTR_TYPE] = { .type = NLA_U32 },
-       [OVS_VPORT_ATTR_UPCALL_PID] = { .type = NLA_U32 },
+       [OVS_VPORT_ATTR_UPCALL_PID] = { .type = NLA_UNSPEC },
        [OVS_VPORT_ATTR_OPTIONS] = { .type = NLA_NESTED },
 };
 
-- 
1.8.3.1

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

Reply via email to