Re: [PATCH] ocfs2: fix the oops problem when write cloned file

From: Joseph Qi
Date: Mon Feb 03 2020 - 03:16:29 EST




On 20/2/3 13:32, Gang He wrote:
> Hi Joseph,
>
> before calling ocfs2_refcount_cow() in the function ocfs2_prepare_inode_for_write(), we do not use inode buffer_head.
> So, we can let buffer_head is NULL.
> But, when we invoke ocfs2_refcount_cow() function, we have to pass inode buffer_head without NULL pointer.
> That is why writing clone file will cause oops and kill the user-space process.
>
Okay, so before commit e74540b28556, we will always get a valid buffer
head in ocfs2_prepare_inode_for_refcount().
You can feel free to add:
Reviewed-by: Joseph Qi <joseph.qi@xxxxxxxxxxxxxxxxx>

BTW, you'd better resend the patch in a single thread, for the
convenience of merging by akpm.

>
> ________________________________________
> From: Joseph Qi <joseph.qi@xxxxxxxxxxxxxxxxx>
> Sent: Monday, February 3, 2020 1:15 PM
> To: Gang He; mark@xxxxxxxxxx; jlbec@xxxxxxxxxxxx; gechangwei@xxxxxxx; Shuning Zhang
> Cc: linux-kernel@xxxxxxxxxxxxxxx; ocfs2-devel@xxxxxxxxxxxxxx; akpm@xxxxxxxxxxxxxxxxxxxx
> Subject: Re: [PATCH] ocfs2: fix the oops problem when write cloned file
>
>
>
> On 20/2/3 10:17, Gang He wrote:
>> Hello Joseph, Changwei, Sunny and all,
>>
>> Could you help to review this patch?
>> This patch will fix the oops problem caused by write ocfs2 clone files.
>> The root cause is inode buffer head is NULL when calling ocfs2_refcount_cow.
>> Secondly, we should use EX meta lock when calling ocfs2_refcount_cow.
>>
> Before commit e74540b28556, we may also use NULL buffer head in case of
> overwrite, so why there is no such issue before?
>
> Thanks,
> Joseph
>