From d1aae06630230daf747ef5bc291c19ea7f046129 Mon Sep 17 00:00:00 2001 From: Stephen Boyd Date: Thu, 13 Apr 2023 13:55:28 -0700 Subject: clk: starfive: Avoid casting iomem pointers Let's use a wrapper struct for the auxiliary_device made in jh7110_reset_controller_register() so that we can stop casting iomem pointers. The casts trip up tools like sparse, and make for some awkward casts that are largely unnecessary. While we're here, change the allocation from devm and actually free the auxiliary_device memory in the release function. This avoids any use after free problems where the parent device driver is unbound from the device but the auxiliuary_device is still in use accessing devm freed memory. Cc: Tommaso Merciai Cc: Emil Renner Berthing Cc: Hal Feng Cc: Conor Dooley Cc: Xingyu Wu Reviewed-by: Conor Dooley Fixes: edab7204afe5 ("clk: starfive: Add StarFive JH7110 system clock driver") Signed-off-by: Stephen Boyd Link: https://lore.kernel.org/r/20230413205528.4044216-1-sboyd@kernel.org --- include/soc/starfive/reset-starfive-jh71x0.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 include/soc/starfive/reset-starfive-jh71x0.h (limited to 'include') diff --git a/include/soc/starfive/reset-starfive-jh71x0.h b/include/soc/starfive/reset-starfive-jh71x0.h new file mode 100644 index 000000000000..47b486ececc5 --- /dev/null +++ b/include/soc/starfive/reset-starfive-jh71x0.h @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __SOC_STARFIVE_RESET_JH71X0_H +#define __SOC_STARFIVE_RESET_JH71X0_H + +#include +#include +#include + +struct jh71x0_reset_adev { + void __iomem *base; + struct auxiliary_device adev; +}; + +#define to_jh71x0_reset_adev(_adev) \ + container_of((_adev), struct jh71x0_reset_adev, adev) + +#endif -- cgit v1.2.3