iwlwifi: pcie gen2: check iwl_pcie_gen2_set_tb() return value
authorJohannes Berg <johannes.berg@intel.com>
Mon, 18 Jun 2018 07:53:36 +0000 (09:53 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Sat, 6 Oct 2018 07:25:50 +0000 (10:25 +0300)
If we use the iwl_pcie_gen2_set_tb() return value for BIT(),
we should validate that it's not going to be negative, so do
the check and bail out if we hit an error. We shouldn't, as
we check if it'll fit beforehand, but better be safe.

Fixes: ab6c644539e9 ("iwlwifi: pcie: copy TX functions to new transport")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c

index ba9d37bed4c2bccaab80579655c25d89c38cfb82..b71cf55480fce7a5a4be7fbf2543036146b97733 100644 (file)
@@ -438,6 +438,8 @@ static int iwl_pcie_gen2_tx_add_frags(struct iwl_trans *trans,
                        return -ENOMEM;
                tb_idx = iwl_pcie_gen2_set_tb(trans, tfd, tb_phys,
                                              skb_frag_size(frag));
+               if (tb_idx < 0)
+                       return tb_idx;
 
                out_meta->tbs |= BIT(tb_idx);
        }