diff options
| author | Pavel Tikhomirov <[email protected]> | 2024-07-25 12:12:15 +0800 |
|---|---|---|
| committer | Andrew Morton <[email protected]> | 2024-09-01 20:25:49 -0700 |
| commit | 6c99d4eb7c5e0999349cdb9d824ea0ac450d0c8f (patch) | |
| tree | afd55a353f15f9b1c8091a6af6446f5d042c1c57 /tools/perf/scripts/python/bin | |
| parent | fbe76a6557a83af5ef3819fd7b7ffd0a5d3b4e51 (diff) | |
kmemleak: enable tracking for percpu pointers
Patch series "kmemleak: support for percpu memory leak detect'.
This is a rework of this series:
https://lore.kernel.org/lkml/[email protected]/
Originally I was investigating a percpu leak on our customer nodes and
having this functionality was a huge help, which lead to this fix [1].
So probably it's a good idea to have it in mainstream too, especially as
after [2] it became much easier to implement (we already have a separate
tree for percpu pointers).
[1] commit 0af8c09c89681 ("netfilter: x_tables: fix percpu counter block leak on error path when creating new netns")
[2] commit 39042079a0c24 ("kmemleak: avoid RCU stalls when freeing metadata for per-CPU pointers")
This patch (of 2):
This basically does:
- Add min_percpu_addr and max_percpu_addr to filter out unrelated data
similar to min_addr and max_addr;
- Set min_count for percpu pointers to 1 to start tracking them;
- Calculate checksum of percpu area as xor of crc32 for each cpu;
- Split pointer lookup and update refs code into separate helper and use
it twice: once as if the pointer is a virtual pointer and once as if
it's percpu.
[[email protected]: v2]
Link: https://lkml.kernel.org/r/[email protected]
Link: https://lkml.kernel.org/r/[email protected]
Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Pavel Tikhomirov <[email protected]>
Reviewed-by: Catalin Marinas <[email protected]>
Cc: Wei Yongjun <[email protected]>
Cc: Chen Jun <[email protected]>
Cc: Alexander Mikhalitsyn <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/bin')
0 files changed, 0 insertions, 0 deletions