lkml.org 
[lkml]   [2022]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] clk: Fix referring to wrong pointer in devm_clk_release()
Hello,

On Thu, Jun 23, 2022 at 10:02:22AM +0900, Kunihiko Hayashi wrote:
> At bind phase, __devm_clk_get() calls devres_alloc() to allocate devres,
> and dr->data is treated as a variable "state".
>
> At unbind phase, release_nodes() calls devm_clk_release() specified by
> devres_alloc().
>
> The argument "res" of devm_clk_release() is dr->data, and this entity is
> "state", however in devm_clk_release(), "*res" is treated as "state",
> resulting in pointer inconsistency.
>
> Unbinding a driver caused a panic.
>
> Unable to handle kernel execute from non-executable memory
> at virtual address ffff000100236810
> ...
> pc : 0xffff000100236810
> lr : devm_clk_release+0x6c/0x9c
> ...
> Call trace:
> 0xffff000100236810
> release_nodes+0xb0/0x150
> devres_release_all+0x94/0xf8
> device_unbind_cleanup+0x20/0x70
> device_release_driver_internal+0x114/0x1a0
> device_driver_detach+0x20/0x30
>
> Cc: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
> Fixes: abae8e57e49a ("clk: generalize devm_clk_get() a bit")
> Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>

This is already fixed in clk-next:

https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git/commit/?h=clk-next&id=8b3d743fc9e2542822826890b482afabf0e7522a

Thanks anyhow,
Uwe

--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2022-06-23 09:07    [W:0.042 / U:0.384 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site