From 56febcc2595e2bf2546c5bb4c35740ce883771a2 Mon Sep 17 00:00:00 2001 From: "Fabio M. De Francesco" Date: Fri, 30 Jul 2021 20:14:52 +0200 Subject: [PATCH] staging: r8188eu: Fix different base types in assignments and parameters Fix sparse warnings of different base types in assignments and in passing function parameters. Signed-off-by: Fabio M. De Francesco Link: https://lore.kernel.org/r/20210730181452.23062-1-fmdefrancesco@gmail.com Signed-off-by: Greg Kroah-Hartman --- drivers/staging/r8188eu/core/rtw_br_ext.c | 46 ++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/drivers/staging/r8188eu/core/rtw_br_ext.c b/drivers/staging/r8188eu/core/rtw_br_ext.c index 6e42ecd..8f43476 100644 --- a/drivers/staging/r8188eu/core/rtw_br_ext.c +++ b/drivers/staging/r8188eu/core/rtw_br_ext.c @@ -71,7 +71,7 @@ static inline int __nat25_add_pppoe_tag(struct sk_buff *skb, struct pppoe_tag *t struct pppoe_hdr *ph = (struct pppoe_hdr *)(skb->data + ETH_HLEN); int data_len; - data_len = tag->tag_len + TAG_HDR_LEN; + data_len = be16_to_cpu(tag->tag_len) + TAG_HDR_LEN; if (skb_tailroom(skb) < data_len) { _DEBUG_ERR("skb_tailroom() failed in add SID tag!\n"); return -1; @@ -134,42 +134,68 @@ static inline void __nat25_generate_ipv4_network_addr(unsigned char *networkAddr } static inline void __nat25_generate_ipx_network_addr_with_node(unsigned char *networkAddr, - unsigned int *ipxNetAddr, unsigned char *ipxNodeAddr) + __be32 *ipxNetAddr, unsigned char *ipxNodeAddr) { + union { + unsigned int f0; + unsigned char f1[IPX_NODE_LEN]; + } addr; + memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); networkAddr[0] = NAT25_IPX; - memcpy(networkAddr+1, (unsigned char *)ipxNetAddr, 4); + addr.f0 = be32_to_cpu(*ipxNetAddr); + memcpy(networkAddr+1, addr.f1, 4); memcpy(networkAddr+5, ipxNodeAddr, 6); } static inline void __nat25_generate_ipx_network_addr_with_socket(unsigned char *networkAddr, - unsigned int *ipxNetAddr, unsigned short *ipxSocketAddr) + __be32 *ipxNetAddr, __be16 *ipxSocketAddr) { + union { + unsigned int f0; + unsigned char f1[4]; + } addr; + memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); networkAddr[0] = NAT25_IPX; - memcpy(networkAddr+1, (unsigned char *)ipxNetAddr, 4); - memcpy(networkAddr+5, (unsigned char *)ipxSocketAddr, 2); + addr.f0 = be32_to_cpu(*ipxNetAddr); + memcpy(networkAddr+1, addr.f1, 4); + addr.f0 ^= addr.f0; + addr.f0 = be16_to_cpu(*ipxSocketAddr); + memcpy(networkAddr+5, addr.f1, 2); } static inline void __nat25_generate_apple_network_addr(unsigned char *networkAddr, - unsigned short *network, unsigned char *node) + __be16 *network, unsigned char *node) { + union { + unsigned short f0; + unsigned char f1[2]; + } addr; + memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); networkAddr[0] = NAT25_APPLE; - memcpy(networkAddr+1, (unsigned char *)network, 2); + addr.f0 = be16_to_cpu(*network); + memcpy(networkAddr+1, addr.f1, 2); networkAddr[3] = *node; } static inline void __nat25_generate_pppoe_network_addr(unsigned char *networkAddr, - unsigned char *ac_mac, unsigned short *sid) + unsigned char *ac_mac, __be16 *sid) { + union { + unsigned short f0; + unsigned char f1[2]; + } addr; + memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN); networkAddr[0] = NAT25_PPPOE; - memcpy(networkAddr+1, (unsigned char *)sid, 2); + addr.f0 = be16_to_cpu(*sid); + memcpy(networkAddr+1, addr.f1, 2); memcpy(networkAddr+3, (unsigned char *)ac_mac, 6); } -- 2.7.4