On Wed, 10 May 2023 at 14:39, Simon Horman <horms@xxxxxxxxxx> wrote: > > Rather than casting mmc_free_host to an incompatible function type, > provide a trivial wrapper with the correct signature for the use-case. > > Reported by clang-16 with W=1: > > .../meson-mx-sdhc-mmc.c:791:38: error: cast from 'void (*)(struct mmc_host *)' to 'void (*)(void *)' converts to incompatible function type [-Werror,-Wcast-function-type-strict] > ret = devm_add_action_or_reset(dev, (void(*)(void *))mmc_free_host, > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ./include/linux/device.h:265:38: note: expanded from macro 'devm_add_action_or_reset' > __devm_add_action_or_reset(release, action, data, #action) > ^~~~~~ > > The same approach is taken in litex_mmc.c with the function > litex_mmc_free_host_wrapper(). There may be scope for consolidation. > > No functional change intended. > Compile tested only. > > Signed-off-by: Simon Horman <horms@xxxxxxxxxx> Applied for next, thanks! Kind regards Uffe > --- > drivers/mmc/host/meson-mx-sdhc-mmc.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/host/meson-mx-sdhc-mmc.c b/drivers/mmc/host/meson-mx-sdhc-mmc.c > index da85c2f2acb8..97168cdfa8e9 100644 > --- a/drivers/mmc/host/meson-mx-sdhc-mmc.c > +++ b/drivers/mmc/host/meson-mx-sdhc-mmc.c > @@ -776,6 +776,11 @@ static void meson_mx_sdhc_init_hw(struct mmc_host *mmc) > regmap_write(host->regmap, MESON_SDHC_ISTA, MESON_SDHC_ISTA_ALL_IRQS); > } > > +static void meason_mx_mmc_free_host(void *data) > +{ > + mmc_free_host(data); > +} > + > static int meson_mx_sdhc_probe(struct platform_device *pdev) > { > struct device *dev = &pdev->dev; > @@ -788,8 +793,7 @@ static int meson_mx_sdhc_probe(struct platform_device *pdev) > if (!mmc) > return -ENOMEM; > > - ret = devm_add_action_or_reset(dev, (void(*)(void *))mmc_free_host, > - mmc); > + ret = devm_add_action_or_reset(dev, meason_mx_mmc_free_host, mmc); > if (ret) { > dev_err(dev, "Failed to register mmc_free_host action\n"); > return ret; >