@@ -34,12 +34,6 @@ struct uprobe_trace_entry_head {
34
34
#define DATAOF_TRACE_ENTRY (entry , is_return ) \
35
35
((void*)(entry) + SIZEOF_TRACE_ENTRY(is_return))
36
36
37
- struct trace_uprobe_filter {
38
- rwlock_t rwlock ;
39
- int nr_systemwide ;
40
- struct list_head perf_events ;
41
- };
42
-
43
37
static int trace_uprobe_create (int argc , const char * * argv );
44
38
static int trace_uprobe_show (struct seq_file * m , struct dyn_event * ev );
45
39
static int trace_uprobe_release (struct dyn_event * ev );
@@ -263,14 +257,6 @@ process_fetch_insn(struct fetch_insn *code, struct pt_regs *regs, void *dest,
263
257
}
264
258
NOKPROBE_SYMBOL (process_fetch_insn )
265
259
266
- static struct trace_uprobe_filter *
267
- trace_uprobe_get_filter (struct trace_uprobe * tu )
268
- {
269
- struct trace_probe_event * event = tu -> tp .event ;
270
-
271
- return (struct trace_uprobe_filter * )& event -> data [0 ];
272
- }
273
-
274
260
static inline void init_trace_uprobe_filter (struct trace_uprobe_filter * filter )
275
261
{
276
262
rwlock_init (& filter -> rwlock );
@@ -358,16 +344,15 @@ alloc_trace_uprobe(const char *group, const char *event, int nargs, bool is_ret)
358
344
if (!tu )
359
345
return ERR_PTR (- ENOMEM );
360
346
361
- ret = trace_probe_init (& tu -> tp , event , group ,
362
- sizeof (struct trace_uprobe_filter ));
347
+ ret = trace_probe_init (& tu -> tp , event , group , true);
363
348
if (ret < 0 )
364
349
goto error ;
365
350
366
351
dyn_event_init (& tu -> devent , & trace_uprobe_ops );
367
352
tu -> consumer .handler = uprobe_dispatcher ;
368
353
if (is_ret )
369
354
tu -> consumer .ret_handler = uretprobe_dispatcher ;
370
- init_trace_uprobe_filter (trace_uprobe_get_filter ( tu ) );
355
+ init_trace_uprobe_filter (tu -> tp . event -> filter );
371
356
return tu ;
372
357
373
358
error :
@@ -1076,7 +1061,7 @@ static void __probe_event_disable(struct trace_probe *tp)
1076
1061
struct trace_uprobe * tu ;
1077
1062
1078
1063
tu = container_of (tp , struct trace_uprobe , tp );
1079
- WARN_ON (!uprobe_filter_is_empty (trace_uprobe_get_filter ( tu ) ));
1064
+ WARN_ON (!uprobe_filter_is_empty (tu -> tp . event -> filter ));
1080
1065
1081
1066
list_for_each_entry (pos , trace_probe_probe_list (tp ), list ) {
1082
1067
tu = container_of (pos , struct trace_uprobe , tp );
@@ -1117,7 +1102,7 @@ static int probe_event_enable(struct trace_event_call *call,
1117
1102
}
1118
1103
1119
1104
tu = container_of (tp , struct trace_uprobe , tp );
1120
- WARN_ON (!uprobe_filter_is_empty (trace_uprobe_get_filter ( tu ) ));
1105
+ WARN_ON (!uprobe_filter_is_empty (tu -> tp . event -> filter ));
1121
1106
1122
1107
if (enabled )
1123
1108
return 0 ;
@@ -1281,7 +1266,7 @@ static int uprobe_perf_close(struct trace_event_call *call,
1281
1266
return - ENODEV ;
1282
1267
1283
1268
tu = container_of (tp , struct trace_uprobe , tp );
1284
- if (trace_uprobe_filter_remove (trace_uprobe_get_filter ( tu ) , event ))
1269
+ if (trace_uprobe_filter_remove (tu -> tp . event -> filter , event ))
1285
1270
return 0 ;
1286
1271
1287
1272
list_for_each_entry (pos , trace_probe_probe_list (tp ), list ) {
@@ -1306,7 +1291,7 @@ static int uprobe_perf_open(struct trace_event_call *call,
1306
1291
return - ENODEV ;
1307
1292
1308
1293
tu = container_of (tp , struct trace_uprobe , tp );
1309
- if (trace_uprobe_filter_add (trace_uprobe_get_filter ( tu ) , event ))
1294
+ if (trace_uprobe_filter_add (tu -> tp . event -> filter , event ))
1310
1295
return 0 ;
1311
1296
1312
1297
list_for_each_entry (pos , trace_probe_probe_list (tp ), list ) {
@@ -1328,7 +1313,7 @@ static bool uprobe_perf_filter(struct uprobe_consumer *uc,
1328
1313
int ret ;
1329
1314
1330
1315
tu = container_of (uc , struct trace_uprobe , consumer );
1331
- filter = trace_uprobe_get_filter ( tu ) ;
1316
+ filter = tu -> tp . event -> filter ;
1332
1317
1333
1318
read_lock (& filter -> rwlock );
1334
1319
ret = __uprobe_perf_filter (filter , mm );
0 commit comments