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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <18704e8c-c734-43f3-bc7c-b8be345e1bf5@igalia.com>
Date: Tue, 26 Aug 2025 16:01:13 -0300
From: André Almeida <andrealmeid@...lia.com>
To: Amir Goldstein <amir73il@...il.com>
Cc: Miklos Szeredi <miklos@...redi.hu>, Theodore Tso <tytso@....edu>,
 Gabriel Krisman Bertazi <krisman@...nel.org>, linux-unionfs@...r.kernel.org,
 linux-kernel@...r.kernel.org, linux-fsdevel@...r.kernel.org,
 Alexander Viro <viro@...iv.linux.org.uk>,
 Christian Brauner <brauner@...nel.org>, Jan Kara <jack@...e.cz>,
 kernel-dev@...lia.com
Subject: Re: [PATCH v6 9/9] ovl: Support mounting case-insensitive enabled
 layers



Em 26/08/2025 04:31, Amir Goldstein escreveu:
> On Mon, Aug 25, 2025 at 3:31 PM André Almeida <andrealmeid@...lia.com> wrote:
>>
>> Hi Amir,
>>
>> Em 22/08/2025 16:17, Amir Goldstein escreveu:
>>
>> [...]
>>
>>     /*
>>>>>> -        * Allow filesystems that are case-folding capable but deny composing
>>>>>> -        * ovl stack from case-folded directories.
>>>>>> +        * Exceptionally for layers with casefold, we accept that they have
>>>>>> +        * their own hash and compare operations
>>>>>>             */
>>>>>> -       if (sb_has_encoding(dentry->d_sb))
>>>>>> -               return IS_CASEFOLDED(d_inode(dentry));
>>>>>> +       if (ofs->casefold)
>>>>>> +               return false;
>>>>>
>>>>> I think this is better as:
>>>>>            if (sb_has_encoding(dentry->d_sb))
>>>>>                    return false;
>>>>>
>>>
>>> And this still fails the test "Casefold enabled" for me.
>>>
>>> Maybe you are confused because this does not look like
>>> a test failure. It looks like this:
>>>
>>> generic/999 5s ...  [19:10:21][  150.667994] overlayfs: failed lookup
>>> in lower (ovl-lower/casefold, name='subdir', err=-116): parent wrong
>>> casefold
>>> [  150.669741] overlayfs: failed lookup in lower (ovl-lower/casefold,
>>> name='subdir', err=-116): parent wrong casefold
>>> [  150.760644] overlayfs: failed lookup in lower (/ovl-lower,
>>> name='casefold', err=-66): child wrong casefold
>>>    [19:10:24] [not run]
>>> generic/999 -- overlayfs does not support casefold enabled layers
>>> Ran: generic/999
>>> Not run: generic/999
>>> Passed all 1 tests
>>>
>>
>> This is how the test output looks before my changes[1] to the test:
>>
>> $ ./run.sh
>> FSTYP         -- ext4
>> PLATFORM      -- Linux/x86_64 archlinux 6.17.0-rc1+ #1174 SMP
>> PREEMPT_DYNAMIC Mon Aug 25 10:18:09 -03 2025
>> MKFS_OPTIONS  -- -F /dev/vdc
>> MOUNT_OPTIONS -- -o acl,user_xattr /dev/vdc /tmp/dir2
>>
>> generic/999 1s ... [not run] overlayfs does not support casefold enabled
>> layers
>> Ran: generic/999
>> Not run: generic/999
>> Passed all 1 tests
>>
>>
>> And this is how it looks after my changes[1] to the test:
>>
>> $ ./run.sh
>> FSTYP         -- ext4
>> PLATFORM      -- Linux/x86_64 archlinux 6.17.0-rc1+ #1174 SMP
>> PREEMPT_DYNAMIC Mon Aug 25 10:18:09 -03 2025
>> MKFS_OPTIONS  -- -F /dev/vdc
>> MOUNT_OPTIONS -- -o acl,user_xattr /dev/vdc /tmp/dir2
>>
>> generic/999        1s
>> Ran: generic/999
>> Passed all 1 tests
>>
>> So, as far as I can tell, the casefold enabled is not being skipped
>> after the fix to the test.
> 
> Is this how it looks with your v6 or after fixing the bug:
> https://lore.kernel.org/linux-unionfs/68a8c4d7.050a0220.37038e.005c.GAE@google.com/
> 
> Because for me this skipping started after fixing this bug
> Maybe we fixed the bug incorrectly, but I did not see what the problem
> was from a quick look.
> 
> Can you test with my branch:
> https://github.com/amir73il/linux/commits/ovl_casefold/
> 

Right, our branches have a different base, mine is older and based on 
the tag vfs/vfs-6.18.mount.

I have now tested with your branch, and indeed the test fails with 
"overlayfs does not support casefold enabled". I did some debugging and 
the missing commit from my branch that is making this difference here is 
e8bd877fb76bb9f3 ("ovl: fix possible double unlink"). After reverting it 
on top of your branch, the test works. I'm not sure yet why this 
prevents the mount, but this is the call trace when the error happens:

TID/PID 860/860 (mount/mount):

                     entry_SYSCALL_64_after_hwframe+0x77
                     do_syscall_64+0xa2
                     x64_sys_call+0x1bc3
                     __x64_sys_fsconfig+0x46c
                     vfs_cmd_create+0x60
                     vfs_get_tree+0x2e
                     ovl_get_tree+0x19
                     get_tree_nodev+0x70
                     ovl_fill_super+0x53b
!    0us [-EINVAL]  ovl_parent_lock

And for the ovl_parent_lock() arguments, *parent="work", *child="#7". So 
right now I'm trying to figure out why the dentry for #7 is not hashed.

>>
>> [1]
>> https://lore.kernel.org/lkml/5da6b0f4-2730-4783-9c57-c46c2d13e848@igalia.com/
>>
>>
>>> I'm not sure I will keep the test this way. This is not very standard nor
>>> good practice, to run half of the test and then skip it.
>>> I would probably split it into two tests.
>>> The first one as it is now will run to completion on kenrels >= v6.17
>>> and the Casefold enable test will run on kernels >= v6.18.
>>>
>>> In any case, please make sure that the test is not skipped when testing
>>> Casefold enabled layers
>>>
>>> And then continue with the missing test cases.
>>>
>>> When you have a test that passes please send the test itself or
>>> a fstest branch for me to test.
>>
>> Ok!
> 
> I assume you are testing with ext4 layers?
> 
> If we are both testing the same code and same test and getting different
> results I would like to get to the bottom of this, so please share as much
> information on your test setup as you can.
> 
> Thanks,
> Amir.


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ