Clang warns (or errors with CONFIG_WERROR) after enabling -Wcast-function-type-strict by default: drivers/s390/net/smsgiucv_app.c:176:26: error: cast from 'void (*)(const void *)' to 'void (*)(struct device *)' converts to incompatible function type [-Werror,-Wcast-function-type-strict] 176 | smsg_app_dev->release = (void (*)(struct device *)) kfree; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. Add a standalone function to fix the warning properly, which addresses the root of the warning that these casts are not safe for kCFI. Signed-off-by: Nathan Chancellor <nathan@xxxxxxxxxx> --- drivers/s390/net/smsgiucv_app.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/s390/net/smsgiucv_app.c b/drivers/s390/net/smsgiucv_app.c index 0a263999f7ae..390aba4ef7ad 100644 --- a/drivers/s390/net/smsgiucv_app.c +++ b/drivers/s390/net/smsgiucv_app.c @@ -64,6 +64,11 @@ static void smsg_app_event_free(struct smsg_app_event *ev) kfree(ev); } +static void smsg_app_free_dev(struct device *dev) +{ + kfree(dev); +} + static struct smsg_app_event *smsg_app_event_alloc(const char *from, const char *msg) { @@ -173,7 +178,7 @@ static int __init smsgiucv_app_init(void) } smsg_app_dev->bus = &iucv_bus; smsg_app_dev->parent = iucv_root; - smsg_app_dev->release = (void (*)(struct device *)) kfree; + smsg_app_dev->release = smsg_app_free_dev; smsg_app_dev->driver = smsgiucv_drv; rc = device_register(smsg_app_dev); if (rc) { -- 2.44.0