[PATCH 2/3] s390/smsgiucv_app: Remove function pointer cast

Nathan Chancellor
2024-04-17T18:24:45Z

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@kernel.org>
---
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