iwlwifi: pcie: check iwl_pcie_txq_build_tfd() 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:51 +0000 (10:25 +0300)
If we use the iwl_pcie_txq_build_tfd() 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.

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.c

index 67820bfaba640cf44fff42ad4089230bd46ce191..f227b91098c9812715399f7a578d25cafa09fdc9 100644 (file)
@@ -2013,6 +2013,8 @@ static int iwl_fill_data_tbs(struct iwl_trans *trans, struct sk_buff *skb,
                        return -EINVAL;
                tb_idx = iwl_pcie_txq_build_tfd(trans, txq, tb_phys,
                                                skb_frag_size(frag), false);
+               if (tb_idx < 0)
+                       return tb_idx;
 
                out_meta->tbs |= BIT(tb_idx);
        }