On Wed, Mar 17, 2021 at 09:53:23PM +0800, Menglong Dong wrote: > On Wed, Mar 17, 2021 at 5:36 PM Andy Shevchenko > <andy.shevche...@gmail.com> wrote: > > > ... > > > > 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