Re: [PATCH 03/16] vfs: don't evict uninitialized inode

From: Miklos Szeredi
Date: Mon Jul 30 2018 - 03:41:37 EST


On Mon, Jul 30, 2018 at 7:09 AM, Amir Goldstein <amir73il@xxxxxxxxx> wrote:
> On Mon, Jul 30, 2018 at 1:04 AM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:
>> From: Miklos Szeredi <mszeredi@xxxxxxxxxx>
>>
>> iput() ends up calling ->evict() on new inode, which is not yet initialized
>> by owning fs. So use destroy_inode() instead.
>>
>> Add to sb->s_inodes list only if inode is not in I_CREATING state (meaning
>> that it wasn't allocated with new_inode(), which already does the
>> insertion).
>>
>> Reported-by: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
>> Signed-off-by: Miklos Szeredi <mszeredi@xxxxxxxxxx>
>> Fixes: 80ea09a002bf ("vfs: factor out inode_insert5()")
>
> Backport hint: this patch depends on the patch ("new primitive:
> discard_new_inode()") currently commit 22dc9a168272 in Al's for-next.
>
> Still trying to figure out the best format to channel this information to
> stable maintainers...

Why are we talking about stable? This regression was introduced in
4.18-rc1, spotted by Al *and* reported by testers. It needs to be
fixed in one way or other in 4.18.

I've nothing against applying "new primitive: discard_new_inode() now
+ this patch, but if it is deemed too risky at this point, we could
just revert the buggy commit 80ea09a002bf ("vfs: factor out
inode_insert5()") and its dependencies.

Thanks,
Miklos