enic: Use offsetof macro in vic tlv length calculation
Signed-off-by: Scott Feldman <scofeldm@cisco.com> Signed-off-by: Roopa Prabhu <roprabhu@cisco.com> Signed-off-by: Vasanthy Kolluri <vkolluri@cisco.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ae94abe168
commit
7c46835e48
|
@ -54,8 +54,8 @@ int vic_provinfo_add_tlv(struct vic_provinfo *vp, u16 type, u16 length,
|
||||||
if (!vp || !value)
|
if (!vp || !value)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (ntohl(vp->length) + sizeof(*tlv) + length >
|
if (ntohl(vp->length) + offsetof(struct vic_provinfo_tlv, value) +
|
||||||
VIC_PROVINFO_MAX_TLV_DATA)
|
length > VIC_PROVINFO_MAX_TLV_DATA)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
tlv = (struct vic_provinfo_tlv *)((u8 *)vp->tlv +
|
tlv = (struct vic_provinfo_tlv *)((u8 *)vp->tlv +
|
||||||
|
@ -66,7 +66,8 @@ int vic_provinfo_add_tlv(struct vic_provinfo *vp, u16 type, u16 length,
|
||||||
memcpy(tlv->value, value, length);
|
memcpy(tlv->value, value, length);
|
||||||
|
|
||||||
vp->num_tlvs = htonl(ntohl(vp->num_tlvs) + 1);
|
vp->num_tlvs = htonl(ntohl(vp->num_tlvs) + 1);
|
||||||
vp->length = htonl(ntohl(vp->length) + sizeof(*tlv) + length);
|
vp->length = htonl(ntohl(vp->length) +
|
||||||
|
offsetof(struct vic_provinfo_tlv, value) + length);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue