提交 40fbb290 编写于 作者: R Roland Vossen 提交者: Greg Kroah-Hartman

staging: brcm80211: sparse endianness warnings on dongle events

Structures received from dongle have been annotated.
Reported-by: NJohannes Berg <johannes@sipsolutions.net>
Reviewed-by: NArend van Spriel <arend@broadcom.com>
Reviewed-by: NFranky Lin <frankyl@broadcom.com>
Signed-off-by: NFranky Lin <frankyl@broadcom.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 e0f4c674
...@@ -134,13 +134,13 @@ ...@@ -134,13 +134,13 @@
#define BRCMF_EVENT_MSG_GROUP 0x04 #define BRCMF_EVENT_MSG_GROUP 0x04
struct brcmf_event_msg { struct brcmf_event_msg {
u16 version; __be16 version;
u16 flags; __be16 flags;
u32 event_type; __be32 event_type;
u32 status; __be32 status;
u32 reason; __be32 reason;
u32 auth_type; __be32 auth_type;
u32 datalen; __be32 datalen;
u8 addr[ETH_ALEN]; u8 addr[ETH_ALEN];
char ifname[IFNAMSIZ]; char ifname[IFNAMSIZ];
} __packed; } __packed;
......
...@@ -322,7 +322,8 @@ brcmf_proto_ioctl(struct brcmf_pub *drvr, int ifidx, struct brcmf_ioctl *ioc, ...@@ -322,7 +322,8 @@ brcmf_proto_ioctl(struct brcmf_pub *drvr, int ifidx, struct brcmf_ioctl *ioc,
/* Intercept the wme_dp ioctl here */ /* Intercept the wme_dp ioctl here */
if (!ret && ioc->cmd == BRCMF_C_SET_VAR && if (!ret && ioc->cmd == BRCMF_C_SET_VAR &&
!strcmp(ioc->buf, "wme_dp")) { !strcmp(ioc->buf, "wme_dp")) {
int slen, val = 0; int slen;
__le32 val = 0;
slen = strlen("wme_dp") + 1; slen = strlen("wme_dp") + 1;
if (len >= (int)(slen + sizeof(int))) if (len >= (int)(slen + sizeof(int)))
......
...@@ -53,15 +53,15 @@ static const char brcmf_version[] = ...@@ -53,15 +53,15 @@ static const char brcmf_version[] =
struct msgtrace_hdr { struct msgtrace_hdr {
u8 version; u8 version;
u8 spare; u8 spare;
u16 len; /* Len of the trace */ __be16 len; /* Len of the trace */
u32 seqnum; /* Sequence number of message. Useful __be32 seqnum; /* Sequence number of message. Useful
* if the messsage has been lost * if the messsage has been lost
* because of DMA error or a bus reset * because of DMA error or a bus reset
* (ex: SDIO Func2) * (ex: SDIO Func2)
*/ */
u32 discarded_bytes; /* Number of discarded bytes because of __be32 discarded_bytes; /* Number of discarded bytes because of
trace overflow */ trace overflow */
u32 discarded_printf; /* Number of discarded printf __be32 discarded_printf; /* Number of discarded printf
because of trace overflow */ because of trace overflow */
} __packed; } __packed;
...@@ -401,7 +401,7 @@ brcmf_c_show_host_event(struct brcmf_event_msg *event, void *event_data) ...@@ -401,7 +401,7 @@ brcmf_c_show_host_event(struct brcmf_event_msg *event, void *event_data)
case BRCMF_E_RSSI: case BRCMF_E_RSSI:
brcmf_dbg(EVENT, "MACEVENT: %s %d\n", brcmf_dbg(EVENT, "MACEVENT: %s %d\n",
event_name, be32_to_cpu(*((int *)event_data))); event_name, be32_to_cpu(*((__be32 *)event_data)));
break; break;
default: default:
...@@ -498,14 +498,15 @@ brcmf_c_host_event(struct brcmf_info *drvr_priv, int *ifidx, void *pktdata, ...@@ -498,14 +498,15 @@ brcmf_c_host_event(struct brcmf_info *drvr_priv, int *ifidx, void *pktdata,
/* put it back to BRCMF_E_NDIS_LINK */ /* put it back to BRCMF_E_NDIS_LINK */
if (type == BRCMF_E_NDIS_LINK) { if (type == BRCMF_E_NDIS_LINK) {
u32 temp; u32 temp1;
__be32 temp2;
temp = get_unaligned_be32(&event->event_type); temp1 = get_unaligned_be32(&event->event_type);
brcmf_dbg(TRACE, "Converted to WLC_E_LINK type %d\n", brcmf_dbg(TRACE, "Converted to WLC_E_LINK type %d\n",
temp); temp1);
temp = be32_to_cpu(BRCMF_E_NDIS_LINK); temp2 = cpu_to_be32(BRCMF_E_NDIS_LINK);
memcpy((void *)(&pvt_data->msg.event_type), &temp, memcpy((void *)(&pvt_data->msg.event_type), &temp2,
sizeof(pvt_data->msg.event_type)); sizeof(pvt_data->msg.event_type));
} }
break; break;
......
...@@ -63,10 +63,10 @@ struct brcmf_trap { ...@@ -63,10 +63,10 @@ struct brcmf_trap {
#define CBUF_LEN (128) #define CBUF_LEN (128)
struct rte_log { struct rte_log_le {
u32 buf; /* Can't be pointer on (64-bit) hosts */ __le32 buf; /* Can't be pointer on (64-bit) hosts */
uint buf_size; __le32 buf_size;
uint idx; __le32 idx;
char *_buf_compat; /* Redundant pointer for backward compat. */ char *_buf_compat; /* Redundant pointer for backward compat. */
}; };
...@@ -89,7 +89,7 @@ struct rte_console { ...@@ -89,7 +89,7 @@ struct rte_console {
* Output will be lost if the output wraps around faster than the host * Output will be lost if the output wraps around faster than the host
* polls. * polls.
*/ */
struct rte_log log; struct rte_log_le log_le;
/* Console input line buffer /* Console input line buffer
* Characters are read one at a time into cbuf * Characters are read one at a time into cbuf
...@@ -512,7 +512,7 @@ struct sdpcmd_regs { ...@@ -512,7 +512,7 @@ struct sdpcmd_regs {
struct brcmf_console { struct brcmf_console {
uint count; /* Poll interval msec counter */ uint count; /* Poll interval msec counter */
uint log_addr; /* Log struct address (fixed) */ uint log_addr; /* Log struct address (fixed) */
struct rte_log log; /* Log struct (host copy) */ struct rte_log_le log_le; /* Log struct (host copy) */
uint bufsize; /* Size of log buffer */ uint bufsize; /* Size of log buffer */
u8 *buf; /* Log buffer (host copy) */ u8 *buf; /* Log buffer (host copy) */
uint last; /* Last buffer read index */ uint last; /* Last buffer read index */
...@@ -3153,21 +3153,21 @@ static int brcmf_sdbrcm_readconsole(struct brcmf_bus *bus) ...@@ -3153,21 +3153,21 @@ static int brcmf_sdbrcm_readconsole(struct brcmf_bus *bus)
return 0; return 0;
/* Read console log struct */ /* Read console log struct */
addr = bus->console_addr + offsetof(struct rte_console, log); addr = bus->console_addr + offsetof(struct rte_console, log_le);
rv = brcmf_sdbrcm_membytes(bus, false, addr, (u8 *)&c->log, rv = brcmf_sdbrcm_membytes(bus, false, addr, (u8 *)&c->log_le,
sizeof(c->log)); sizeof(c->log_le));
if (rv < 0) if (rv < 0)
return rv; return rv;
/* Allocate console buffer (one time only) */ /* Allocate console buffer (one time only) */
if (c->buf == NULL) { if (c->buf == NULL) {
c->bufsize = le32_to_cpu(c->log.buf_size); c->bufsize = le32_to_cpu(c->log_le.buf_size);
c->buf = kmalloc(c->bufsize, GFP_ATOMIC); c->buf = kmalloc(c->bufsize, GFP_ATOMIC);
if (c->buf == NULL) if (c->buf == NULL)
return -ENOMEM; return -ENOMEM;
} }
idx = le32_to_cpu(c->log.idx); idx = le32_to_cpu(c->log_le.idx);
/* Protect against corrupt value */ /* Protect against corrupt value */
if (idx > c->bufsize) if (idx > c->bufsize)
...@@ -3179,7 +3179,7 @@ static int brcmf_sdbrcm_readconsole(struct brcmf_bus *bus) ...@@ -3179,7 +3179,7 @@ static int brcmf_sdbrcm_readconsole(struct brcmf_bus *bus)
return 0; return 0;
/* Read the console buffer */ /* Read the console buffer */
addr = le32_to_cpu(c->log.buf); addr = le32_to_cpu(c->log_le.buf);
rv = brcmf_sdbrcm_membytes(bus, false, addr, c->buf, c->bufsize); rv = brcmf_sdbrcm_membytes(bus, false, addr, c->buf, c->bufsize);
if (rv < 0) if (rv < 0)
return rv; return rv;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册