Message ID | 20220401233802.1710547-1-trix@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Gregory Greenman |
Headers | show |
Series | iwlwifi: fw: move memset before early return | expand |
On Fri, Apr 1, 2022 at 4:38 PM Tom Rix <trix@redhat.com> wrote: > > Clang static analysis reports this representative issue > dbg.c:1455:6: warning: Branch condition evaluates to > a garbage value > if (!rxf_data.size) > ^~~~~~~~~~~~~~ > > This check depends on iwl_ini_get_rxf_data() to clear > rxf_data but the function can return early without > doing the clear. So move the memset before the early > return. > > Fixes: cc9b6012d34b ("iwlwifi: yoyo: use hweight_long instead of bit manipulating") > Signed-off-by: Tom Rix <trix@redhat.com> Conditional initialization in a helper is a pretty dangerous pattern. How about we move the memset to the two callers of iwl_ini_get_rxf_data? > --- > drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c > index abf49022edbe..666de922af61 100644 > --- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c > +++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c > @@ -1388,13 +1388,13 @@ static void iwl_ini_get_rxf_data(struct iwl_fw_runtime *fwrt, > if (!data) > return; > > + memset(data, 0, sizeof(*data)); > + > /* make sure only one bit is set in only one fid */ > if (WARN_ONCE(hweight_long(fid1) + hweight_long(fid2) != 1, > "fid1=%x, fid2=%x\n", fid1, fid2)) > return; > > - memset(data, 0, sizeof(*data)); > - > if (fid1) { > fifo_idx = ffs(fid1) - 1; > if (WARN_ONCE(fifo_idx >= MAX_NUM_LMAC, "fifo_idx=%d\n", > -- > 2.27.0 >
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c index abf49022edbe..666de922af61 100644 --- a/drivers/net/wireless/intel/iwlwifi/fw/dbg.c +++ b/drivers/net/wireless/intel/iwlwifi/fw/dbg.c @@ -1388,13 +1388,13 @@ static void iwl_ini_get_rxf_data(struct iwl_fw_runtime *fwrt, if (!data) return; + memset(data, 0, sizeof(*data)); + /* make sure only one bit is set in only one fid */ if (WARN_ONCE(hweight_long(fid1) + hweight_long(fid2) != 1, "fid1=%x, fid2=%x\n", fid1, fid2)) return; - memset(data, 0, sizeof(*data)); - if (fid1) { fifo_idx = ffs(fid1) - 1; if (WARN_ONCE(fifo_idx >= MAX_NUM_LMAC, "fifo_idx=%d\n",
Clang static analysis reports this representative issue dbg.c:1455:6: warning: Branch condition evaluates to a garbage value if (!rxf_data.size) ^~~~~~~~~~~~~~ This check depends on iwl_ini_get_rxf_data() to clear rxf_data but the function can return early without doing the clear. So move the memset before the early return. Fixes: cc9b6012d34b ("iwlwifi: yoyo: use hweight_long instead of bit manipulating") Signed-off-by: Tom Rix <trix@redhat.com> --- drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)