]> git.ipfire.org Git - thirdparty/linux.git/blame - include/linux/kmemleak.h
Merge tag 'meminit-v5.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/kees...
[thirdparty/linux.git] / include / linux / kmemleak.h
CommitLineData
45051539 1/* SPDX-License-Identifier: GPL-2.0-only */
3c7b4e6b
CM
2/*
3 * include/linux/kmemleak.h
4 *
5 * Copyright (C) 2008 ARM Limited
6 * Written by Catalin Marinas <catalin.marinas@arm.com>
3c7b4e6b
CM
7 */
8
9#ifndef __KMEMLEAK_H
10#define __KMEMLEAK_H
11
66f2ca7e 12#include <linux/slab.h>
94f4a161 13#include <linux/vmalloc.h>
66f2ca7e 14
3c7b4e6b
CM
15#ifdef CONFIG_DEBUG_KMEMLEAK
16
98e89cf0 17extern void kmemleak_init(void) __init;
3c7b4e6b 18extern void kmemleak_alloc(const void *ptr, size_t size, int min_count,
a6186d89 19 gfp_t gfp) __ref;
8a8c35fa
LF
20extern void kmemleak_alloc_percpu(const void __percpu *ptr, size_t size,
21 gfp_t gfp) __ref;
94f4a161
CM
22extern void kmemleak_vmalloc(const struct vm_struct *area, size_t size,
23 gfp_t gfp) __ref;
a6186d89
CM
24extern void kmemleak_free(const void *ptr) __ref;
25extern void kmemleak_free_part(const void *ptr, size_t size) __ref;
f528f0b8 26extern void kmemleak_free_percpu(const void __percpu *ptr) __ref;
ffe2c748 27extern void kmemleak_update_trace(const void *ptr) __ref;
a6186d89
CM
28extern void kmemleak_not_leak(const void *ptr) __ref;
29extern void kmemleak_ignore(const void *ptr) __ref;
c017b4be 30extern void kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) __ref;
a6186d89 31extern void kmemleak_no_scan(const void *ptr) __ref;
9099daed
CM
32extern void kmemleak_alloc_phys(phys_addr_t phys, size_t size, int min_count,
33 gfp_t gfp) __ref;
34extern void kmemleak_free_part_phys(phys_addr_t phys, size_t size) __ref;
35extern void kmemleak_not_leak_phys(phys_addr_t phys) __ref;
36extern void kmemleak_ignore_phys(phys_addr_t phys) __ref;
3c7b4e6b
CM
37
38static inline void kmemleak_alloc_recursive(const void *ptr, size_t size,
d50112ed 39 int min_count, slab_flags_t flags,
3c7b4e6b
CM
40 gfp_t gfp)
41{
42 if (!(flags & SLAB_NOLEAKTRACE))
43 kmemleak_alloc(ptr, size, min_count, gfp);
44}
45
d50112ed 46static inline void kmemleak_free_recursive(const void *ptr, slab_flags_t flags)
3c7b4e6b
CM
47{
48 if (!(flags & SLAB_NOLEAKTRACE))
49 kmemleak_free(ptr);
50}
51
52static inline void kmemleak_erase(void **ptr)
53{
54 *ptr = NULL;
55}
56
57#else
58
59static inline void kmemleak_init(void)
60{
61}
62static inline void kmemleak_alloc(const void *ptr, size_t size, int min_count,
63 gfp_t gfp)
64{
65}
66static inline void kmemleak_alloc_recursive(const void *ptr, size_t size,
d50112ed 67 int min_count, slab_flags_t flags,
3c7b4e6b
CM
68 gfp_t gfp)
69{
70}
8a8c35fa
LF
71static inline void kmemleak_alloc_percpu(const void __percpu *ptr, size_t size,
72 gfp_t gfp)
f528f0b8
CM
73{
74}
94f4a161
CM
75static inline void kmemleak_vmalloc(const struct vm_struct *area, size_t size,
76 gfp_t gfp)
77{
78}
3c7b4e6b
CM
79static inline void kmemleak_free(const void *ptr)
80{
81}
53238a60
CM
82static inline void kmemleak_free_part(const void *ptr, size_t size)
83{
84}
d50112ed 85static inline void kmemleak_free_recursive(const void *ptr, slab_flags_t flags)
3c7b4e6b
CM
86{
87}
f528f0b8
CM
88static inline void kmemleak_free_percpu(const void __percpu *ptr)
89{
90}
ffe2c748
CM
91static inline void kmemleak_update_trace(const void *ptr)
92{
93}
3c7b4e6b
CM
94static inline void kmemleak_not_leak(const void *ptr)
95{
96}
97static inline void kmemleak_ignore(const void *ptr)
98{
99}
c017b4be 100static inline void kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp)
3c7b4e6b
CM
101{
102}
103static inline void kmemleak_erase(void **ptr)
104{
105}
106static inline void kmemleak_no_scan(const void *ptr)
107{
108}
9099daed
CM
109static inline void kmemleak_alloc_phys(phys_addr_t phys, size_t size,
110 int min_count, gfp_t gfp)
111{
112}
113static inline void kmemleak_free_part_phys(phys_addr_t phys, size_t size)
114{
115}
116static inline void kmemleak_not_leak_phys(phys_addr_t phys)
117{
118}
119static inline void kmemleak_ignore_phys(phys_addr_t phys)
120{
121}
3c7b4e6b
CM
122
123#endif /* CONFIG_DEBUG_KMEMLEAK */
124
125#endif /* __KMEMLEAK_H */