Search Linux Wireless

[bug report] mac80211: determine chandef from HE 6 GHz operation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux