Re: [f2fs-dev] [PATCH v6 0/9] Support negative dentries on case-insensitive ext4 and f2fs

Gabriel Krisman Bertazi
2023-11-24T15:22:53Z

Al Viro <viro@zeniv.linux.org.uk> writes:

> On Thu, Nov 23, 2023 at 02:06:39PM -0500, Gabriel Krisman Bertazi wrote:
>
>> >
>> > 4. d_move() and d_exchange() would ignore the value returned by __d_move();
>> > __d_unalias() turn
>> > __d_move(alias, dentry, false);
>> > ret = 0;
>> > into
>> > ret = __d_move(alias, dentry, Splice);
>> > d_splice_alias() turn
>> > __d_move(new, dentry, false);
>> > write_sequnlock(&rename_lock);
>> > into
>> > err = __d_move(new, dentry, Splice);
>> > write_sequnlock(&rename_lock);
>> > if (unlikely(err)) {
>> > dput(new);
>> > new = ERR_PTR(err);
>> > }
>> > (actually, dput()-on-error part would be common to all 3 branches
>> > in there, so it would probably get pulled out of that if-else if-else).
>> >
>> > I can cook a patch doing that (and convert the obvious beneficiaries already
>> > in the tree to it) and throw it into dcache branch - just need to massage
>> > the series in there for repost...
>>
>> if you can write that, I'll definitely appreciate it. It will surely
>> take me much longer to figure it out myself.
>
> Speaking of other stuff in the series - passing the expected name to
> ->d_revalidate() is definitely the right thing to do, for a lot of
> other reasons. We do have ->d_name UAF issues in ->d_revalidate()
> instances, and that allows to solve them nicely.
>
> It's self-contained (your 2/9 and 3/9), so I'm going to grab that
> into a never-rebased branch, just to be able to base the followups
> propagating the use of stable name into instances.

ack. I'll base the other changes we discussed on top of your branch.

thanks,

--
Gabriel Krisman Bertazi