Message ID | 20210225145953.404859-1-arnd@kernel.org |
---|---|
State | New |
Headers | show |
Series | [1/2] mt76: mt7915: fix unused 'mode' variable | expand |
Arnd Bergmann <arnd@kernel.org> writes: > From: Arnd Bergmann <arnd@arndb.de> > > clang points out a possible corner case in the mt7915_tm_set_tx_cont() > function if called with invalid arguments: > > drivers/net/wireless/mediatek/mt76/mt7915/testmode.c:593:2: warning: variable 'mode' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized] > default: > ^~~~~~~ > drivers/net/wireless/mediatek/mt76/mt7915/testmode.c:597:13: note: uninitialized use occurs here > rateval = mode << 6 | rate_idx; > ^~~~ > drivers/net/wireless/mediatek/mt76/mt7915/testmode.c:506:37: note: initialize the variable 'mode' to silence this warning > u8 rate_idx = td->tx_rate_idx, mode; > ^ > > Change it to return an error instead of continuing with invalid data > here. > > Fixes: 3f0caa3cbf94 ("mt76: mt7915: add support for continuous tx in testmode") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Felix, can I take these two to wireless-drivers? An ack would be good.
On Thu, Feb 25, 2021 at 03:59:14PM +0100, Arnd Bergmann wrote: > From: Arnd Bergmann <arnd@arndb.de> > > clang points out a possible corner case in the mt7915_tm_set_tx_cont() > function if called with invalid arguments: > > drivers/net/wireless/mediatek/mt76/mt7915/testmode.c:593:2: warning: variable 'mode' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized] > default: > ^~~~~~~ > drivers/net/wireless/mediatek/mt76/mt7915/testmode.c:597:13: note: uninitialized use occurs here > rateval = mode << 6 | rate_idx; > ^~~~ > drivers/net/wireless/mediatek/mt76/mt7915/testmode.c:506:37: note: initialize the variable 'mode' to silence this warning > u8 rate_idx = td->tx_rate_idx, mode; > ^ > > Change it to return an error instead of continuing with invalid data > here. > > Fixes: 3f0caa3cbf94 ("mt76: mt7915: add support for continuous tx in testmode") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- > drivers/net/wireless/mediatek/mt76/mt7915/testmode.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/testmode.c b/drivers/net/wireless/mediatek/mt76/mt7915/testmode.c > index 7fb2170a9561..aa629e1fb420 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt7915/testmode.c > +++ b/drivers/net/wireless/mediatek/mt76/mt7915/testmode.c > @@ -543,6 +543,7 @@ mt7915_tm_set_tx_cont(struct mt7915_phy *phy, bool en) > tx_cont->bw = CMD_CBW_20MHZ; > break; > default: > + return -EINVAL; Remove the break if we are adding a return? > break; > } > > @@ -591,6 +592,7 @@ mt7915_tm_set_tx_cont(struct mt7915_phy *phy, bool en) > mode = MT_PHY_TYPE_HE_MU; > break; > default: > + return -EINVAL; > break; > } > > -- > 2.29.2 >
On Thu, Feb 25, 2021 at 7:00 AM Arnd Bergmann <arnd@kernel.org> wrote: > > From: Arnd Bergmann <arnd@arndb.de> > > Clang points out a mistake in the error handling in > mt7921_mcu_tx_rate_report(), which tries to dereference a pointer that > cannot be initialized because of the error that is being handled: > > drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:409:3: warning: variable 'stats' is uninitialized when used here [-Wuninitialized] > stats->tx_rate = rate; > ^~~~~ > drivers/net/wireless/mediatek/mt76/mt7921/mcu.c:401:32: note: initialize the variable 'stats' to silence this warning > struct mt7921_sta_stats *stats; > ^ > Just remove the obviously incorrect line. Yeah, looks like perhaps a small mistake from when the driver was introduced. Thanks for the patch! Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> > > Fixes: 1c099ab44727 ("mt76: mt7921: add MCU support") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> > --- > drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c > index db125cd22b91..b5cc72e7e81c 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c > +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c > @@ -405,10 +405,8 @@ mt7921_mcu_tx_rate_report(struct mt7921_dev *dev, struct sk_buff *skb, > if (wlan_idx >= MT76_N_WCIDS) > return; > wcid = rcu_dereference(dev->mt76.wcid[wlan_idx]); > - if (!wcid) { > - stats->tx_rate = rate; > + if (!wcid) > return; > - } > > msta = container_of(wcid, struct mt7921_sta, wcid); > stats = &msta->stats; > -- > 2.29.2 >
Arnd Bergmann <arnd@kernel.org> wrote: > From: Arnd Bergmann <arnd@arndb.de> > > clang points out a possible corner case in the mt7915_tm_set_tx_cont() > function if called with invalid arguments: > > drivers/net/wireless/mediatek/mt76/mt7915/testmode.c:593:2: warning: variable 'mode' is used uninitialized whenever switch default is taken [-Wsometimes-uninitialized] > default: > ^~~~~~~ > drivers/net/wireless/mediatek/mt76/mt7915/testmode.c:597:13: note: uninitialized use occurs here > rateval = mode << 6 | rate_idx; > ^~~~ > drivers/net/wireless/mediatek/mt76/mt7915/testmode.c:506:37: note: initialize the variable 'mode' to silence this warning > u8 rate_idx = td->tx_rate_idx, mode; > ^ > > Change it to return an error instead of continuing with invalid data > here. > > Fixes: 3f0caa3cbf94 ("mt76: mt7915: add support for continuous tx in testmode") > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Please remove the break and send v2. Patch set to Changes Requested.
diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/testmode.c b/drivers/net/wireless/mediatek/mt76/mt7915/testmode.c index 7fb2170a9561..aa629e1fb420 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7915/testmode.c +++ b/drivers/net/wireless/mediatek/mt76/mt7915/testmode.c @@ -543,6 +543,7 @@ mt7915_tm_set_tx_cont(struct mt7915_phy *phy, bool en) tx_cont->bw = CMD_CBW_20MHZ; break; default: + return -EINVAL; break; } @@ -591,6 +592,7 @@ mt7915_tm_set_tx_cont(struct mt7915_phy *phy, bool en) mode = MT_PHY_TYPE_HE_MU; break; default: + return -EINVAL; break; }