lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Wed, 25 May 2022 09:48:15 +0800
From:   Yun Lu <luyun_611@....com>
To:     Willem de Bruijn <willemdebruijn.kernel@...il.com>
Cc:     davem@...emloft.net, edumazet@...gle.com, netdev@...r.kernel.org,
        linux-kselftest@...r.kernel.org
Subject: Re: [PATCH] selftests/net: enable lo.accept_local in psock_snd test

On 2022/5/24 下午9:33, Willem de Bruijn wrote:

> On Tue, May 24, 2022 at 6:04 AM Yun Lu <luyun_611@....com> wrote:
>> On 2022/5/23 下午9:32, Willem de Bruijn wrote:
>>
>>> On Mon, May 23, 2022 at 5:25 AM Yun Lu <luyun_611@....com> wrote:
>>>> On 2022/5/20 下午9:52, Willem de Bruijn wrote:
>>>>
>>>>> On Fri, May 20, 2022 at 2:40 AM Yun Lu <luyun_611@....com> wrote:
>>>>>> From: luyun <luyun@...inos.cn>
>>>>>>
>>>>>> The psock_snd test sends and recievs packets over loopback, but the
>>>>>> parameter lo.accept_local is disabled by default, this test will
>>>>>> fail with Resource temporarily unavailable:
>>>>>> sudo ./psock_snd.sh
>>>>>> dgram
>>>>>> tx: 128
>>>>>> rx: 142
>>>>>> ./psock_snd: recv: Resource temporarily unavailable
>>>>> I cannot reproduce this failure.
>>>>>
>>>>> Passes on a machine with accept_local 0.
>>>>>
>>>>> accept_local is defined as
>>>>>
>>>>> "
>>>>> accept_local - BOOLEAN
>>>>>        Accept packets with local source addresses. In combination
>>>>>        with suitable routing, this can be used to direct packets
>>>>>        between two local interfaces over the wire and have them
>>>>>        accepted properly.
>>>>> "
>>>> I did this test on my system(Centos 8.3 X86_64):
>>>>
>>>> [root@...alhost net]# sysctl net.ipv4.conf.lo.accept_local
>>>> net.ipv4.conf.lo.accept_local = 0
>>>> [root@...alhost net]# ./psock_snd -d
>>>> tx: 128
>>>> rx: 142
>>>> ./psock_snd: recv: Resource temporarily unavailable
>>>> [root@...alhost net]# sysctl -w net.ipv4.conf.lo.accept_local=1
>>>> net.ipv4.conf.lo.accept_local = 1
>>>> [root@...alhost net]# ./psock_snd -d
>>>> tx: 128
>>>> rx: 142
>>>> rx: 100
>>>> OK
>>>>
>>>> This failure does seem to be related to accept_local.
>>>>
>>>> Also, it's reported on Ubuntu:
>>>> https://bugs.launchpad.net/ubuntu-kernel-tests/+bug/1812618
>>> That is an old kernel, 4.18 derived.
>>>
>>> I simply am unable to reproduce this on an upstream v4.18 or v5.18.
>>> Likely something with either the distro kernel release, or another
>>> distro feature that interacts with this. Can you try v5.18 or another
>>> clean upstream kernel?
>>>
>>> Else it requires instrumenting IN_DEV_ACCEPT_LOCAL tests to understand
>>> where this sysctl makes a meaningful change for you when running this
>>> test.
>> I found another parameter rp_filter which interacts with this test:
>>
>> Set rp_filter = 0, the psock_snd test OK.
>>
>> Or set rp_filter = 1 and accept_local=1, the psock_snd test OK.
>>
>> I get the same test results on kernel v5.10 or v5.15.  Analysis from
>> source code,  this two parameters
>>
>> will change the result of fib_validate_source when running this test.
>> For most distro kernel releases,
>>
>> rp_filter is enabled by default, so this test will fail when
>> accept_local is kept to be zero.
> That explains.
>
> Since this test runs inside a netns, changing a sysctl is fine.
>
> Can you resubmit with a more detailed description now that the exact
> check is more clear, as well as interplay with rp_filter, and the
> default config of these two parameters configured by distros? Thanks.
> Please double check typos (s/recievs/receives).
OK, thanks for your reply and suggestion. I will send v2 version of this 
patch soon.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ