Issue in count_mm_mlocked_page_nr() with commit afcf76df48f9 ("mm/mlock: use vma iterator and maple state instead of vma linked list")
liam.howlett at oracle.com
Wed Jun 15 08:01:27 PDT 2022
* Lukas Bulwahn <lukas.bulwahn at gmail.com> [220614 07:33]:
> Dear Matthew, dear Liam,
> The commit afcf76df48f9 ("mm/mlock: use vma iterator and maple state instead
> of vma linked list") refactors the function count_mm_mlocked_page_nr() in
> mm/mlock.c, such that the special case:
> if (mm == NULL)
> mm = current->mm;
> is now dead code. Before the refactoring, after this if statement, the variable
> mm was used further in vma = find_vma(mm, start) in the following line, but now,
> with the introduction of VMA_ITERATOR(vmi, mm, start) before the if statement,
> the assignment within the if statement is simply ignored.
> I assume that:
> - If the semantics of this function shall be preserved, the VMA_ITERATOR macro
> needs to move after the if statement.
> - or, if the consideration of the special case on mm == NULL is actually
> obsolete with this refactoring, it could be simply deleted.
I think this code was never necessary. This statement was added in the
same commit that added the only user of the function , which passes
in current->mm as the argument.
> I will keep it up to you how this issue is correctly resolved.
> This was discovered due to tracking all dead stores that clang-analyzer reports
> on an x86 defconfig. The underlying issue here is more severe than "just a dead
> store in the kernel code base", but it is probably easy for you to resolve.
Thanks for the report. This code should be dropped.
 Commit ID 0cf2f6f6dc605
More information about the maple-tree