Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ppp: clean up endianness conversions

sparse complains about some harmless endianness issues:

> drivers/net/ppp/pptp.c:281:21: warning: incorrect type in assignment (different base types)
> drivers/net/ppp/pptp.c:281:21: expected unsigned int [usertype] ack
> drivers/net/ppp/pptp.c:281:21: got restricted __be32
> drivers/net/ppp/pptp.c:283:23: warning: cast to restricted __be32

Here 'ack' is assigned a value in network-order, and then also the
byte-swapped value in host-order. Clean this up by doing the byte-swap
as part of the assignment.

> drivers/net/ppp/pptp.c:358:26: warning: cast from restricted __be16
> drivers/net/ppp/pptp.c:358:26: warning: incorrect type in argument 1 (different base types)
> drivers/net/ppp/pptp.c:358:26: expected unsigned short [usertype] call_id
> drivers/net/ppp/pptp.c:358:26: got restricted __be16 [usertype]

Here we use the wrong flavour of byte-swap. Use ntohs(), which of course
gives the same result.

Cc: Dmitry Kozlov <xeb@mail.ru>
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Link: https://lore.kernel.org/r/20210107143956.25549-1-jwi@linux.ibm.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Julian Wiedmann and committed by
Jakub Kicinski
09b5b5fb fda4fde2

+3 -5
+3 -5
drivers/net/ppp/pptp.c
··· 278 278 header = (struct pptp_gre_header *)(skb->data); 279 279 280 280 /* ack in different place if S = 0 */ 281 - ack = GRE_IS_SEQ(header->gre_hd.flags) ? header->ack : header->seq; 282 - 283 - ack = ntohl(ack); 284 - 281 + ack = GRE_IS_SEQ(header->gre_hd.flags) ? ntohl(header->ack) : 282 + ntohl(header->seq); 285 283 if (ack > opt->ack_recv) 286 284 opt->ack_recv = ack; 287 285 /* also handle sequence number wrap-around */ ··· 353 355 /* if invalid, discard this packet */ 354 356 goto drop; 355 357 356 - po = lookup_chan(htons(header->call_id), iph->saddr); 358 + po = lookup_chan(ntohs(header->call_id), iph->saddr); 357 359 if (po) { 358 360 skb_dst_drop(skb); 359 361 nf_reset_ct(skb);