#include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/if_ether.h>
+#include <linux/nospec.h>
 
 #include "core.h"
 #include "bus.h"
 {
        struct qtnf_wmac *mac = NULL;
 
-       if (unlikely(macid >= QTNF_MAX_MAC)) {
+       if (macid >= QTNF_MAX_MAC) {
                pr_err("invalid MAC index %u\n", macid);
                return NULL;
        }
 
+       macid = array_index_nospec(macid, QTNF_MAX_MAC);
        mac = bus->mac[macid];
 
        if (unlikely(!mac)) {
 
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/slab.h>
+#include <linux/nospec.h>
 
 #include "cfg80211.h"
 #include "core.h"
        int ret = -1;
        u16 event_id;
        u16 event_len;
+       u8 vifid;
 
        event = (const struct qlink_event *)event_skb->data;
        event_id = le16_to_cpu(event->event_id);
        event_len = le16_to_cpu(event->mhdr.len);
 
-       if (likely(event->vifid < QTNF_MAX_INTF)) {
-               vif = &mac->iflist[event->vifid];
-       } else {
+       if (event->vifid >= QTNF_MAX_INTF) {
                pr_err("invalid vif(%u)\n", event->vifid);
                return -EINVAL;
        }
 
+       vifid = array_index_nospec(event->vifid, QTNF_MAX_INTF);
+       vif = &mac->iflist[vifid];
+
        switch (event_id) {
        case QLINK_EVENT_STA_ASSOCIATED:
                ret = qtnf_event_handle_sta_assoc(mac, vif, (const void *)event,