blob: c72798b618931f97dbfd1154d75129fb51576114 [file] [log] [blame]
From: Nathan Chancellor <nathan@kernel.org>
Subject: s390/smsgiucv_app: remove function pointer cast
Date: Wed, 17 Apr 2024 11:24:36 -0700
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.
Link: https://lkml.kernel.org/r/20240417-s390-drivers-fix-cast-function-type-v1-2-fd048c9903b0@kernel.org
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Alexandra Winter <wintera@linux.ibm.com>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: Thorsten Winkler <twinkler@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---
drivers/s390/net/smsgiucv_app.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
--- a/drivers/s390/net/smsgiucv_app.c~s390-smsgiucv_app-remove-function-pointer-cast
+++ a/drivers/s390/net/smsgiucv_app.c
@@ -64,6 +64,11 @@ static void smsg_app_event_free(struct s
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) {
_