2022-07-14 22:25:08

by Steve French

[permalink] [raw]
Subject: Is casting a void ptr to something else considered bad kernel coding style

For examples like this where a pointer which is (void *) is cast to
something else, is this considered bad coding style in kernel C
programming?

It may be that leaving the (unnecessary) cast in, although it is not
required for C, makes the code clearer in some cases.

Any opinions on changes to remove casts of void pointers for kernel
code (which I have recently seen suggested)?

for example:

--- a/fs/cifs/smb2pdu.c
+++ b/fs/cifs/smb2pdu.c
@@ -354,7 +354,7 @@ fill_small_buf(__le16 smb2_command, struct cifs_tcon *tcon,
void *buf,
unsigned int *total_len)
{
- struct smb2_pdu *spdu = (struct smb2_pdu *)buf;
+ struct smb2_pdu *spdu = buf;

--
Thanks,

Steve


2022-07-15 05:29:51

by Julia Lawall

[permalink] [raw]
Subject: Re: Is casting a void ptr to something else considered bad kernel coding style



On Thu, 14 Jul 2022, Steve French wrote:

> For examples like this where a pointer which is (void *) is cast to
> something else, is this considered bad coding style in kernel C
> programming?
>
> It may be that leaving the (unnecessary) cast in, although it is not
> required for C, makes the code clearer in some cases.
>
> Any opinions on changes to remove casts of void pointers for kernel
> code (which I have recently seen suggested)?
>
> for example:
>
> --- a/fs/cifs/smb2pdu.c
> +++ b/fs/cifs/smb2pdu.c
> @@ -354,7 +354,7 @@ fill_small_buf(__le16 smb2_command, struct cifs_tcon *tcon,
> void *buf,
> unsigned int *total_len)
> {
> - struct smb2_pdu *spdu = (struct smb2_pdu *)buf;
> + struct smb2_pdu *spdu = buf;

There would seem to be not much point to this (the original cast), since
the type is immediately explicit in the variable declaration.

It would also make for tiresome editing if the type should change, and it
reduces readability by adding a lot of characters that don't give useful
information.

julia

2022-07-15 08:46:08

by Dan Carpenter

[permalink] [raw]
Subject: Re: Is casting a void ptr to something else considered bad kernel coding style

On Thu, Jul 14, 2022 at 05:00:19PM -0500, Steve French wrote:
> For examples like this where a pointer which is (void *) is cast to
> something else, is this considered bad coding style in kernel C
> programming?
>
> It may be that leaving the (unnecessary) cast in, although it is not
> required for C, makes the code clearer in some cases.
>
> Any opinions on changes to remove casts of void pointers for kernel
> code (which I have recently seen suggested)?
>

Pointless casts are bad, but the churn is bad too...

regards,
dan carpenter