stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Johannes Berg <johannes.berg@intel.com>,
	Luca Coelho <luciano.coelho@intel.com>,
	Sasha Levin <sashal@kernel.org>,
	kvalo@kernel.org, davem@davemloft.net, kuba@kernel.org,
	linux-wireless@vger.kernel.org, netdev@vger.kernel.org
Subject: [PATCH AUTOSEL 5.10 080/116] iwlwifi: fix leaks/bad data after failed firmware load
Date: Mon, 17 Jan 2022 21:39:31 -0500	[thread overview]
Message-ID: <20220118024007.1950576-80-sashal@kernel.org> (raw)
In-Reply-To: <20220118024007.1950576-1-sashal@kernel.org>

From: Johannes Berg <johannes.berg@intel.com>

[ Upstream commit ab07506b0454bea606095951e19e72c282bfbb42 ]

If firmware load fails after having loaded some parts of the
firmware, e.g. the IML image, then this would leak. For the
host command list we'd end up running into a WARN on the next
attempt to load another firmware image.

Fix this by calling iwl_dealloc_ucode() on failures, and make
that also clear the data so we start fresh on the next round.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20211210110539.1f742f0eb58a.I1315f22f6aa632d94ae2069f85e1bca5e734dce0@changeid
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 drivers/net/wireless/intel/iwlwifi/iwl-drv.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
index be214f39f52be..4bdfd6afa7324 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
@@ -185,6 +185,9 @@ static void iwl_dealloc_ucode(struct iwl_drv *drv)
 
 	for (i = 0; i < IWL_UCODE_TYPE_MAX; i++)
 		iwl_free_fw_img(drv, drv->fw.img + i);
+
+	/* clear the data for the aborted load case */
+	memset(&drv->fw, 0, sizeof(drv->fw));
 }
 
 static int iwl_alloc_fw_desc(struct iwl_drv *drv, struct fw_desc *desc,
@@ -1365,6 +1368,7 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)
 	int i;
 	bool load_module = false;
 	bool usniffer_images = false;
+	bool failure = true;
 
 	fw->ucode_capa.max_probe_length = IWL_DEFAULT_MAX_PROBE_LENGTH;
 	fw->ucode_capa.standard_phy_calibration_size =
@@ -1634,6 +1638,7 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)
 				op->name, err);
 #endif
 	}
+	failure = false;
 	goto free;
 
  try_again:
@@ -1649,6 +1654,9 @@ static void iwl_req_fw_callback(const struct firmware *ucode_raw, void *context)
 	complete(&drv->request_firmware_complete);
 	device_release_driver(drv->trans->dev);
  free:
+	if (failure)
+		iwl_dealloc_ucode(drv);
+
 	if (pieces) {
 		for (i = 0; i < ARRAY_SIZE(pieces->img); i++)
 			kfree(pieces->img[i].sec);
-- 
2.34.1


  parent reply	other threads:[~2022-01-18  2:46 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-18  2:38 [PATCH AUTOSEL 5.10 001/116] Bluetooth: Fix debugfs entry leak in hci_register_dev() Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 002/116] fs: dlm: filter user dlm messages for kernel locks Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 003/116] libbpf: Validate that .BTF and .BTF.ext sections contain data Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 004/116] drm/lima: fix warning when CONFIG_DEBUG_SG=y & CONFIG_DMA_API_DEBUG=y Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 005/116] selftests/bpf: Fix bpf_object leak in skb_ctx selftest Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 006/116] ar5523: Fix null-ptr-deref with unexpected WDCMSG_TARGET_START reply Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 007/116] drm/bridge: dw-hdmi: handle ELD when DRM_BRIDGE_ATTACH_NO_CONNECTOR Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 008/116] drm/nouveau/pmu/gm200-: avoid touching PMU outside of DEVINIT/PREOS/ACR Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 009/116] media: atomisp: fix try_fmt logic Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 010/116] media: atomisp: set per-device's default mode Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 011/116] media: atomisp-ov2680: Fix ov2680_set_fmt() clobbering the exposure Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 012/116] ARM: shmobile: rcar-gen2: Add missing of_node_put() Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 013/116] batman-adv: allow netlink usage in unprivileged containers Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 014/116] media: atomisp: handle errors at sh_css_create_isp_params() Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 015/116] ath11k: Fix crash caused by uninitialized TX ring Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 016/116] usb: gadget: f_fs: Use stream_open() for endpoint files Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 017/116] drm: panel-orientation-quirks: Add quirk for the Lenovo Yoga Book X91F/L Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 018/116] HID: apple: Do not reset quirks when the Fn key is not found Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 019/116] media: b2c2: Add missing check in flexcop_pci_isr: Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 020/116] EDAC/synopsys: Use the quirk for version instead of ddr version Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 021/116] ARM: imx: rename DEBUG_IMX21_IMX27_UART to DEBUG_IMX27_UART Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 022/116] drm/amd/display: check top_pipe_to_program pointer Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 023/116] drm/amdgpu/display: set vblank_disable_immediate for DC Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 024/116] soc: ti: pruss: fix referenced node in error message Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 025/116] mlxsw: pci: Add shutdown method in PCI driver Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 026/116] drm/bridge: megachips: Ensure both bridges are probed before registration Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 027/116] tty: serial: imx: disable UCR4_OREN in .stop_rx() instead of .shutdown() Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 028/116] gpiolib: acpi: Do not set the IRQ type if the IRQ is already in use Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 029/116] HSI: core: Fix return freed object in hsi_new_client Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 030/116] crypto: jitter - consider 32 LSB for APT Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 031/116] mwifiex: Fix skb_over_panic in mwifiex_usb_recv() Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 032/116] rsi: Fix use-after-free in rsi_rx_done_handler() Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 033/116] rsi: Fix out-of-bounds read in rsi_read_pkt() Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 034/116] ath11k: Avoid NULL ptr access during mgmt tx cleanup Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 035/116] media: venus: avoid calling core_clk_setrate() concurrently during concurrent video sessions Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 036/116] ACPI / x86: Drop PWM2 device on Lenovo Yoga Book from always present table Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 037/116] ACPI: Change acpi_device_always_present() into acpi_device_override_status() Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 038/116] ACPI / x86: Allow specifying acpi_device_override_status() quirks by path Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 039/116] ACPI / x86: Add not-present quirk for the PCI0.SDHB.BRC1 device on the GPD win Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 040/116] arm64: dts: ti: j7200-main: Fix 'dtbs_check' serdes_ln_ctrl node Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 041/116] usb: uhci: add aspeed ast2600 uhci support Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 042/116] floppy: Add max size check for user space request Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 043/116] x86/mm: Flush global TLB when switching to trampoline page-table Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 044/116] drm: rcar-du: Fix CRTC timings when CMM is used Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 045/116] media: uvcvideo: Increase UVC_CTRL_CONTROL_TIMEOUT to 5 seconds Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 046/116] media: rcar-vin: Update format alignment constraints Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 047/116] media: saa7146: hexium_orion: Fix a NULL pointer dereference in hexium_attach() Sasha Levin
2022-01-18  2:38 ` [PATCH AUTOSEL 5.10 048/116] media: m920x: don't use stack on USB reads Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 049/116] thunderbolt: Runtime PM activate both ends of the device link Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 050/116] iwlwifi: mvm: synchronize with FW after multicast commands Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 051/116] iwlwifi: mvm: avoid clearing a just saved session protection id Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 052/116] net: dsa: ocelot: felix: Remove requirement for PCS in felix devices Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 053/116] ath11k: avoid deadlock by change ieee80211_queue_work for regd_update_work Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 054/116] ath10k: Fix tx hanging Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 055/116] net-sysfs: update the queue counts in the unregistration path Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 056/116] net: phy: prefer 1000baseT over 1000baseKX Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 057/116] gpio: aspeed: Convert aspeed_gpio.lock to raw_spinlock Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 058/116] selftests/ftrace: make kprobe profile testcase description unique Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 059/116] net: Enable neighbor sysctls that is save for userns root Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 060/116] ath11k: Avoid false DEADLOCK warning reported by lockdep Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 061/116] x86/mce: Allow instrumentation during task work queueing Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 062/116] x86/mce: Mark mce_panic() noinstr Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 063/116] x86/mce: Mark mce_end() noinstr Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 064/116] x86/mce: Mark mce_read_aux() noinstr Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 065/116] net: bonding: debug: avoid printing debug logs when bond is not notifying peers Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 066/116] bpf: Do not WARN in bpf_warn_invalid_xdp_action() Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 067/116] HID: quirks: Allow inverting the absolute X/Y values Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 068/116] media: igorplugusb: receiver overflow should be reported Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 069/116] media: saa7146: hexium_gemini: Fix a NULL pointer dereference in hexium_attach() Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 070/116] mmc: core: Fixup storing of OCR for MMC_QUIRK_NONSTD_SDIO Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 071/116] audit: ensure userspace is penalized the same as the kernel when under pressure Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 072/116] arm64: dts: ls1028a-qds: move rtc node to the correct i2c bus Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 073/116] arm64: tegra: Adjust length of CCPLEX cluster MMIO region Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 074/116] PM: runtime: Add safety net to supplier device release Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 075/116] cpufreq: Fix initialization of min and max frequency QoS requests Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 076/116] usb: hub: Add delay for SuperSpeed hub resume to let links transit to U0 Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 077/116] ath9k: Fix out-of-bound memcpy in ath9k_hif_usb_rx_stream Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 078/116] rtw88: 8822c: update rx settings to prevent potential hw deadlock Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 079/116] PM: AVS: qcom-cpr: Use div64_ul instead of do_div Sasha Levin
2022-01-18  2:39 ` Sasha Levin [this message]
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 081/116] iwlwifi: remove module loading failure message Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 082/116] iwlwifi: mvm: Fix calculation of frame length Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 083/116] iwlwifi: pcie: make sure prph_info is set when treating wakeup IRQ Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 084/116] um: registers: Rename function names to avoid conflicts and build problems Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 085/116] ath11k: Fix napi related hang Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 086/116] Bluetooth: vhci: Set HCI_QUIRK_VALID_LE_STATES Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 087/116] xfrm: rate limit SA mapping change message to user space Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 088/116] drm/etnaviv: consider completed fence seqno in hang check Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 089/116] jffs2: GC deadlock reading a page that is used in jffs2_write_begin() Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 090/116] ACPICA: actypes.h: Expand the ACPI_ACCESS_ definitions Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 091/116] ACPICA: Utilities: Avoid deleting the same object twice in a row Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 092/116] ACPICA: Executer: Fix the REFCLASS_REFOF case in acpi_ex_opcode_1A_0T_1R() Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 093/116] ACPICA: Fix wrong interpretation of PCC address Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 094/116] ACPICA: Hardware: Do not flush CPU cache when entering S4 and S5 Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 095/116] drm/amdgpu: fixup bad vram size on gmc v8 Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 096/116] mfd: intel_soc_pmic: Use CPU-id check instead of _HRV check to differentiate variants Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 097/116] amdgpu/pm: Make sysfs pm attributes as read-only for VFs Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 098/116] ACPI: battery: Add the ThinkPad "Not Charging" quirk Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 099/116] btrfs: remove BUG_ON() in find_parent_nodes() Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 100/116] btrfs: remove BUG_ON(!eie) in find_parent_nodes Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 101/116] net: mdio: Demote probed message to debug print Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 102/116] mac80211: allow non-standard VHT MCS-10/11 Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 103/116] dm btree: add a defensive bounds check to insert_at() Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 104/116] dm space map common: add bounds check to sm_ll_lookup_bitmap() Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 105/116] mlxsw: pci: Avoid flow control for EMAD packets Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 106/116] net: phy: marvell: configure RGMII delays for 88E1118 Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 107/116] net: gemini: allow any RGMII interface mode Sasha Levin
2022-01-18  2:39 ` [PATCH AUTOSEL 5.10 108/116] net: dsa: hold rtnl_mutex when calling dsa_master_{setup,teardown} Sasha Levin
2022-01-18  2:40 ` [PATCH AUTOSEL 5.10 109/116] regulator: qcom_smd: Align probe function with rpmh-regulator Sasha Levin
2022-01-18  2:40 ` [PATCH AUTOSEL 5.10 110/116] serial: pl010: Drop CR register reset on set_termios Sasha Levin
2022-01-18  2:40 ` [PATCH AUTOSEL 5.10 111/116] serial: core: Keep mctrl register state and cached copy in sync Sasha Levin
2022-01-18  2:40 ` [PATCH AUTOSEL 5.10 112/116] random: do not throw away excess input to crng_fast_load Sasha Levin
2022-01-18  2:40 ` [PATCH AUTOSEL 5.10 113/116] parisc: Avoid calling faulthandler_disabled() twice Sasha Levin
2022-01-18  2:40 ` [PATCH AUTOSEL 5.10 114/116] scripts: sphinx-pre-install: Fix ctex support on Debian Sasha Levin
2022-01-18  2:40 ` [PATCH AUTOSEL 5.10 115/116] x86/kbuild: Enable CONFIG_KALLSYMS_ALL=y in the defconfigs Sasha Levin
2022-01-18  2:40 ` [PATCH AUTOSEL 5.10 116/116] ext4: allow to change s_last_trim_minblks via sysfs Sasha Levin
2022-01-18  9:03   ` Lukas Czerner
2022-01-22 19:22     ` Sasha Levin
2022-01-18 17:13 ` [PATCH AUTOSEL 5.10 001/116] Bluetooth: Fix debugfs entry leak in hci_register_dev() Pavel Machek
2022-01-22 19:25   ` Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220118024007.1950576-80-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=davem@davemloft.net \
    --cc=johannes.berg@intel.com \
    --cc=kuba@kernel.org \
    --cc=kvalo@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=luciano.coelho@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).