Thread (11 messages) flat view 11 messages, 5 authors, 2021-03-18

Re: [PATCH v4 RESEND net-next] net: socket: use BIT() for MSG_*

From: Guenter Roeck <linux@roeck-us.net>
Date: 2021-03-17 16:17:19
Also in: lkml

On Wed, Mar 17, 2021 at 09:53:23PM +0800, Menglong Dong wrote:
On Wed, Mar 17, 2021 at 5:36 PM Andy Shevchenko
[off-list ref] wrote:
quoted
...
quoted
The problematic code is negation of the flags when it's done in
operations like &.
It maybe fixed by swapping positions of the arguments, i.e. ~(FOO |
BAR) & flags.

All this is a beast called "integer promotions" in the C standard.

The best is to try to get flags to be unsigned. By how invasive it may be?
Seems that the inconsistent usages of 'msg_flags' is a lot, for example the
'recvmsg()' in 'struct proto' and 'recvmsg()' in 'struct proto_ops':

int (*recvmsg)(struct sock *sk, struct msghdr *msg,
        size_t len, int noblock, int flags,
        int *addr_len);

This function prototype is used in many places, It's not easy to fix them.
Also, flags is used in several other functions, not just recvmsg.
This patch is already reverted, and I think maybe
I can resend it after I fix these 'int' flags.
I would suggest to consult with Dave on that. While much of the conversion
could be handled automatically with coccinelle, it touches a lot of files.
I don't think that is worth the effort (or risk).

Guenter
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help