Re: [PATCH] fs/ntfs3: Check for NULL if ATTR_EA_INFO is incorrect

From: Konstantin Komarov
Date: Wed Oct 06 2021 - 10:47:11 EST




On 04.10.2021 23:39, Mohammad Rasim wrote:
>
> On 10/3/21 20:50, Kari Argillander wrote:
>> On Wed, Sep 29, 2021 at 07:35:43PM +0300, Konstantin Komarov wrote:
>>> This can be reason for reported panic.
>>> Fixes: 4342306f0f0d ("fs/ntfs3: Add file operations and implementation")
>> I see that you have include this to devel branch but you did not send V2
>> [1]. I also included Mohammad Rasim to this thread. Maybe they can test
>> this patch. Rasim can you test [2] if your problem will be fixed with
>> this tree. Or just test this patch if you prefer that way.
>>
>> [1]: github.com/Paragon-Software-Group/linux-ntfs3/commit/35afb70dcfe4eb445060dd955e5b67d962869ce5
>> [2]: github.com/Paragon-Software-Group/linux-ntfs3/tree/devel
>
> Yeah unfortunately the problem still exist, moving the buildroot git tree from my nvme ext4 partition to my wd ntfs partition still causes the panic.
>
> Note that i used the master branch if that matters but it contains the same commit
>
>
> Regards
>

Is panic the same as old one?

BUG: kernel NULL pointer dereference, address: 000000000000000e
RIP: 0010:ni_write_inode+0xe6b/0xed0 [ntfs3]
etc.

>>> Signed-off-by: Konstantin Komarov <almaz.alexandrovich@xxxxxxxxxxxxxxxxxxxx>
>>> ---
>>>   fs/ntfs3/frecord.c | 4 +++-
>>>   1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/fs/ntfs3/frecord.c b/fs/ntfs3/frecord.c
>>> index 9a53f809576d..007602badd90 100644
>>> --- a/fs/ntfs3/frecord.c
>>> +++ b/fs/ntfs3/frecord.c
>>> @@ -3080,7 +3080,9 @@ static bool ni_update_parent(struct ntfs_inode *ni, struct NTFS_DUP_INFO *dup,
>>>                          const struct EA_INFO *info;
>>>                            info = resident_data_ex(attr, sizeof(struct EA_INFO));
>>> -                       dup->ea_size = info->size_pack;
>>> +                       /* If ATTR_EA_INFO exists 'info' can't be NULL. */
>>> +                       if (info)
>>> +                               dup->ea_size = info->size_pack;
>>>                  }
>>>          }
>>>   -- 
>>> 2.33.0
>>>