wifi: mac80211: check link exists before use
authorJohannes Berg <johannes.berg@intel.com>
Fri, 1 Mar 2024 18:36:33 +0000 (19:36 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 4 Mar 2024 13:24:15 +0000 (14:24 +0100)
If the assoc link doesn't exist yet at this point, we
cannot use it yet. This isn't normally the case, but
e.g. in case of FT-DS (or just broken userspace) the
link might not be set up yet and will only be created
later in this function. Check that the link exists.

Fixes: 310c8387c638 ("wifi: mac80211: clean up connection process")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/r/3151f5d0-c18f-413d-b34b-b94f095b947c@moroto.mountain
Reviewed-by: Miriam Rachel Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240301193633.c886d300e90a.Ie1d5e23b2a033d934d343c37249f6f4dfddcc5fe@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/mlme.c

index 89c4165f2753000e53406ecf9f93ba3edb0347b8..c60d23da91fe3e08e35eaf808830d1dbb8e89186 100644 (file)
@@ -8173,7 +8173,7 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
                                eth_random_addr(assoc_data->link[i].addr);
                        sband = local->hw.wiphy->bands[link_cbss->channel->band];
 
-                       if (match_auth && i == assoc_link_id)
+                       if (match_auth && i == assoc_link_id && link)
                                assoc_data->link[i].conn = link->u.mgd.conn;
                        else
                                assoc_data->link[i].conn =