Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 053220db authored by Maya Erez's avatar Maya Erez Committed by Gerrit - the friendly Code Review server
Browse files

wil6210: prevent device access during PCIe linkdown



Crash dump collection and ioctl can occur while PCIe linkdown
recovery is in process.
Check wil_status_pci_linkdown before accessing the device
to prevent this.

Change-Id: I0fa560cf89d89bdb9b71dc8c037ecad8d03f937b
Signed-off-by: default avatarMaya Erez <merez@codeaurora.org>
parent 2d7d9fc4
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -181,7 +181,8 @@ void wil_memcpy_toio_32(volatile void __iomem *dst, const void *src,
	}
}

/* Device memory access is prohibited while reset or suspend.
/* Device memory access is prohibited while reset, suspend or
 * pci linkdown.
 * wil_mem_access_lock protects accessing device memory in these cases
 */
int wil_mem_access_lock(struct wil6210_priv *wil)
@@ -190,7 +191,8 @@ int wil_mem_access_lock(struct wil6210_priv *wil)
		return -EBUSY;

	if (test_bit(wil_status_suspending, wil->status) ||
	    test_bit(wil_status_suspended, wil->status)) {
	    test_bit(wil_status_suspended, wil->status) ||
	    test_bit(wil_status_pci_linkdown, wil->status)) {
		up_read(&wil->mem_lock);
		return -EBUSY;
	}
+3 −2
Original line number Diff line number Diff line
@@ -65,9 +65,10 @@ int wil_fw_copy_crash_dump(struct wil6210_priv *wil, void *dest, u32 size)
	down_write(&wil->mem_lock);

	if (test_bit(wil_status_suspending, wil->status) ||
	    test_bit(wil_status_suspended, wil->status)) {
	    test_bit(wil_status_suspended, wil->status) ||
	    test_bit(wil_status_pci_linkdown, wil->status)) {
		wil_err(wil,
			"suspend/resume in progress. cannot copy crash dump\n");
			"suspend/resume/pci linkdown in progress. cannot copy crash dump\n");
		up_write(&wil->mem_lock);
		return -EBUSY;
	}