2022-06-06 05:22:04

by patrick wang

[permalink] [raw]
Subject: [PATCH v2 0/4] mm: kmemleak: store objects allocated with physical address separately and check when scan

The kmemleak_*_phys() interface uses "min_low_pfn" and
"max_low_pfn" to check address. But on some architectures,
kmemleak_*_phys() is called before those two variables
initialized. The following steps will be taken:

1) Add OBJECT_PHYS flag and rbtree for the objects allocated
with physical address
2) Store physical address in objects if allocated with OBJECT_PHYS
3) Check the boundary when scan instead of in kmemleak_*_phys()

This patch set will solve:
https://lore.kernel.org/r/[email protected]
https://lore.kernel.org/r/[email protected]

v1: https://lore.kernel.org/r/[email protected]

v1->v2:
- add rbtree for the objects allocated with physical address
- store physical address in objects if allocated with OBJECT_PHYS
- check the upper object boundary as well and avoid duplicate check

Patrick Wang (4):
mm: kmemleak: add OBJECT_PHYS flag for objects allocated with physical
address
mm: kmemleak: add rbtree for objects allocated with physical address
mm: kmemleak: handle address stored in object based on its type
mm: kmemleak: kmemleak_*_phys() set address type and check PA when
scan

mm/kmemleak.c | 193 ++++++++++++++++++++++++++++++++------------------
1 file changed, 123 insertions(+), 70 deletions(-)

--
2.25.1


2022-06-08 23:48:32

by patrick wang

[permalink] [raw]
Subject: Re: [PATCH v2 0/4] mm: kmemleak: store objects allocated with physical address separately and check when scan

On Wed, Jun 8, 2022 at 10:46 AM Kuan-Ying Lee
<[email protected]> wrote:
>
> On Fri, 2022-06-03 at 11:54 +0800, Patrick Wang wrote:
> > The kmemleak_*_phys() interface uses "min_low_pfn" and
> > "max_low_pfn" to check address. But on some architectures,
> > kmemleak_*_phys() is called before those two variables
> > initialized. The following steps will be taken:
> >
> > 1) Add OBJECT_PHYS flag and rbtree for the objects allocated
> > with physical address
> > 2) Store physical address in objects if allocated with OBJECT_PHYS
> > 3) Check the boundary when scan instead of in kmemleak_*_phys()
> >
> > This patch set will solve:
> > https://lore.kernel.org/r/[email protected]
> >
> https://lore.kernel.org/r/[email protected]
>
> Hi Patrick,
>
> If this patchset fix the above issue, I think we need to add
> the below fixes tag.
>
> Fixes: 23c2d497de21 ("mm: kmemleak: take a full lowmem check in
> kmemleak_*_phys()")

Hi Kuan-Ying,

Thanks for taking a look.

This series should solve the false positive on ppc32 and arm64.
And the false positive on arm64 is triggered by commit
23c2d497de21. So I will add the fixes tag.

Thanks,
Patrick