Commit e87c6bc
bpf: permit multiple bpf attachments for a single perf event
This patch enables multiple bpf attachments for a
kprobe/uprobe/tracepoint single trace event.
Each trace_event keeps a list of attached perf events.
When an event happens, all attached bpf programs will
be executed based on the order of attachment.
A global bpf_event_mutex lock is introduced to protect
prog_array attaching and detaching. An alternative will
be introduce a mutex lock in every trace_event_call
structure, but it takes a lot of extra memory.
So a global bpf_event_mutex lock is a good compromise.
The bpf prog detachment involves allocation of memory.
If the allocation fails, a dummy do-nothing program
will replace to-be-detached program in-place.
Signed-off-by: Yonghong Song <yhs@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>1 parent 0b4c684 commit e87c6bc
File tree
9 files changed
+255
-56
lines changed- include
- linux
- trace
- kernel
- bpf
- events
- trace
9 files changed
+255
-56
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
273 | 273 | | |
274 | 274 | | |
275 | 275 | | |
276 | | - | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
277 | 284 | | |
278 | | - | |
| 285 | + | |
| 286 | + | |
279 | 287 | | |
280 | 288 | | |
281 | | - | |
282 | | - | |
283 | | - | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
284 | 298 | | |
285 | 299 | | |
286 | 300 | | |
287 | 301 | | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
288 | 308 | | |
289 | 309 | | |
290 | 310 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
271 | 271 | | |
272 | 272 | | |
273 | 273 | | |
274 | | - | |
275 | | - | |
| 274 | + | |
276 | 275 | | |
277 | 276 | | |
278 | 277 | | |
279 | 278 | | |
280 | 279 | | |
281 | 280 | | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
282 | 305 | | |
283 | 306 | | |
284 | 307 | | |
| |||
435 | 458 | | |
436 | 459 | | |
437 | 460 | | |
438 | | - | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
439 | 464 | | |
440 | | - | |
| 465 | + | |
441 | 466 | | |
442 | 467 | | |
443 | 468 | | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
444 | 478 | | |
445 | 479 | | |
446 | 480 | | |
| |||
511 | 545 | | |
512 | 546 | | |
513 | 547 | | |
| 548 | + | |
514 | 549 | | |
515 | 550 | | |
516 | 551 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
37 | | - | |
38 | 37 | | |
39 | 38 | | |
40 | 39 | | |
| |||
46 | 45 | | |
47 | 46 | | |
48 | 47 | | |
49 | | - | |
50 | | - | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
51 | 51 | | |
52 | 52 | | |
53 | 53 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1394 | 1394 | | |
1395 | 1395 | | |
1396 | 1396 | | |
| 1397 | + | |
| 1398 | + | |
| 1399 | + | |
| 1400 | + | |
| 1401 | + | |
| 1402 | + | |
| 1403 | + | |
| 1404 | + | |
| 1405 | + | |
| 1406 | + | |
| 1407 | + | |
| 1408 | + | |
| 1409 | + | |
| 1410 | + | |
1397 | 1411 | | |
1398 | 1412 | | |
1399 | 1413 | | |
| |||
1463 | 1477 | | |
1464 | 1478 | | |
1465 | 1479 | | |
| 1480 | + | |
| 1481 | + | |
| 1482 | + | |
| 1483 | + | |
| 1484 | + | |
| 1485 | + | |
| 1486 | + | |
| 1487 | + | |
| 1488 | + | |
| 1489 | + | |
| 1490 | + | |
| 1491 | + | |
| 1492 | + | |
| 1493 | + | |
| 1494 | + | |
| 1495 | + | |
| 1496 | + | |
| 1497 | + | |
| 1498 | + | |
| 1499 | + | |
| 1500 | + | |
| 1501 | + | |
| 1502 | + | |
| 1503 | + | |
| 1504 | + | |
| 1505 | + | |
| 1506 | + | |
| 1507 | + | |
| 1508 | + | |
| 1509 | + | |
| 1510 | + | |
| 1511 | + | |
| 1512 | + | |
| 1513 | + | |
| 1514 | + | |
| 1515 | + | |
| 1516 | + | |
| 1517 | + | |
| 1518 | + | |
| 1519 | + | |
| 1520 | + | |
| 1521 | + | |
| 1522 | + | |
| 1523 | + | |
| 1524 | + | |
| 1525 | + | |
| 1526 | + | |
| 1527 | + | |
| 1528 | + | |
| 1529 | + | |
| 1530 | + | |
| 1531 | + | |
| 1532 | + | |
| 1533 | + | |
| 1534 | + | |
| 1535 | + | |
| 1536 | + | |
| 1537 | + | |
| 1538 | + | |
| 1539 | + | |
| 1540 | + | |
| 1541 | + | |
| 1542 | + | |
| 1543 | + | |
| 1544 | + | |
| 1545 | + | |
| 1546 | + | |
1466 | 1547 | | |
1467 | 1548 | | |
1468 | 1549 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7954 | 7954 | | |
7955 | 7955 | | |
7956 | 7956 | | |
7957 | | - | |
7958 | | - | |
7959 | | - | |
| 7957 | + | |
7960 | 7958 | | |
7961 | | - | |
| 7959 | + | |
7962 | 7960 | | |
7963 | 7961 | | |
7964 | 7962 | | |
| |||
8147 | 8145 | | |
8148 | 8146 | | |
8149 | 8147 | | |
| 8148 | + | |
8150 | 8149 | | |
8151 | 8150 | | |
8152 | 8151 | | |
8153 | 8152 | | |
8154 | | - | |
8155 | | - | |
8156 | | - | |
8157 | 8153 | | |
8158 | 8154 | | |
8159 | 8155 | | |
| |||
8181 | 8177 | | |
8182 | 8178 | | |
8183 | 8179 | | |
8184 | | - | |
8185 | | - | |
8186 | 8180 | | |
8187 | | - | |
| 8181 | + | |
| 8182 | + | |
| 8183 | + | |
| 8184 | + | |
8188 | 8185 | | |
8189 | 8186 | | |
8190 | 8187 | | |
8191 | 8188 | | |
8192 | | - | |
8193 | | - | |
8194 | 8189 | | |
8195 | 8190 | | |
8196 | 8191 | | |
8197 | 8192 | | |
8198 | | - | |
8199 | | - | |
8200 | | - | |
8201 | | - | |
8202 | | - | |
8203 | | - | |
| 8193 | + | |
8204 | 8194 | | |
8205 | 8195 | | |
8206 | 8196 | | |
| |||
0 commit comments