linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [bug report] mac80211: determine chandef from HE 6 GHz operation
@ 2020-06-03  9:10 Dan Carpenter
  0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2020-06-03  9:10 UTC (permalink / raw)
  To: johannes.berg; +Cc: linux-wireless

Hello Johannes Berg,

The patch 57fa5e85d53c: "mac80211: determine chandef from HE 6 GHz
operation" from May 28, 2020, leads to the following static checker
warning:

	net/mac80211/mlme.c:302 ieee80211_determine_chantype()
	error: uninitialized symbol 'ret'.

net/mac80211/mlme.c
   144  static u32
   145  ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
   146                               struct ieee80211_supported_band *sband,
   147                               struct ieee80211_channel *channel,
   148                               u32 vht_cap_info,
   149                               const struct ieee80211_ht_operation *ht_oper,
   150                               const struct ieee80211_vht_operation *vht_oper,
   151                               const struct ieee80211_he_operation *he_oper,
   152                               struct cfg80211_chan_def *chandef, bool tracking)
   153  {
   154          struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
   155          struct cfg80211_chan_def vht_chandef;
   156          struct ieee80211_sta_ht_cap sta_ht_cap;
   157          u32 ht_cfreq, ret;
   158  
   159          memset(chandef, 0, sizeof(struct cfg80211_chan_def));
   160          chandef->chan = channel;
   161          chandef->width = NL80211_CHAN_WIDTH_20_NOHT;
   162          chandef->center_freq1 = channel->center_freq;
   163          chandef->freq1_offset = channel->freq_offset;
   164  
   165          if (channel->band == NL80211_BAND_6GHZ) {
   166                  if (!ieee80211_chandef_he_6ghz_oper(sdata, he_oper, chandef))
   167                          ret = IEEE80211_STA_DISABLE_HT |
   168                                IEEE80211_STA_DISABLE_VHT |
   169                                IEEE80211_STA_DISABLE_HE;

ret not initialized on else path.

   170                  vht_chandef = *chandef;
   171                  goto out;
                        ^^^^^^^^

   172          }
   173  
   174          memcpy(&sta_ht_cap, &sband->ht_cap, sizeof(sta_ht_cap));
   175          ieee80211_apply_htcap_overrides(sdata, &sta_ht_cap);

[ snip ]

   279          ret = 0;
   280  
   281  out:
   282          /*
   283           * When tracking the current AP, don't do any further checks if the
   284           * new chandef is identical to the one we're currently using for the
   285           * connection. This keeps us from playing ping-pong with regulatory,
   286           * without it the following can happen (for example):
   287           *  - connect to an AP with 80 MHz, world regdom allows 80 MHz
   288           *  - AP advertises regdom US
   289           *  - CRDA loads regdom US with 80 MHz prohibited (old database)
   290           *  - the code below detects an unsupported channel, downgrades, and
   291           *    we disconnect from the AP in the caller
   292           *  - disconnect causes CRDA to reload world regdomain and the game
   293           *    starts anew.
   294           * (see https://bugzilla.kernel.org/show_bug.cgi?id=70881)
   295           *
   296           * It seems possible that there are still scenarios with CSA or real
   297           * bandwidth changes where a this could happen, but those cases are
   298           * less common and wouldn't completely prevent using the AP.
   299           */
   300          if (tracking &&
   301              cfg80211_chandef_identical(chandef, &sdata->vif.bss_conf.chandef))
   302                  return ret;
                        ^^^^^^^^^^

   303  
   304          /* don't print the message below for VHT mismatch if VHT is disabled */
   305          if (ret & IEEE80211_STA_DISABLE_VHT)
   306                  vht_chandef = *chandef;

regards,
dan carpenter

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-06-03  9:10 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-03  9:10 [bug report] mac80211: determine chandef from HE 6 GHz operation Dan Carpenter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).