Message ID | 20240417-s390-drivers-fix-cast-function-type-v1-2-fd048c9903b0@kernel.org (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | drivers/s390: Fix instances of -Wcast-function-type-strict | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
On Wed, Apr 17, 2024, at 20:24, Nathan Chancellor wrote: > 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> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
On 17/04/2024 20.24, Nathan Chancellor wrote: > 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(-) Reviewed-by: Thomas Huth <thuth@redhat.com>
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) {
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(-)