Centos-kernel-stream-9/Documentation/dev-tools
Jerry Snitselaar e4943fb024 kmemleak: iommu/iova: fix transient kmemleak false positive
JIRA: https://issues.redhat.com/browse/RHEL-78704
Upstream Status: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

commit 7591c127f3b17d5879f18819cad7058bf3a2e276
Author: Catalin Marinas <catalin.marinas@arm.com>
Date:   Mon Nov 4 11:19:44 2024 +0000

    kmemleak: iommu/iova: fix transient kmemleak false positive

    The introduction of iova_depot_pop() in 911aa1245da8 ("iommu/iova: Make
    the rcache depot scale better") confused kmemleak by moving a struct
    iova_magazine object from a singly linked list to rcache->depot and
    resetting the 'next' pointer referencing it.  Unlike doubly linked lists,
    the content of the object being referred is never changed on removal from
    a singly linked list and the kmemleak checksum heuristics do not detect
    such scenario.  This leads to false positives like:

    unreferenced object 0xffff8881a5301000 (size 1024):
      comm "softirq", pid 0, jiffies 4306297099 (age 462.991s)
      hex dump (first 32 bytes):
	00 00 00 00 00 00 00 00 e7 7d 05 00 00 00 00 00  .........}......
	0f b4 05 00 00 00 00 00 b4 96 05 00 00 00 00 00  ................
      backtrace:
	[<ffffffff819f5f08>] __kmem_cache_alloc_node+0x1e8/0x320
	[<ffffffff818a239a>] kmalloc_trace+0x2a/0x60
	[<ffffffff8231d31e>] free_iova_fast+0x28e/0x4e0
	[<ffffffff82310860>] fq_ring_free_locked+0x1b0/0x310
	[<ffffffff8231225d>] fq_flush_timeout+0x19d/0x2e0
	[<ffffffff813e95ba>] call_timer_fn+0x19a/0x5c0
	[<ffffffff813ea16b>] __run_timers+0x78b/0xb80
	[<ffffffff813ea5bd>] run_timer_softirq+0x5d/0xd0
	[<ffffffff82f1d915>] __do_softirq+0x205/0x8b5

    Introduce kmemleak_transient_leak() which resets the object checksum
    requiring another scan pass before it is reported (if still unreferenced).
    Call this new API in iova_depot_pop().

    Link: https://lkml.kernel.org/r/20241104111944.2207155-1-catalin.marinas@arm.com
    Link: https://lore.kernel.org/r/ZY1osaGLyT-sdKE8@shredder/
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Reported-by: Ido Schimmel <idosch@idosch.org>
    Tested-by: Ido Schimmel <idosch@nvidia.com>
    Acked-by: Robin Murphy <robin.murphy@arm.com>
    Cc: Joerg Roedel <joro@8bytes.org>
    Cc: Will Deacon <will@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

(cherry picked from commit 7591c127f3b17d5879f18819cad7058bf3a2e276)
Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
2025-04-03 09:23:30 -07:00
..
kunit Documentation: KUnit: Update the instructions on how to test static functions 2024-07-31 20:32:28 -06:00
checkpatch.rst
coccinelle.rst
gcov.rst
gdb-kernel-debugging.rst
index.rst kmsan: add ReST documentation 2023-10-20 06:14:33 -04:00
kasan.rst kasan, doc: note kasan.fault=panic_on_write behaviour for async modes 2024-12-09 12:21:41 -05:00
kcov.rst
kcsan.rst kcsan: Document modeling of weak memory 2023-09-22 13:20:58 -04:00
kfence.rst kfence: allow use of a deferrable timer 2022-10-12 07:27:55 -04:00
kgdb.rst
kmemleak.rst kmemleak: iommu/iova: fix transient kmemleak false positive 2025-04-03 09:23:30 -07:00
kmsan.rst docs: kmsan: fix formatting of "Example report" 2023-10-20 06:15:09 -04:00
kselftest.rst Merge: livepatch: selected fixes for rhel-9.6 2024-10-25 16:41:26 +00:00
sparse.rst
testing-overview.rst
ubsan.rst