wifi: iwlwifi: mvm: Add NULL check before dereferencing the pointer
authorMukesh Sisodiya <mukesh.sisodiya@intel.com>
Wed, 14 Jun 2023 12:50:08 +0000 (15:50 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 19 Jun 2023 10:05:24 +0000 (12:05 +0200)
While vif pointers are protected by the corresponding "*active"
fields, static checkers can get confused sometimes. Add an explicit
check.

Signed-off-by: Mukesh Sisodiya <mukesh.sisodiya@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230614154951.78749ae91fb5.Id3c05d13eeee6638f0930f750e93fb928d5c9dee@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/power.c

index ac1dae52556f8b632d2126dd4a79845f70079965..19839cc44eb3d86328f58929a0eebb5bdd5df521 100644 (file)
@@ -647,30 +647,32 @@ static void iwl_mvm_power_set_pm(struct iwl_mvm *mvm,
                return;
 
        /* enable PM on bss if bss stand alone */
-       if (vifs->bss_active && !vifs->p2p_active && !vifs->ap_active) {
+       if (bss_mvmvif && vifs->bss_active && !vifs->p2p_active &&
+           !vifs->ap_active) {
                bss_mvmvif->pm_enabled = true;
                return;
        }
 
        /* enable PM on p2p if p2p stand alone */
-       if (vifs->p2p_active && !vifs->bss_active && !vifs->ap_active) {
+       if (p2p_mvmvif && vifs->p2p_active && !vifs->bss_active &&
+           !vifs->ap_active) {
                p2p_mvmvif->pm_enabled = true;
                return;
        }
 
-       if (vifs->bss_active && vifs->p2p_active)
+       if (p2p_mvmvif && bss_mvmvif && vifs->bss_active && vifs->p2p_active)
                client_same_channel =
                        iwl_mvm_have_links_same_channel(bss_mvmvif, p2p_mvmvif);
 
-       if (vifs->bss_active && vifs->ap_active)
+       if (bss_mvmvif && ap_mvmvif && vifs->bss_active && vifs->ap_active)
                ap_same_channel =
                        iwl_mvm_have_links_same_channel(bss_mvmvif, ap_mvmvif);
 
        /* clients are not stand alone: enable PM if DCM */
        if (!(client_same_channel || ap_same_channel)) {
-               if (vifs->bss_active)
+               if (bss_mvmvif && vifs->bss_active)
                        bss_mvmvif->pm_enabled = true;
-               if (vifs->p2p_active)
+               if (p2p_mvmvif && vifs->p2p_active)
                        p2p_mvmvif->pm_enabled = true;
                return;
        }