mbox series

[0/2] wifi: ath12k: fix issues when unbinding

Message ID 20241010175102.207324-1-jtornosm@redhat.com
Headers show
Series wifi: ath12k: fix issues when unbinding | expand

Message

Jose Ignacio Tornos Martinez Oct. 10, 2024, 5:48 p.m. UTC
wifi: ath12k: fix issues when unbinding

Currently, ath12k driver is not working from VMs but it cannot be unbinded
either from there. I would like to send these patches to fix the issues that
I have found in order to get the unbind operation working there, at least to
fix the errors found during the process when the initial error is detected.

Just FYI and out of the scope of these patches, I am unbinding and binding
to apply a workaround with an extra module to fix the MSI addressing by
means of kprobes to be able to work with this device from VMs.

Signed-off-by: Jose Ignacio Tornos Martinez <jtornosm@redhat.com>

Comments

Jeff Johnson Oct. 15, 2024, 4:53 p.m. UTC | #1
On 10/10/2024 10:48 AM, Jose Ignacio Tornos Martinez wrote:
> If there is an error during some initialization realated to firmware,
> the funcion ath12k_dp_cc_cleanup is already call to release resources.

s/funcion/function/

> However this is released again when the device is unbinded (ath12k_pci),
> and we get:
> [  382.050650] BUG: kernel NULL pointer dereference, address: 0000000000000020
> [  382.050656] #PF: supervisor read access in kernel mode
> [  382.050657] #PF: error_code(0x0000) - not-present page
> [  382.050659] PGD 0 P4D 0
> [  382.050661] Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI
> [  382.050664] CPU: 0 UID: 0 PID: 6541 Comm: bash Kdump: loaded Not tainted 6.12.0-rc1+ #14
> [  382.050666] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-2.fc40 04/01/2014
> [  382.050667] RIP: 0010:ath12k_dp_cc_cleanup.part.0+0xb6/0x500 [ath12k]
> [  382.050688] Code: 8b 76 28 48 8b 7b 10 45 31 c0 b9 02 00 00 00 e8 30 3d 35 c2 be 02 00 00 00 4c 89 f7 e8 e3 00 fb c2 49 83 c7 28 49 39 ef 74 31 <41> f6 47 20 01 75 ab 4c 89 ff e8 2b de a2 c2 84 c0 74 0e 49 8b 17
> [  382.050689] RSP: 0018:ffffa3e3c0e83990 EFLAGS: 00010297
> [  382.050691] RAX: 0000000000000000 RBX: ffff90de08750000 RCX: 0000000000000000
> [  382.050692] RDX: 0000000000000001 RSI: ffff90de08751178 RDI: ffff90de08751970
> [  382.050693] RBP: 0000000000005000 R08: 0000000000000200 R09: 000000000040003f
> [  382.050694] R10: 000000000040003f R11: 0000000000000000 R12: dead000000000122
> [  382.050695] R13: dead000000000100 R14: ffffffffc0b6f948 R15: 0000000000000000
> [  382.050696] FS:  00007f216b1ab740(0000) GS:ffff90de5fc00000(0000) knlGS:0000000000000000
> [  382.050698] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [  382.050699] CR2: 0000000000000020 CR3: 000000001a26c000 CR4: 0000000000752ef0
> [  382.050702] PKRU: 55555554
> [  382.050703] Call Trace:
> [  382.050705]  <TASK>
> [  382.050707]  ? __die_body.cold+0x19/0x27
> [  382.050719]  ? page_fault_oops+0x15a/0x2f0
> [  382.050723]  ? exc_page_fault+0x7e/0x180
> [  382.050724]  ? asm_exc_page_fault+0x26/0x30
> [  382.050729]  ? ath12k_dp_cc_cleanup.part.0+0xb6/0x500 [ath12k]
> [  382.050740]  ? delay_halt_tpause+0x1a/0x20
> [  382.050742]  ath12k_dp_free+0x67/0x110 [ath12k]
> [  382.050753]  ath12k_core_deinit+0x8d/0xb0 [ath12k]
> [  382.050762]  ath12k_pci_remove+0x50/0xf0 [ath12k]
> [  382.050771]  pci_device_remove+0x3f/0xb0
> [  382.050773]  device_release_driver_internal+0x19c/0x200
> [  382.050777]  unbind_store+0xa1/0xb0
> ...
> 
> The issue is always reproducible from a VM because the MSI addressing
> initialization is failing.
> 
> In order to fix the issue, just set to NULL the relaeased structure in
> ath12k_dp_cc_cleanup at the end.
> 
> cc: stable@vger.kernel.org
> Fixes: d889913205cf7 ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")

WARNING: Please use correct Fixes: style 'Fixes: <12 chars of sha1> ("<title line>")' - ie: 'Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")'
#51: 
Fixes: d889913205cf7 ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")

same comment applies to the 2/2 patch

> Signed-off-by: Jose Ignacio Tornos Martinez <jtornosm@redhat.com>
> ---
>  drivers/net/wireless/ath/ath12k/dp.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/net/wireless/ath/ath12k/dp.c b/drivers/net/wireless/ath/ath12k/dp.c
> index 61aa78d8bd8c..789d430e4455 100644
> --- a/drivers/net/wireless/ath/ath12k/dp.c
> +++ b/drivers/net/wireless/ath/ath12k/dp.c
> @@ -1241,6 +1241,7 @@ static void ath12k_dp_cc_cleanup(struct ath12k_base *ab)
>  	}
>  
>  	kfree(dp->spt_info);
> +	dp->spt_info = NULL;
>  }
>  
>  static void ath12k_dp_reoq_lut_cleanup(struct ath12k_base *ab)
Jose Ignacio Tornos Martinez Oct. 16, 2024, 12:01 p.m. UTC | #2
Hello Jeff,

> WARNING: Please use correct Fixes: style 'Fixes: <12 chars of sha1> ("<title line>")' - ie: 'Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")'
> #51: 
> Fixes: d889913205cf7 ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
>
> same comment applies to the 2/2 patch
Ok, I will fix it in a next version of the patches.

Thanks

Best regards
José Ignacio