forked from luck/tmp_suning_uos_patched
a3592fa49d
[ Upstream commit 9905f728b0bda737fe2c2afd7c24f3365a45cc7b ]
The mhu_db_channel info is allocated per channel using devm_kzalloc from
mhu_db_mbox_xlate which gets called from mbox_request_channel. However
we are releasing the allocated mhu_db_channel info using plain kfree from
mhu_db_shutdown which is called from mbox_free_channel.
This leads to random crashes when the channel is freed like below one:
Unable to handle kernel paging request at virtual address 0080000400000008
[0080000400000008] address between user and kernel address ranges
Internal error: Oops: 96000044 [#1] PREEMPT SMP
Modules linked in: scmi_module(-)
CPU: 1 PID: 2212 Comm: rmmod Not tainted 5.10.0-rc5 #31
Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno
Development Platform, BIOS EDK II Nov 19 2020
pstate: 20000085 (nzCv daIf -PAN -UAO -TCO BTYPE=--)
pc : release_nodes+0x74/0x230
lr : devres_release_all+0x40/0x68
Call trace:
release_nodes+0x74/0x230
devres_release_all+0x40/0x68
device_release_driver_internal+0x12c/0x1f8
driver_detach+0x58/0xe8
bus_remove_driver+0x64/0xe0
driver_unregister+0x38/0x68
platform_driver_unregister+0x1c/0x28
scmi_driver_exit+0x38/0x44 [scmi_module]
__arm64_sys_delete_module+0x188/0x260
el0_svc_common.constprop.0+0x80/0x1a8
do_el0_svc+0x2c/0x98
el0_sync_handler+0x160/0x168
el0_sync+0x174/0x180
Code: 1400000d eb07009f 54000460 f9400486 (f90004a6)
---[ end trace c55ffd306c140233 ]---
Fix it by replacing kfree with devm_kfree as required.
Fixes:
|
||
---|---|---|
.. | ||
arm_mhu_db.c | ||
arm_mhu.c | ||
armada-37xx-rwtm-mailbox.c | ||
bcm-flexrm-mailbox.c | ||
bcm-pdc-mailbox.c | ||
bcm2835-mailbox.c | ||
hi3660-mailbox.c | ||
hi6220-mailbox.c | ||
imx-mailbox.c | ||
Kconfig | ||
mailbox-altera.c | ||
mailbox-sti.c | ||
mailbox-test.c | ||
mailbox-xgene-slimpro.c | ||
mailbox.c | ||
mailbox.h | ||
Makefile | ||
mtk-cmdq-mailbox.c | ||
omap-mailbox.c | ||
pcc.c | ||
pl320-ipc.c | ||
platform_mhu.c | ||
qcom-apcs-ipc-mailbox.c | ||
qcom-ipcc.c | ||
rockchip-mailbox.c | ||
sprd-mailbox.c | ||
stm32-ipcc.c | ||
sun6i-msgbox.c | ||
tegra-hsp.c | ||
ti-msgmgr.c | ||
zynqmp-ipi-mailbox.c |