]> git.pld-linux.org Git - packages/lttng-modules.git/blame - kernel-6.1.patch
- rel 2
[packages/lttng-modules.git] / kernel-6.1.patch
CommitLineData
93972004
JR
1commit abbffdb8dfba2a3b8ba7f5b738b6c55debcf1a13
2Author: Michael Jeanson <mjeanson@efficios.com>
3Date: Mon Oct 17 13:49:51 2022 -0400
4
5 fix: mm/slab_common: drop kmem_alloc & avoid dereferencing fields when not using (v6.1)
6
7 See uptream commit:
8
9 commit 2c1d697fb8ba6d2d44f914d4268ae1ccdf025f1b
10 Author: Hyeonggon Yoo <42.hyeyoo@gmail.com>
11 Date: Wed Aug 17 19:18:24 2022 +0900
12
13 mm/slab_common: drop kmem_alloc & avoid dereferencing fields when not using
14
15 Drop kmem_alloc event class, and define kmalloc and kmem_cache_alloc
16 using TRACE_EVENT() macro.
17
18 And then this patch does:
19 - Do not pass pointer to struct kmem_cache to trace_kmalloc.
20 gfp flag is enough to know if it's accounted or not.
21 - Avoid dereferencing s->object_size and s->size when not using kmem_cache_alloc event.
22 - Avoid dereferencing s->name in when not using kmem_cache_free event.
23 - Adjust s->size to SLOB_UNITS(s->size) * SLOB_UNIT in SLOB
24
25 Change-Id: Icd7925731ed4a737699c3746cb7bb7760a4e8009
26 Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
27 Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
28
29diff --git a/include/instrumentation/events/kmem.h b/include/instrumentation/events/kmem.h
30index 219533a1..0f5bd8e6 100644
31--- a/include/instrumentation/events/kmem.h
32+++ b/include/instrumentation/events/kmem.h
33@@ -10,9 +10,58 @@
34 #include <lttng/kernel-version.h>
35
36 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,0,0))
37-
38 #include <../../mm/slab.h>
39+#endif
40+
41+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,1,0))
42+LTTNG_TRACEPOINT_EVENT_MAP(kmalloc,
43+
44+ kmem_kmalloc,
45+
46+ TP_PROTO(unsigned long call_site,
47+ const void *ptr,
48+ size_t bytes_req,
49+ size_t bytes_alloc,
50+ gfp_t gfp_flags,
51+ int node),
52+
53+ TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags, node),
54+
55+ TP_FIELDS(
56+ ctf_integer_hex(unsigned long, call_site, call_site)
57+ ctf_integer_hex(const void *, ptr, ptr)
58+ ctf_integer(size_t, bytes_req, bytes_req)
59+ ctf_integer(size_t, bytes_alloc, bytes_alloc)
60+ ctf_integer(gfp_t, gfp_flags, gfp_flags)
61+ ctf_integer(int, node, node)
62+ ctf_integer(bool, accounted, (IS_ENABLED(CONFIG_MEMCG_KMEM) &&
63+ (gfp_flags & __GFP_ACCOUNT) ? true : false))
64+ )
65+)
66+
67+LTTNG_TRACEPOINT_EVENT(kmem_cache_alloc,
68+
69+ TP_PROTO(unsigned long call_site,
70+ const void *ptr,
71+ struct kmem_cache *s,
72+ gfp_t gfp_flags,
73+ int node),
74+
75+ TP_ARGS(call_site, ptr, s, gfp_flags, node),
76
77+ TP_FIELDS(
78+ ctf_integer_hex(unsigned long, call_site, call_site)
79+ ctf_integer_hex(const void *, ptr, ptr)
80+ ctf_integer(size_t, bytes_req, s->object_size)
81+ ctf_integer(size_t, bytes_alloc, s->size)
82+ ctf_integer(gfp_t, gfp_flags, gfp_flags)
83+ ctf_integer(int, node, node)
84+ ctf_integer(bool, accounted, IS_ENABLED(CONFIG_MEMCG_KMEM) ?
85+ ((gfp_flags & __GFP_ACCOUNT) ||
86+ (s->flags & SLAB_ACCOUNT)) : false)
87+ )
88+)
89+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,0,0))
90 LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc,
91
92 TP_PROTO(unsigned long call_site,
93@@ -53,18 +102,16 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc, kmem_cache_alloc,
94
95 TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags)
96 )
97-
98-LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc_node,
99+#else
100+LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc,
101
102 TP_PROTO(unsigned long call_site,
103 const void *ptr,
104- struct kmem_cache *s,
105 size_t bytes_req,
106 size_t bytes_alloc,
107- gfp_t gfp_flags,
108- int node),
109+ gfp_t gfp_flags),
110
111- TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node),
112+ TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags),
113
114 TP_FIELDS(
115 ctf_integer_hex(unsigned long, call_site, call_site)
116@@ -72,42 +119,40 @@ LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc_node,
117 ctf_integer(size_t, bytes_req, bytes_req)
118 ctf_integer(size_t, bytes_alloc, bytes_alloc)
119 ctf_integer(gfp_t, gfp_flags, gfp_flags)
120- ctf_integer(int, node, node)
121- ctf_integer(bool, accounted, IS_ENABLED(CONFIG_MEMCG_KMEM) ?
122- ((gfp_flags & __GFP_ACCOUNT) ||
123- (s && s->flags & SLAB_ACCOUNT)) : false)
124 )
125 )
126
127-LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc_node, kmalloc_node,
128+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc, kmalloc,
129
130- kmem_kmalloc_node,
131+ kmem_kmalloc,
132
133 TP_PROTO(unsigned long call_site, const void *ptr,
134- struct kmem_cache *s, size_t bytes_req, size_t bytes_alloc,
135- gfp_t gfp_flags, int node),
136+ size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
137
138- TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node)
139+ TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
140 )
141
142-LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc_node, kmem_cache_alloc_node,
143+LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc, kmem_cache_alloc,
144
145 TP_PROTO(unsigned long call_site, const void *ptr,
146- struct kmem_cache *s, size_t bytes_req, size_t bytes_alloc,
147- gfp_t gfp_flags, int node),
148+ size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
149
150- TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node)
151+ TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
152 )
153-#else
154-LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc,
155+#endif
156+
157+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,0,0))
158+LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc_node,
159
160 TP_PROTO(unsigned long call_site,
161 const void *ptr,
162+ struct kmem_cache *s,
163 size_t bytes_req,
164 size_t bytes_alloc,
165- gfp_t gfp_flags),
166+ gfp_t gfp_flags,
167+ int node),
168
169- TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags),
170+ TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node),
171
172 TP_FIELDS(
173 ctf_integer_hex(unsigned long, call_site, call_site)
174@@ -115,27 +160,33 @@ LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc,
175 ctf_integer(size_t, bytes_req, bytes_req)
176 ctf_integer(size_t, bytes_alloc, bytes_alloc)
177 ctf_integer(gfp_t, gfp_flags, gfp_flags)
178+ ctf_integer(int, node, node)
179+ ctf_integer(bool, accounted, IS_ENABLED(CONFIG_MEMCG_KMEM) ?
180+ ((gfp_flags & __GFP_ACCOUNT) ||
181+ (s && s->flags & SLAB_ACCOUNT)) : false)
182 )
183 )
184
185-LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc, kmalloc,
186+LTTNG_TRACEPOINT_EVENT_INSTANCE_MAP(kmem_alloc_node, kmalloc_node,
187
188- kmem_kmalloc,
189+ kmem_kmalloc_node,
190
191 TP_PROTO(unsigned long call_site, const void *ptr,
192- size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
193+ struct kmem_cache *s, size_t bytes_req, size_t bytes_alloc,
194+ gfp_t gfp_flags, int node),
195
196- TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
197+ TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node)
198 )
199
200-LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc, kmem_cache_alloc,
201+LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_alloc_node, kmem_cache_alloc_node,
202
203 TP_PROTO(unsigned long call_site, const void *ptr,
204- size_t bytes_req, size_t bytes_alloc, gfp_t gfp_flags),
205+ struct kmem_cache *s, size_t bytes_req, size_t bytes_alloc,
206+ gfp_t gfp_flags, int node),
207
208- TP_ARGS(call_site, ptr, bytes_req, bytes_alloc, gfp_flags)
209+ TP_ARGS(call_site, ptr, s, bytes_req, bytes_alloc, gfp_flags, node)
210 )
211-
212+#else
213 LTTNG_TRACEPOINT_EVENT_CLASS(kmem_alloc_node,
214
215 TP_PROTO(unsigned long call_site,
216@@ -192,19 +243,6 @@ LTTNG_TRACEPOINT_EVENT_MAP(kfree,
217 ctf_integer_hex(const void *, ptr, ptr)
218 )
219 )
220-
221-LTTNG_TRACEPOINT_EVENT(kmem_cache_free,
222-
223- TP_PROTO(unsigned long call_site, const void *ptr, const char *name),
224-
225- TP_ARGS(call_site, ptr, name),
226-
227- TP_FIELDS(
228- ctf_integer_hex(unsigned long, call_site, call_site)
229- ctf_integer_hex(const void *, ptr, ptr)
230- ctf_string(name, name)
231- )
232-)
233 #else
234 LTTNG_TRACEPOINT_EVENT_CLASS(kmem_free,
235
236@@ -235,6 +273,34 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(kmem_free, kmem_cache_free,
237 )
238 #endif
239
240+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,1,0))
241+LTTNG_TRACEPOINT_EVENT(kmem_cache_free,
242+
243+ TP_PROTO(unsigned long call_site, const void *ptr, const struct kmem_cache *s),
244+
245+ TP_ARGS(call_site, ptr, s),
246+
247+ TP_FIELDS(
248+ ctf_integer_hex(unsigned long, call_site, call_site)
249+ ctf_integer_hex(const void *, ptr, ptr)
250+ ctf_string(name, s->name)
251+ )
252+)
253+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,12,0))
254+LTTNG_TRACEPOINT_EVENT(kmem_cache_free,
255+
256+ TP_PROTO(unsigned long call_site, const void *ptr, const char *name),
257+
258+ TP_ARGS(call_site, ptr, name),
259+
260+ TP_FIELDS(
261+ ctf_integer_hex(unsigned long, call_site, call_site)
262+ ctf_integer_hex(const void *, ptr, ptr)
263+ ctf_string(name, name)
264+ )
265+)
266+#endif
267+
268 #if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(3,3,0))
269 LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free, kmem_mm_page_free,
270 #else
This page took 0.10064 seconds and 4 git commands to generate.