Skip to content

Commit

Permalink
can: gw: Don't bump nlmsg_len manually
Browse files Browse the repository at this point in the history
nlmsg_end() will take care of this when we finalize the message.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Tested-by: Oliver Hartkopp <socketcan@hartkopp.net>
Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
  • Loading branch information
Thomas Graf authored and Marc Kleine-Budde committed Jul 10, 2012
1 parent 061a5c3 commit 6eaf53c
Showing 1 changed file with 1 addition and 26 deletions.
27 changes: 1 addition & 26 deletions net/can/gw.c
Original file line number Diff line number Diff line change
Expand Up @@ -462,15 +462,11 @@ static int cgw_put_job(struct sk_buff *skb, struct cgw_job *gwj)
if (gwj->handled_frames) {
if (nla_put_u32(skb, CGW_HANDLED, gwj->handled_frames) < 0)
goto cancel;
else
nlh->nlmsg_len += NLA_HDRLEN + NLA_ALIGN(sizeof(u32));
}

if (gwj->dropped_frames) {
if (nla_put_u32(skb, CGW_DROPPED, gwj->dropped_frames) < 0)
goto cancel;
else
nlh->nlmsg_len += NLA_HDRLEN + NLA_ALIGN(sizeof(u32));
}

/* check non default settings of attributes */
Expand All @@ -480,53 +476,39 @@ static int cgw_put_job(struct sk_buff *skb, struct cgw_job *gwj)
mb.modtype = gwj->mod.modtype.and;
if (nla_put(skb, CGW_MOD_AND, sizeof(mb), &mb) < 0)
goto cancel;
else
nlh->nlmsg_len += NLA_HDRLEN + NLA_ALIGN(sizeof(mb));
}

if (gwj->mod.modtype.or) {
memcpy(&mb.cf, &gwj->mod.modframe.or, sizeof(mb.cf));
mb.modtype = gwj->mod.modtype.or;
if (nla_put(skb, CGW_MOD_OR, sizeof(mb), &mb) < 0)
goto cancel;
else
nlh->nlmsg_len += NLA_HDRLEN + NLA_ALIGN(sizeof(mb));
}

if (gwj->mod.modtype.xor) {
memcpy(&mb.cf, &gwj->mod.modframe.xor, sizeof(mb.cf));
mb.modtype = gwj->mod.modtype.xor;
if (nla_put(skb, CGW_MOD_XOR, sizeof(mb), &mb) < 0)
goto cancel;
else
nlh->nlmsg_len += NLA_HDRLEN + NLA_ALIGN(sizeof(mb));
}

if (gwj->mod.modtype.set) {
memcpy(&mb.cf, &gwj->mod.modframe.set, sizeof(mb.cf));
mb.modtype = gwj->mod.modtype.set;
if (nla_put(skb, CGW_MOD_SET, sizeof(mb), &mb) < 0)
goto cancel;
else
nlh->nlmsg_len += NLA_HDRLEN + NLA_ALIGN(sizeof(mb));
}

if (gwj->mod.csumfunc.crc8) {
if (nla_put(skb, CGW_CS_CRC8, CGW_CS_CRC8_LEN,
&gwj->mod.csum.crc8) < 0)
goto cancel;
else
nlh->nlmsg_len += NLA_HDRLEN + \
NLA_ALIGN(CGW_CS_CRC8_LEN);
}

if (gwj->mod.csumfunc.xor) {
if (nla_put(skb, CGW_CS_XOR, CGW_CS_XOR_LEN,
&gwj->mod.csum.xor) < 0)
goto cancel;
else
nlh->nlmsg_len += NLA_HDRLEN + \
NLA_ALIGN(CGW_CS_XOR_LEN);
}

if (gwj->gwtype == CGW_TYPE_CAN_CAN) {
Expand All @@ -535,23 +517,16 @@ static int cgw_put_job(struct sk_buff *skb, struct cgw_job *gwj)
if (nla_put(skb, CGW_FILTER, sizeof(struct can_filter),
&gwj->ccgw.filter) < 0)
goto cancel;
else
nlh->nlmsg_len += NLA_HDRLEN +
NLA_ALIGN(sizeof(struct can_filter));
}

if (nla_put_u32(skb, CGW_SRC_IF, gwj->ccgw.src_idx) < 0)
goto cancel;
else
nlh->nlmsg_len += NLA_HDRLEN + NLA_ALIGN(sizeof(u32));

if (nla_put_u32(skb, CGW_DST_IF, gwj->ccgw.dst_idx) < 0)
goto cancel;
else
nlh->nlmsg_len += NLA_HDRLEN + NLA_ALIGN(sizeof(u32));
}

return skb->len;
return nlmsg_end(skb, nlh);

cancel:
nlmsg_cancel(skb, nlh);
Expand Down

0 comments on commit 6eaf53c

Please sign in to comment.