1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21#ifndef __KMEMLEAK_H
22#define __KMEMLEAK_H
23
24#ifdef CONFIG_DEBUG_KMEMLEAK
25
26extern void kmemleak_init(void) __ref;
27extern void kmemleak_alloc(const void *ptr, size_t size, int min_count,
28 gfp_t gfp) __ref;
29extern void kmemleak_free(const void *ptr) __ref;
30extern void kmemleak_free_part(const void *ptr, size_t size) __ref;
31extern void kmemleak_padding(const void *ptr, unsigned long offset,
32 size_t size) __ref;
33extern void kmemleak_not_leak(const void *ptr) __ref;
34extern void kmemleak_ignore(const void *ptr) __ref;
35extern void kmemleak_scan_area(const void *ptr, unsigned long offset,
36 size_t length, gfp_t gfp) __ref;
37extern void kmemleak_no_scan(const void *ptr) __ref;
38
39static inline void kmemleak_alloc_recursive(const void *ptr, size_t size,
40 int min_count, unsigned long flags,
41 gfp_t gfp)
42{
43 if (!(flags & SLAB_NOLEAKTRACE))
44 kmemleak_alloc(ptr, size, min_count, gfp);
45}
46
47static inline void kmemleak_free_recursive(const void *ptr, unsigned long flags)
48{
49 if (!(flags & SLAB_NOLEAKTRACE))
50 kmemleak_free(ptr);
51}
52
53static inline void kmemleak_erase(void **ptr)
54{
55 *ptr = NULL;
56}
57
58#else
59
60static inline void kmemleak_init(void)
61{
62}
63static inline void kmemleak_alloc(const void *ptr, size_t size, int min_count,
64 gfp_t gfp)
65{
66}
67static inline void kmemleak_alloc_recursive(const void *ptr, size_t size,
68 int min_count, unsigned long flags,
69 gfp_t gfp)
70{
71}
72static inline void kmemleak_free(const void *ptr)
73{
74}
75static inline void kmemleak_free_part(const void *ptr, size_t size)
76{
77}
78static inline void kmemleak_free_recursive(const void *ptr, unsigned long flags)
79{
80}
81static inline void kmemleak_not_leak(const void *ptr)
82{
83}
84static inline void kmemleak_ignore(const void *ptr)
85{
86}
87static inline void kmemleak_scan_area(const void *ptr, unsigned long offset,
88 size_t length, gfp_t gfp)
89{
90}
91static inline void kmemleak_erase(void **ptr)
92{
93}
94static inline void kmemleak_no_scan(const void *ptr)
95{
96}
97
98#endif
99
100#endif
101