Subject: Re: [RFC] [PATCH] net: socket: Fix the wrong returns for recvmsg and sendmsg

From: Junling Zheng <[email-masked]>
Date: Tue, 2 Jun 2015 14:19:46 +0800

On 2015/6/2 12:44, Greg KH wrote:
> On Tue, Jun 02, 2015 at 12:05:32PM +0800, Junling Zheng wrote:
>> On 2015/6/2 9:21, Greg KH wrote:
>>> On Mon, Jun 01, 2015 at 09:28:00AM +0000, Junling Zheng wrote:
>>>> Hi, Greg:
>>>>
>>>> We found that after v3.10.73, recvmsg might return -EFAULT while -EINVAL
>>>> was expected.
>>>
>>> That means I messed up and applied something I shouldn't have, right?
>>>
>>> Can you use 'git bisect' to find the problem patch?  That's probably
>>> easier here, and then I can either revert it, or fix up a broken
>>> backport.
>>>
>>
>> So, the problem commit is 281c9c36 (net: compat: Update get_compat_msghdr() to match copy_msghdr_from_user() behaviour), which fixes db31c55a6fb2
>> and brings the get_compat_msghdr() in line with copy_msghdr_from_user().
> 
> Ok, but that patch itself isn't the issue, as it's "correct".  Something

I don't think so. The commit 281c9c36 is indeed the issue. Its upstream commit 91edd09
has no problem in mainline, however it's not appropriate or complete for 3.10-stable.
It changes the return value of get_compat_msghdr(), however, the outer caller still
returns -EFAULT unconditionally, which goes against the intention of author.

So, I don't think 281c9c36 is an complete patch for 3.10-stable. We should also fix it
to return a correct value according to get_compat_msghdr() rather than returning -EFAULT
unconditionally :)

Cheers,

Junling

> else must be wrong here, did we backport db31c55a6fb2 incorrectly to
> 3.10-stable?  What is really causing this to be so different that your
> proposed patch needs to be applied to solve it?
> 
> thanks,
> 
> greg k-h
> 
> .
>