On Fri, 19 Aug 2022 18:30:44 +0300 Andrey Zhadchenko wrote: > -static size_t ovs_dp_cmd_msg_size(void) > +static size_t ovs_dp_cmd_msg_size(struct datapath *dp) > { > size_t msgsize = NLMSG_ALIGN(sizeof(struct ovs_header)); > + struct dp_nlsk_pids *pids = ovsl_dereference(dp->upcall_portids); > + >
double new line > msgsize += nla_total_size(IFNAMSIZ); > msgsize += nla_total_size_64bit(sizeof(struct ovs_dp_stats)); > @@ -1516,6 +1518,9 @@ static size_t ovs_dp_cmd_msg_size(void) > msgsize += nla_total_size(sizeof(u32)); /* OVS_DP_ATTR_USER_FEATURES */ > msgsize += nla_total_size(sizeof(u32)); /* OVS_DP_ATTR_MASKS_CACHE_SIZE > */ > > + if (dp->user_features & OVS_DP_F_DISPATCH_UPCALL_PER_CPU && pids) > + msgsize += nla_total_size_64bit(sizeof(u32) * pids->n_pids); Can we make a safe over estimation here, like nr_cpu_ids maybe? Would that be too large? It's fairly common to overestimate the netlink message allocation. Also why 64bit if the value is in u32 units? _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev