Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=8362cd413e8116306fafbaf414f0419db0595142
Commit:     8362cd413e8116306fafbaf414f0419db0595142
Parent:     c7fdf26995d5d6ebf1c3314ad001b9a4983c3f04
Author:     Dan Williams <[EMAIL PROTECTED]>
AuthorDate: Fri Aug 3 09:40:55 2007 -0400
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Wed Oct 10 16:50:17 2007 -0700

    [PATCH] libertas: fix sparse-reported problems
    
    A few fields being converted to the wrong sized type, and a few missed
    endian conversions.
    
    Signed-off-by: Dan Williams <[EMAIL PROTECTED]>
    Signed-off-by: John W. Linville <[EMAIL PROTECTED]>
---
 drivers/net/wireless/libertas/11d.c     |    2 +-
 drivers/net/wireless/libertas/cmdresp.c |    4 ++--
 drivers/net/wireless/libertas/debugfs.c |    2 +-
 drivers/net/wireless/libertas/if_usb.c  |   30 +++++++++++++-----------------
 drivers/net/wireless/libertas/rx.c      |    4 ++--
 drivers/net/wireless/libertas/wext.c    |    8 ++++----
 6 files changed, 23 insertions(+), 27 deletions(-)

diff --git a/drivers/net/wireless/libertas/11d.c 
b/drivers/net/wireless/libertas/11d.c
index 8b366ef..9cf0211 100644
--- a/drivers/net/wireless/libertas/11d.c
+++ b/drivers/net/wireless/libertas/11d.c
@@ -543,7 +543,7 @@ int libertas_cmd_802_11d_domain_info(wlan_private * priv,
                       nr_subband * sizeof(struct ieeetypes_subbandset));
 
                cmd->size = cpu_to_le16(sizeof(pdomaininfo->action) +
-                                            domain->header.len +
+                                            le16_to_cpu(domain->header.len) +
                                             sizeof(struct mrvlietypesheader) +
                                             S_DS_GEN);
        } else {
diff --git a/drivers/net/wireless/libertas/cmdresp.c 
b/drivers/net/wireless/libertas/cmdresp.c
index c43b272..4c36e63 100644
--- a/drivers/net/wireless/libertas/cmdresp.c
+++ b/drivers/net/wireless/libertas/cmdresp.c
@@ -812,8 +812,8 @@ int libertas_process_rx_command(wlan_private * priv)
 
        if (adapter->cur_cmd->cmdflags & CMD_F_HOSTCMD) {
                /* Copy the response back to response buffer */
-               memcpy(adapter->cur_cmd->pdata_buf, resp, resp->size);
-
+               memcpy(adapter->cur_cmd->pdata_buf, resp,
+                      le16_to_cpu(resp->size));
                adapter->cur_cmd->cmdflags &= ~CMD_F_HOSTCMD;
        }
 
diff --git a/drivers/net/wireless/libertas/debugfs.c 
b/drivers/net/wireless/libertas/debugfs.c
index 63e747a..6d95148 100644
--- a/drivers/net/wireless/libertas/debugfs.c
+++ b/drivers/net/wireless/libertas/debugfs.c
@@ -510,7 +510,7 @@ static u16 libertas_get_events_bitmap(wlan_private *priv)
                return 0;
        }
 
-       if (pcmdptr->command != CMD_RET(CMD_802_11_SUBSCRIBE_EVENT)) {
+       if (le16_to_cpu(pcmdptr->command) != 
CMD_RET(CMD_802_11_SUBSCRIBE_EVENT)) {
                lbs_pr_err("command response incorrect!\n");
                kfree(response_buf);
                return 0;
diff --git a/drivers/net/wireless/libertas/if_usb.c 
b/drivers/net/wireless/libertas/if_usb.c
index 53d4796..364eae3 100644
--- a/drivers/net/wireless/libertas/if_usb.c
+++ b/drivers/net/wireless/libertas/if_usb.c
@@ -639,11 +639,13 @@ static void if_usb_receive(struct urb *urb)
 
        int recvlength = urb->actual_length;
        u8 *recvbuff = NULL;
-       u32 recvtype;
+       u32 recvtype = 0;
 
        lbs_deb_enter(LBS_DEB_USB);
 
        if (recvlength) {
+               __le32 tmp;
+
                if (urb->status) {
                        lbs_deb_usbd(&cardp->udev->dev,
                                    "URB status is failed\n");
@@ -652,18 +654,14 @@ static void if_usb_receive(struct urb *urb)
                }
 
                recvbuff = skb->data + IPFIELD_ALIGN_OFFSET;
-               memcpy(&recvtype, recvbuff, sizeof(u32));
-               lbs_deb_usbd(&cardp->udev->dev,
-                           "Recv length = 0x%x\n", recvlength);
+               memcpy(&tmp, recvbuff, sizeof(u32));
+               recvtype = le32_to_cpu(tmp);
                lbs_deb_usbd(&cardp->udev->dev,
-                           "Receive type = 0x%X\n", recvtype);
-               recvtype = le32_to_cpu(recvtype);
-               lbs_deb_usbd(&cardp->udev->dev,
-                           "Receive type after = 0x%X\n", recvtype);
+                           "Recv length = 0x%x, Recv type = 0x%X\n",
+                           recvlength, recvtype);
        } else if (urb->status)
                goto rx_exit;
 
-
        switch (recvtype) {
        case CMD_TYPE_DATA:
                process_cmdtypedata(recvlength, skb, cardp, priv);
@@ -691,6 +689,8 @@ static void if_usb_receive(struct urb *urb)
                spin_unlock(&priv->adapter->driver_lock);
                goto rx_exit;
        default:
+               lbs_deb_usbd(&cardp->udev->dev, "Unknown command type 0x%X\n",
+                            recvtype);
                kfree_skb(skb);
                break;
        }
@@ -711,21 +711,19 @@ rx_exit:
  */
 static int if_usb_host_to_card(wlan_private * priv, u8 type, u8 * payload, u16 
nb)
 {
-       int ret = -1;
-       u32 tmp;
        struct usb_card_rec *cardp = (struct usb_card_rec *)priv->card;
 
        lbs_deb_usbd(&cardp->udev->dev,"*** type = %u\n", type);
        lbs_deb_usbd(&cardp->udev->dev,"size after = %d\n", nb);
 
        if (type == MVMS_CMD) {
-               tmp = cpu_to_le32(CMD_TYPE_REQUEST);
+               __le32 tmp = cpu_to_le32(CMD_TYPE_REQUEST);
                priv->dnld_sent = DNLD_CMD_SENT;
                memcpy(cardp->bulk_out_buffer, (u8 *) & tmp,
                       MESSAGE_HEADER_LEN);
 
        } else {
-               tmp = cpu_to_le32(CMD_TYPE_DATA);
+               __le32 tmp = cpu_to_le32(CMD_TYPE_DATA);
                priv->dnld_sent = DNLD_DATA_SENT;
                memcpy(cardp->bulk_out_buffer, (u8 *) & tmp,
                       MESSAGE_HEADER_LEN);
@@ -733,10 +731,8 @@ static int if_usb_host_to_card(wlan_private * priv, u8 
type, u8 * payload, u16 n
 
        memcpy((cardp->bulk_out_buffer + MESSAGE_HEADER_LEN), payload, nb);
 
-       ret =
-           usb_tx_block(priv, cardp->bulk_out_buffer, nb + MESSAGE_HEADER_LEN);
-
-       return ret;
+       return usb_tx_block(priv, cardp->bulk_out_buffer,
+                           nb + MESSAGE_HEADER_LEN);
 }
 
 /* called with adapter->driver_lock held */
diff --git a/drivers/net/wireless/libertas/rx.c 
b/drivers/net/wireless/libertas/rx.c
index 09def94..0420e5b 100644
--- a/drivers/net/wireless/libertas/rx.c
+++ b/drivers/net/wireless/libertas/rx.c
@@ -370,8 +370,8 @@ static int process_rxed_802_11_packet(wlan_private * priv, 
struct sk_buff *skb)
                radiotap_hdr.hdr.it_version = 0;
                /* XXX must check this value for pad */
                radiotap_hdr.hdr.it_pad = 0;
-               radiotap_hdr.hdr.it_len = sizeof(struct rx_radiotap_hdr);
-               radiotap_hdr.hdr.it_present = RX_RADIOTAP_PRESENT;
+               radiotap_hdr.hdr.it_len = cpu_to_le16 (sizeof(struct 
rx_radiotap_hdr));
+               radiotap_hdr.hdr.it_present = cpu_to_le32 (RX_RADIOTAP_PRESENT);
                /* unknown values */
                radiotap_hdr.flags = 0;
                radiotap_hdr.chan_freq = 0;
diff --git a/drivers/net/wireless/libertas/wext.c 
b/drivers/net/wireless/libertas/wext.c
index 15395bf..3f62822 100644
--- a/drivers/net/wireless/libertas/wext.c
+++ b/drivers/net/wireless/libertas/wext.c
@@ -872,7 +872,7 @@ static struct iw_statistics *wlan_get_wireless_stats(struct 
net_device *dev)
        /* Quality by TX errors */
        priv->wstats.discard.retries = priv->stats.tx_errors;
 
-       tx_retries = le16_to_cpu(adapter->logmsg.retry);
+       tx_retries = le32_to_cpu(adapter->logmsg.retry);
 
        if (tx_retries > 75)
                tx_qual = (90 - tx_retries) * POOR / 15;
@@ -888,10 +888,10 @@ static struct iw_statistics 
*wlan_get_wireless_stats(struct net_device *dev)
                    (PERFECT - VERY_GOOD) / 50 + VERY_GOOD;
        quality = min(quality, tx_qual);
 
-       priv->wstats.discard.code = 
le16_to_cpu(adapter->logmsg.wepundecryptable);
-       priv->wstats.discard.fragment = le16_to_cpu(adapter->logmsg.rxfrag);
+       priv->wstats.discard.code = 
le32_to_cpu(adapter->logmsg.wepundecryptable);
+       priv->wstats.discard.fragment = le32_to_cpu(adapter->logmsg.rxfrag);
        priv->wstats.discard.retries = tx_retries;
-       priv->wstats.discard.misc = le16_to_cpu(adapter->logmsg.ackfailure);
+       priv->wstats.discard.misc = le32_to_cpu(adapter->logmsg.ackfailure);
 
        /* Calculate quality */
        priv->wstats.qual.qual = min_t(u8, quality, 100);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to