Re: [PATCH v3 1/3] mm/mprotect: Fix soft-dirty check in can_change_pte_writable()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 22.07.22 15:51, Peter Xu wrote:
> On Fri, Jul 22, 2022 at 09:08:59AM +0200, David Hildenbrand wrote:
>> On 21.07.22 20:33, Peter Xu wrote:
>>> The check wanted to make sure when soft-dirty tracking is enabled we won't
>>> grant write bit by accident, as a page fault is needed for dirty tracking.
>>> The intention is correct but we didn't check it right because VM_SOFTDIRTY
>>> set actually means soft-dirty tracking disabled.  Fix it.
>>>
>>> There's another thing tricky about soft-dirty is that, we can't check the
>>> vma flag !(vma_flags & VM_SOFTDIRTY) directly but only check it after we
>>> checked CONFIG_MEM_SOFT_DIRTY because otherwise VM_SOFTDIRTY will be
>>> defined as zero, and !(vma_flags & VM_SOFTDIRTY) will constantly return
>>> true.  To avoid misuse, introduce a helper for checking whether vma has
>>> soft-dirty tracking enabled.
>>>
>>
>>
>> [...]
>>
>>>
>>> Here we attach a Fixes to commit 64fe24a3e05e only for easy tracking, as
>>> this patch won't apply to a tree before that point.  However the commit
>>> wasn't the source of problem, it's just that then anonymous memory will
>>> also suffer from this problem with mprotect().
>>
>> I'd remove that paragraph and also add
>>
>> Fixes: 64e455079e1b ("mm: softdirty: enable write notifications on VMAs after VM_SOFTDIRTY cleared")
>>
>> That introduced this wrong check for pagecache pages AFAIKS.
>>
>> We don't care if the patch applies before 64fe24a3e05e, if someone wants to
>> backport the fix, they can just adjust it accordingly.
> 
> IMO besides marking the culprit commit, Fixes can also provide input to
> stable trees to see whether we should try pick some patch up.  What I
> wanted to express here is we don't need to try pick this patch up before
> kernel that doesn't have 64fe24a3e05e because it won't apply.
> 
> I can attach both Fixes with the hope that it'll help in both cases if
> you're fine with it, with slight explanations.

Makes sense. Thanks!

-- 
Thanks,

David / dhildenb





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux