[PATCH] coresight: etm4x: Remove bogous __exit annotation for some functions
James Clark
james.clark at arm.com
Fri Sep 29 02:02:47 PDT 2023
On 29/09/2023 09:16, Uwe Kleine-König wrote:
> etm4_platform_driver (which lives in ".data" contains a reference to
> etm4_remove_platform_dev(). So the latter must not be marked with __exit
> which results in the function being discarded for a build with
> CONFIG_CORESIGHT_SOURCE_ETM4X=y which in turn makes the remove pointer
> contain invalid data.
>
> etm4x_amba_driver referencing etm4_remove_amba() has the same issue.
>
> Drop the __exit annotations for the two affected functions and a third
> one that is called by the other two.
>
Makes sense to me, I can't see any other struct platform_driver
callbacks marked with __init or __exit.
Reviewed-by: James Clark <james.clark at arm.com>
> For reasons I don't understand this isn't catched by building with
> CONFIG_DEBUG_SECTION_MISMATCH=y.
>
> Fixes: c23bc382ef0e ("coresight: etm4x: Refactor probing routine")
> Fixes: 5214b563588e ("coresight: etm4x: Add support for sysreg only devices")
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
> ---
> drivers/hwtracing/coresight/coresight-etm4x-core.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/hwtracing/coresight/coresight-etm4x-core.c b/drivers/hwtracing/coresight/coresight-etm4x-core.c
> index 77b0271ce6eb..34aee59dd147 100644
> --- a/drivers/hwtracing/coresight/coresight-etm4x-core.c
> +++ b/drivers/hwtracing/coresight/coresight-etm4x-core.c
> @@ -2224,7 +2224,7 @@ static void clear_etmdrvdata(void *info)
> per_cpu(delayed_probe, cpu) = NULL;
> }
>
> -static void __exit etm4_remove_dev(struct etmv4_drvdata *drvdata)
> +static void etm4_remove_dev(struct etmv4_drvdata *drvdata)
> {
> bool had_delayed_probe;
> /*
> @@ -2253,7 +2253,7 @@ static void __exit etm4_remove_dev(struct etmv4_drvdata *drvdata)
> }
> }
>
> -static void __exit etm4_remove_amba(struct amba_device *adev)
> +static void etm4_remove_amba(struct amba_device *adev)
> {
> struct etmv4_drvdata *drvdata = dev_get_drvdata(&adev->dev);
>
> @@ -2261,7 +2261,7 @@ static void __exit etm4_remove_amba(struct amba_device *adev)
> etm4_remove_dev(drvdata);
> }
>
> -static int __exit etm4_remove_platform_dev(struct platform_device *pdev)
> +static int etm4_remove_platform_dev(struct platform_device *pdev)
> {
> struct etmv4_drvdata *drvdata = dev_get_drvdata(&pdev->dev);
>
>
> base-commit: 0bb80ecc33a8fb5a682236443c1e740d5c917d1d
More information about the linux-arm-kernel
mailing list