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

From: David Miller
Date: Wed Mar 17 2021 - 12:40:37 EST


From: Menglong Dong <menglong8.dong@xxxxxxxxx>
Date: Wed, 17 Mar 2021 16:21:14 +0800

> Hello,
>
> On Wed, Mar 17, 2021 at 9:38 AM Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
>>
>> On Wed, Mar 17, 2021 at 01:02:51AM +0200, Andy Shevchenko wrote:
>> > On Wednesday, March 17, 2021, Guenter Roeck <linux@xxxxxxxxxxxx> wrote:
>> >
> ...
>>
>> The problem is in net/packet/af_packet.c:packet_recvmsg(). This function,
>> as well as all other rcvmsg functions, is declared as
>>
>> static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
>> int flags)
>>
>> MSG_CMSG_COMPAT (0x80000000) is set in flags, meaning its value is negative.
>> This is then evaluated in
>>
>> if (flags & ~(MSG_PEEK|MSG_DONTWAIT|MSG_TRUNC|MSG_CMSG_COMPAT|MSG_ERRQUEUE))
>> goto out;
> So what should I do? Revert this patch? Or fix the usages of 'flags'?

I already reverted this patch from net-next to fix the regression.