Skip to content

Commit

Permalink
enic: Use offsetof macro in vic tlv length calculation
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Roopa Prabhu authored and David S. Miller committed Aug 17, 2010
1 parent ae94abe commit 7c46835
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions drivers/net/enic/vnic_vic.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ int vic_provinfo_add_tlv(struct vic_provinfo *vp, u16 type, u16 length,
if (!vp || !value)
return -EINVAL;

if (ntohl(vp->length) + sizeof(*tlv) + length >
VIC_PROVINFO_MAX_TLV_DATA)
if (ntohl(vp->length) + offsetof(struct vic_provinfo_tlv, value) +
length > VIC_PROVINFO_MAX_TLV_DATA)
return -ENOMEM;

tlv = (struct vic_provinfo_tlv *)((u8 *)vp->tlv +
Expand All @@ -66,7 +66,8 @@ int vic_provinfo_add_tlv(struct vic_provinfo *vp, u16 type, u16 length,
memcpy(tlv->value, value, length);

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;
}
Expand Down

0 comments on commit 7c46835

Please sign in to comment.