- patches.arch/x86_mce_intel_decode_physical_address.patch:
[linux-flexiantxendom0-3.2.10.git] / drivers / staging / rt2860 / sta_ioctl.c
index de4b627..6b8268d 100644 (file)
@@ -608,7 +608,6 @@ int rt_ioctl_siwap(struct net_device *dev,
        /* Prevent to connect AP again in STAMlmePeriodicExec */
        pAdapter->MlmeAux.AutoReconnectSsidLen = 32;
 
-       memset(Bssid, 0, MAC_ADDR_LEN);
        memcpy(Bssid, ap_addr->sa_data, MAC_ADDR_LEN);
        MlmeEnqueue(pAdapter,
                    MLME_CNTL_STATE_MACHINE,
@@ -1047,8 +1046,7 @@ int rt_ioctl_giwscan(struct net_device *dev,
                        if (tmpRate == 0x6c
                            && pAdapter->ScanTab.BssEntry[i].HtCapabilityLen >
                            0) {
-                               int rate_count =
-                                   sizeof(ralinkrate) / sizeof(__s32);
+                               int rate_count = ARRAY_SIZE(ralinkrate);
                                struct rt_ht_cap_info capInfo =
                                    pAdapter->ScanTab.BssEntry[i].HtCapability.
                                    HtCapInfo;
@@ -1061,10 +1059,11 @@ int rt_ioctl_giwscan(struct net_device *dev,
                                int rate_index =
                                    12 + ((u8)capInfo.ChannelWidth * 24) +
                                    ((u8)shortGI * 48) + ((u8)maxMCS);
+
                                if (rate_index < 0)
                                        rate_index = 0;
-                               if (rate_index > rate_count)
-                                       rate_index = rate_count;
+                               if (rate_index >= rate_count)
+                                       rate_index = rate_count - 1;
                                iwe.u.bitrate.value =
                                    ralinkrate[rate_index] * 500000;
                        }
@@ -2338,7 +2337,7 @@ int rt_ioctl_giwrate(struct net_device *dev,
 */
        GET_PAD_FROM_NET_DEV(pAd, dev);
 
-       rate_count = sizeof(ralinkrate) / sizeof(__s32);
+       rate_count = ARRAY_SIZE(ralinkrate);
        /*check if the interface is down */
        if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE)) {
                DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
@@ -2369,8 +2368,8 @@ int rt_ioctl_giwrate(struct net_device *dev,
        if (rate_index < 0)
                rate_index = 0;
 
-       if (rate_index > rate_count)
-               rate_index = rate_count;
+       if (rate_index >= rate_count)
+               rate_index = rate_count - 1;
 
        wrqu->bitrate.value = ralinkrate[rate_index] * 500000;
        wrqu->bitrate.disabled = 0;
@@ -2523,6 +2522,8 @@ int rt28xx_sta_ioctl(IN struct net_device *net_dev,
                        Status =
                            copy_to_user(erq->pointer, pAd->nickname,
                                         erq->length);
+                       if (Status)
+                               Status = -EFAULT;
                        break;
                }
        case SIOCGIWRATE:       /*get default bit rate (bps) */