mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-19 18:53:52 +08:00
openvswitch: fix flow command message size
When user-space sets the OVS_UFID_F_OMIT_* flags, and the relevant
flow has no UFID, we can exceed the computed size, as
ovs_nla_put_identifier() will always dump an OVS_FLOW_ATTR_KEY
attribute.
Take the above in account when computing the flow command message
size.
Fixes: 74ed7ab926
("openvswitch: Add support for unique flow IDs.")
Reported-by: Qi Jun Ding <qding@redhat.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
786c4a5372
commit
4e81c0b3fa
@ -723,9 +723,13 @@ static size_t ovs_flow_cmd_msg_size(const struct sw_flow_actions *acts,
|
|||||||
{
|
{
|
||||||
size_t len = NLMSG_ALIGN(sizeof(struct ovs_header));
|
size_t len = NLMSG_ALIGN(sizeof(struct ovs_header));
|
||||||
|
|
||||||
/* OVS_FLOW_ATTR_UFID */
|
/* OVS_FLOW_ATTR_UFID, or unmasked flow key as fallback
|
||||||
|
* see ovs_nla_put_identifier()
|
||||||
|
*/
|
||||||
if (sfid && ovs_identifier_is_ufid(sfid))
|
if (sfid && ovs_identifier_is_ufid(sfid))
|
||||||
len += nla_total_size(sfid->ufid_len);
|
len += nla_total_size(sfid->ufid_len);
|
||||||
|
else
|
||||||
|
len += nla_total_size(ovs_key_attr_size());
|
||||||
|
|
||||||
/* OVS_FLOW_ATTR_KEY */
|
/* OVS_FLOW_ATTR_KEY */
|
||||||
if (!sfid || should_fill_key(sfid, ufid_flags))
|
if (!sfid || should_fill_key(sfid, ufid_flags))
|
||||||
|
Loading…
Reference in New Issue
Block a user