提交 a5abdeaf 编写于 作者: H Harvey Harrison 提交者: Linus Torvalds

usb: use get/put_unaligned_* helpers

Signed-off-by: NHarvey Harrison <harvey.harrison@gmail.com>
Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
Cc: Alan Stern <stern@rowland.harvard.edu>
Cc: David Brownell <dbrownell@users.sourceforge.net>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 6b1e6f63
...@@ -305,8 +305,6 @@ enum { ...@@ -305,8 +305,6 @@ enum {
*/ */
#define FW_GET_BYTE(p) *((__u8 *) (p)) #define FW_GET_BYTE(p) *((__u8 *) (p))
#define FW_GET_WORD(p) le16_to_cpu(get_unaligned((__le16 *) (p)))
#define FW_GET_LONG(p) le32_to_cpu(get_unaligned((__le32 *) (p)))
#define FW_DIR "ueagle-atm/" #define FW_DIR "ueagle-atm/"
#define NB_MODEM 4 #define NB_MODEM 4
...@@ -621,7 +619,7 @@ static void uea_upload_pre_firmware(const struct firmware *fw_entry, void *conte ...@@ -621,7 +619,7 @@ static void uea_upload_pre_firmware(const struct firmware *fw_entry, void *conte
if (size < 4) if (size < 4)
goto err_fw_corrupted; goto err_fw_corrupted;
crc = FW_GET_LONG(pfw); crc = get_unaligned_le32(pfw);
pfw += 4; pfw += 4;
size -= 4; size -= 4;
if (crc32_be(0, pfw, size) != crc) if (crc32_be(0, pfw, size) != crc)
...@@ -640,7 +638,7 @@ static void uea_upload_pre_firmware(const struct firmware *fw_entry, void *conte ...@@ -640,7 +638,7 @@ static void uea_upload_pre_firmware(const struct firmware *fw_entry, void *conte
while (size > 3) { while (size > 3) {
u8 len = FW_GET_BYTE(pfw); u8 len = FW_GET_BYTE(pfw);
u16 add = FW_GET_WORD(pfw + 1); u16 add = get_unaligned_le16(pfw + 1);
size -= len + 3; size -= len + 3;
if (size < 0) if (size < 0)
...@@ -738,7 +736,7 @@ static int check_dsp_e1(u8 *dsp, unsigned int len) ...@@ -738,7 +736,7 @@ static int check_dsp_e1(u8 *dsp, unsigned int len)
for (i = 0; i < pagecount; i++) { for (i = 0; i < pagecount; i++) {
pageoffset = FW_GET_LONG(dsp + p); pageoffset = get_unaligned_le32(dsp + p);
p += 4; p += 4;
if (pageoffset == 0) if (pageoffset == 0)
...@@ -759,7 +757,7 @@ static int check_dsp_e1(u8 *dsp, unsigned int len) ...@@ -759,7 +757,7 @@ static int check_dsp_e1(u8 *dsp, unsigned int len)
return 1; return 1;
pp += 2; /* skip blockaddr */ pp += 2; /* skip blockaddr */
blocksize = FW_GET_WORD(dsp + pp); blocksize = get_unaligned_le16(dsp + pp);
pp += 2; pp += 2;
/* enough space for block data? */ /* enough space for block data? */
...@@ -928,7 +926,7 @@ static void uea_load_page_e1(struct work_struct *work) ...@@ -928,7 +926,7 @@ static void uea_load_page_e1(struct work_struct *work)
goto bad1; goto bad1;
p += 4 * pageno; p += 4 * pageno;
pageoffset = FW_GET_LONG(p); pageoffset = get_unaligned_le32(p);
if (pageoffset == 0) if (pageoffset == 0)
goto bad1; goto bad1;
...@@ -945,10 +943,10 @@ static void uea_load_page_e1(struct work_struct *work) ...@@ -945,10 +943,10 @@ static void uea_load_page_e1(struct work_struct *work)
bi.wOvlOffset = cpu_to_le16(ovl | 0x8000); bi.wOvlOffset = cpu_to_le16(ovl | 0x8000);
for (i = 0; i < blockcount; i++) { for (i = 0; i < blockcount; i++) {
blockaddr = FW_GET_WORD(p); blockaddr = get_unaligned_le16(p);
p += 2; p += 2;
blocksize = FW_GET_WORD(p); blocksize = get_unaligned_le16(p);
p += 2; p += 2;
bi.wSize = cpu_to_le16(blocksize); bi.wSize = cpu_to_le16(blocksize);
...@@ -1152,9 +1150,9 @@ static int uea_cmv_e1(struct uea_softc *sc, ...@@ -1152,9 +1150,9 @@ static int uea_cmv_e1(struct uea_softc *sc,
cmv.bDirection = E1_HOSTTOMODEM; cmv.bDirection = E1_HOSTTOMODEM;
cmv.bFunction = function; cmv.bFunction = function;
cmv.wIndex = cpu_to_le16(sc->cmv_dsc.e1.idx); cmv.wIndex = cpu_to_le16(sc->cmv_dsc.e1.idx);
put_unaligned(cpu_to_le32(address), &cmv.dwSymbolicAddress); put_unaligned_le32(address, &cmv.dwSymbolicAddress);
cmv.wOffsetAddress = cpu_to_le16(offset); cmv.wOffsetAddress = cpu_to_le16(offset);
put_unaligned(cpu_to_le32(data >> 16 | data << 16), &cmv.dwData); put_unaligned_le32(data >> 16 | data << 16, &cmv.dwData);
ret = uea_request(sc, UEA_E1_SET_BLOCK, UEA_MPTX_START, sizeof(cmv), &cmv); ret = uea_request(sc, UEA_E1_SET_BLOCK, UEA_MPTX_START, sizeof(cmv), &cmv);
if (ret < 0) if (ret < 0)
...@@ -1646,7 +1644,7 @@ static int request_cmvs(struct uea_softc *sc, ...@@ -1646,7 +1644,7 @@ static int request_cmvs(struct uea_softc *sc,
if (size < 5) if (size < 5)
goto err_fw_corrupted; goto err_fw_corrupted;
crc = FW_GET_LONG(data); crc = get_unaligned_le32(data);
data += 4; data += 4;
size -= 4; size -= 4;
if (crc32_be(0, data, size) != crc) if (crc32_be(0, data, size) != crc)
...@@ -1696,9 +1694,9 @@ static int uea_send_cmvs_e1(struct uea_softc *sc) ...@@ -1696,9 +1694,9 @@ static int uea_send_cmvs_e1(struct uea_softc *sc)
"please update your firmware\n"); "please update your firmware\n");
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
ret = uea_write_cmv_e1(sc, FW_GET_LONG(&cmvs_v1[i].address), ret = uea_write_cmv_e1(sc, get_unaligned_le32(&cmvs_v1[i].address),
FW_GET_WORD(&cmvs_v1[i].offset), get_unaligned_le16(&cmvs_v1[i].offset),
FW_GET_LONG(&cmvs_v1[i].data)); get_unaligned_le32(&cmvs_v1[i].data));
if (ret < 0) if (ret < 0)
goto out; goto out;
} }
...@@ -1706,9 +1704,9 @@ static int uea_send_cmvs_e1(struct uea_softc *sc) ...@@ -1706,9 +1704,9 @@ static int uea_send_cmvs_e1(struct uea_softc *sc)
struct uea_cmvs_v2 *cmvs_v2 = cmvs_ptr; struct uea_cmvs_v2 *cmvs_v2 = cmvs_ptr;
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
ret = uea_write_cmv_e1(sc, FW_GET_LONG(&cmvs_v2[i].address), ret = uea_write_cmv_e1(sc, get_unaligned_le32(&cmvs_v2[i].address),
(u16) FW_GET_LONG(&cmvs_v2[i].offset), (u16) get_unaligned_le32(&cmvs_v2[i].offset),
FW_GET_LONG(&cmvs_v2[i].data)); get_unaligned_le32(&cmvs_v2[i].data));
if (ret < 0) if (ret < 0)
goto out; goto out;
} }
...@@ -1759,10 +1757,10 @@ static int uea_send_cmvs_e4(struct uea_softc *sc) ...@@ -1759,10 +1757,10 @@ static int uea_send_cmvs_e4(struct uea_softc *sc)
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
ret = uea_write_cmv_e4(sc, 1, ret = uea_write_cmv_e4(sc, 1,
FW_GET_LONG(&cmvs_v2[i].group), get_unaligned_le32(&cmvs_v2[i].group),
FW_GET_LONG(&cmvs_v2[i].address), get_unaligned_le32(&cmvs_v2[i].address),
FW_GET_LONG(&cmvs_v2[i].offset), get_unaligned_le32(&cmvs_v2[i].offset),
FW_GET_LONG(&cmvs_v2[i].data)); get_unaligned_le32(&cmvs_v2[i].data));
if (ret < 0) if (ret < 0)
goto out; goto out;
} }
...@@ -1964,7 +1962,7 @@ static void uea_dispatch_cmv_e1(struct uea_softc *sc, struct intr_pkt *intr) ...@@ -1964,7 +1962,7 @@ static void uea_dispatch_cmv_e1(struct uea_softc *sc, struct intr_pkt *intr)
if (UEA_CHIP_VERSION(sc) == ADI930 if (UEA_CHIP_VERSION(sc) == ADI930
&& cmv->bFunction == E1_MAKEFUNCTION(2, 2)) { && cmv->bFunction == E1_MAKEFUNCTION(2, 2)) {
cmv->wIndex = cpu_to_le16(dsc->idx); cmv->wIndex = cpu_to_le16(dsc->idx);
put_unaligned(cpu_to_le32(dsc->address), &cmv->dwSymbolicAddress); put_unaligned_le32(dsc->address, &cmv->dwSymbolicAddress);
cmv->wOffsetAddress = cpu_to_le16(dsc->offset); cmv->wOffsetAddress = cpu_to_le16(dsc->offset);
} else } else
goto bad2; goto bad2;
...@@ -1978,11 +1976,11 @@ static void uea_dispatch_cmv_e1(struct uea_softc *sc, struct intr_pkt *intr) ...@@ -1978,11 +1976,11 @@ static void uea_dispatch_cmv_e1(struct uea_softc *sc, struct intr_pkt *intr)
/* in case of MEMACCESS */ /* in case of MEMACCESS */
if (le16_to_cpu(cmv->wIndex) != dsc->idx || if (le16_to_cpu(cmv->wIndex) != dsc->idx ||
le32_to_cpu(get_unaligned(&cmv->dwSymbolicAddress)) != dsc->address || get_unaligned_le32(&cmv->dwSymbolicAddress) != dsc->address ||
le16_to_cpu(cmv->wOffsetAddress) != dsc->offset) le16_to_cpu(cmv->wOffsetAddress) != dsc->offset)
goto bad2; goto bad2;
sc->data = le32_to_cpu(get_unaligned(&cmv->dwData)); sc->data = get_unaligned_le32(&cmv->dwData);
sc->data = sc->data << 16 | sc->data >> 16; sc->data = sc->data << 16 | sc->data >> 16;
wake_up_cmv_ack(sc); wake_up_cmv_ack(sc);
......
...@@ -280,7 +280,7 @@ static void acm_ctrl_irq(struct urb *urb) ...@@ -280,7 +280,7 @@ static void acm_ctrl_irq(struct urb *urb)
case USB_CDC_NOTIFY_SERIAL_STATE: case USB_CDC_NOTIFY_SERIAL_STATE:
newctrl = le16_to_cpu(get_unaligned((__le16 *) data)); newctrl = get_unaligned_le16(data);
if (acm->tty && !acm->clocal && (acm->ctrlin & ~newctrl & ACM_CTRL_DCD)) { if (acm->tty && !acm->clocal && (acm->ctrlin & ~newctrl & ACM_CTRL_DCD)) {
dbg("calling hangup"); dbg("calling hangup");
......
...@@ -127,7 +127,7 @@ goku_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc) ...@@ -127,7 +127,7 @@ goku_ep_enable(struct usb_ep *_ep, const struct usb_endpoint_descriptor *desc)
/* enabling the no-toggle interrupt mode would need an api hook */ /* enabling the no-toggle interrupt mode would need an api hook */
mode = 0; mode = 0;
max = le16_to_cpu(get_unaligned(&desc->wMaxPacketSize)); max = get_unaligned_le16(&desc->wMaxPacketSize);
switch (max) { switch (max) {
case 64: mode++; case 64: mode++;
case 32: mode++; case 32: mode++;
......
...@@ -183,14 +183,10 @@ gen_ndis_query_resp (int configNr, u32 OID, u8 *buf, unsigned buf_len, ...@@ -183,14 +183,10 @@ gen_ndis_query_resp (int configNr, u32 OID, u8 *buf, unsigned buf_len,
DBG("query OID %08x value, len %d:\n", OID, buf_len); DBG("query OID %08x value, len %d:\n", OID, buf_len);
for (i = 0; i < buf_len; i += 16) { for (i = 0; i < buf_len; i += 16) {
DBG("%03d: %08x %08x %08x %08x\n", i, DBG("%03d: %08x %08x %08x %08x\n", i,
le32_to_cpu(get_unaligned((__le32 *) get_unaligned_le32(&buf[i]),
&buf[i])), get_unaligned_le32(&buf[i + 4]),
le32_to_cpu(get_unaligned((__le32 *) get_unaligned_le32(&buf[i + 8]),
&buf[i + 4])), get_unaligned_le32(&buf[i + 12]));
le32_to_cpu(get_unaligned((__le32 *)
&buf[i + 8])),
le32_to_cpu(get_unaligned((__le32 *)
&buf[i + 12])));
} }
} }
...@@ -666,7 +662,7 @@ gen_ndis_query_resp (int configNr, u32 OID, u8 *buf, unsigned buf_len, ...@@ -666,7 +662,7 @@ gen_ndis_query_resp (int configNr, u32 OID, u8 *buf, unsigned buf_len,
break; break;
case OID_PNP_QUERY_POWER: case OID_PNP_QUERY_POWER:
DBG("%s: OID_PNP_QUERY_POWER D%d\n", __func__, DBG("%s: OID_PNP_QUERY_POWER D%d\n", __func__,
le32_to_cpu(get_unaligned((__le32 *)buf)) - 1); get_unaligned_le32(buf) - 1);
/* only suspend is a real power state, and /* only suspend is a real power state, and
* it can't be entered by OID_PNP_SET_POWER... * it can't be entered by OID_PNP_SET_POWER...
*/ */
...@@ -705,14 +701,10 @@ static int gen_ndis_set_resp (u8 configNr, u32 OID, u8 *buf, u32 buf_len, ...@@ -705,14 +701,10 @@ static int gen_ndis_set_resp (u8 configNr, u32 OID, u8 *buf, u32 buf_len,
DBG("set OID %08x value, len %d:\n", OID, buf_len); DBG("set OID %08x value, len %d:\n", OID, buf_len);
for (i = 0; i < buf_len; i += 16) { for (i = 0; i < buf_len; i += 16) {
DBG("%03d: %08x %08x %08x %08x\n", i, DBG("%03d: %08x %08x %08x %08x\n", i,
le32_to_cpu(get_unaligned((__le32 *) get_unaligned_le32(&buf[i]),
&buf[i])), get_unaligned_le32(&buf[i + 4]),
le32_to_cpu(get_unaligned((__le32 *) get_unaligned_le32(&buf[i + 8]),
&buf[i + 4])), get_unaligned_le32(&buf[i + 12]));
le32_to_cpu(get_unaligned((__le32 *)
&buf[i + 8])),
le32_to_cpu(get_unaligned((__le32 *)
&buf[i + 12])));
} }
} }
...@@ -726,8 +718,7 @@ static int gen_ndis_set_resp (u8 configNr, u32 OID, u8 *buf, u32 buf_len, ...@@ -726,8 +718,7 @@ static int gen_ndis_set_resp (u8 configNr, u32 OID, u8 *buf, u32 buf_len,
* PROMISCUOUS, DIRECTED, * PROMISCUOUS, DIRECTED,
* MULTICAST, ALL_MULTICAST, BROADCAST * MULTICAST, ALL_MULTICAST, BROADCAST
*/ */
*params->filter = (u16) le32_to_cpu(get_unaligned( *params->filter = (u16)get_unaligned_le32(buf);
(__le32 *)buf));
DBG("%s: OID_GEN_CURRENT_PACKET_FILTER %08x\n", DBG("%s: OID_GEN_CURRENT_PACKET_FILTER %08x\n",
__func__, *params->filter); __func__, *params->filter);
...@@ -777,7 +768,7 @@ static int gen_ndis_set_resp (u8 configNr, u32 OID, u8 *buf, u32 buf_len, ...@@ -777,7 +768,7 @@ static int gen_ndis_set_resp (u8 configNr, u32 OID, u8 *buf, u32 buf_len,
* resuming, Windows forces a reset, and then SET_POWER D0. * resuming, Windows forces a reset, and then SET_POWER D0.
* FIXME ... then things go batty; Windows wedges itself. * FIXME ... then things go batty; Windows wedges itself.
*/ */
i = le32_to_cpu(get_unaligned((__le32 *)buf)); i = get_unaligned_le32(buf);
DBG("%s: OID_PNP_SET_POWER D%d\n", __func__, i - 1); DBG("%s: OID_PNP_SET_POWER D%d\n", __func__, i - 1);
switch (i) { switch (i) {
case NdisDeviceStateD0: case NdisDeviceStateD0:
...@@ -1064,8 +1055,8 @@ int rndis_msg_parser (u8 configNr, u8 *buf) ...@@ -1064,8 +1055,8 @@ int rndis_msg_parser (u8 configNr, u8 *buf)
return -ENOMEM; return -ENOMEM;
tmp = (__le32 *) buf; tmp = (__le32 *) buf;
MsgType = le32_to_cpu(get_unaligned(tmp++)); MsgType = get_unaligned_le32(tmp++);
MsgLength = le32_to_cpu(get_unaligned(tmp++)); MsgLength = get_unaligned_le32(tmp++);
if (configNr >= RNDIS_MAX_CONFIGS) if (configNr >= RNDIS_MAX_CONFIGS)
return -ENOTSUPP; return -ENOTSUPP;
...@@ -1296,10 +1287,9 @@ int rndis_rm_hdr(struct sk_buff *skb) ...@@ -1296,10 +1287,9 @@ int rndis_rm_hdr(struct sk_buff *skb)
tmp++; tmp++;
/* DataOffset, DataLength */ /* DataOffset, DataLength */
if (!skb_pull(skb, le32_to_cpu(get_unaligned(tmp++)) if (!skb_pull(skb, get_unaligned_le32(tmp++) + 8))
+ 8 /* offset of DataOffset */))
return -EOVERFLOW; return -EOVERFLOW;
skb_trim(skb, le32_to_cpu(get_unaligned(tmp++))); skb_trim(skb, get_unaligned_le32(tmp++));
return 0; return 0;
} }
......
...@@ -74,7 +74,7 @@ static int utf8_to_utf16le(const char *s, __le16 *cp, unsigned len) ...@@ -74,7 +74,7 @@ static int utf8_to_utf16le(const char *s, __le16 *cp, unsigned len)
goto fail; goto fail;
} else } else
uchar = c; uchar = c;
put_unaligned (cpu_to_le16 (uchar), cp++); put_unaligned_le16(uchar, cp++);
count++; count++;
len--; len--;
} }
......
...@@ -770,7 +770,7 @@ static int ehci_hub_control ( ...@@ -770,7 +770,7 @@ static int ehci_hub_control (
if (status & ~0xffff) /* only if wPortChange is interesting */ if (status & ~0xffff) /* only if wPortChange is interesting */
#endif #endif
dbg_port (ehci, "GetStatus", wIndex + 1, temp); dbg_port (ehci, "GetStatus", wIndex + 1, temp);
put_unaligned(cpu_to_le32 (status), (__le32 *) buf); put_unaligned_le32(status, buf);
break; break;
case SetHubFeature: case SetHubFeature:
switch (wValue) { switch (wValue) {
......
...@@ -736,14 +736,14 @@ static int ohci_hub_control ( ...@@ -736,14 +736,14 @@ static int ohci_hub_control (
break; break;
case GetHubStatus: case GetHubStatus:
temp = roothub_status (ohci) & ~(RH_HS_CRWE | RH_HS_DRWE); temp = roothub_status (ohci) & ~(RH_HS_CRWE | RH_HS_DRWE);
put_unaligned(cpu_to_le32 (temp), (__le32 *) buf); put_unaligned_le32(temp, buf);
break; break;
case GetPortStatus: case GetPortStatus:
if (!wIndex || wIndex > ports) if (!wIndex || wIndex > ports)
goto error; goto error;
wIndex--; wIndex--;
temp = roothub_portstatus (ohci, wIndex); temp = roothub_portstatus (ohci, wIndex);
put_unaligned(cpu_to_le32 (temp), (__le32 *) buf); put_unaligned_le32(temp, buf);
#ifndef OHCI_VERBOSE_DEBUG #ifndef OHCI_VERBOSE_DEBUG
if (*(u16*)(buf+2)) /* only if wPortChange is interesting */ if (*(u16*)(buf+2)) /* only if wPortChange is interesting */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册