Mathieu Desnoyers [Sat, 3 Sep 2022 18:44:49 +0000 (14:44 -0400)]
Fix: lttng-abi: zero-init counter_conf
Both lttng_abi_copy_user_old_counter_conf and
lttng_abi_copy_user_counter_conf should zero-init the counter_conf
destination argument, else the "dimension->flags" field is uninitialized
before being OR'd with flags.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ib2e0ca5871ec6fc9f485ec1b60f362de9568b9d1
Mathieu Desnoyers [Fri, 2 Sep 2022 20:44:45 +0000 (16:44 -0400)]
counter ABI: Fix too large stack size warning
Fix the following warning by splitting lttng_counter_ioctl (which has a
lot of local variables in the switch/case legs) into many sub-functions.
/home/efficios/git/lttng-modules/src/lttng-abi.c: In function ‘lttng_counter_ioctl’:
/home/efficios/git/lttng-modules/src/lttng-abi.c:1227:1: warning: the frame size of 1032 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1227 | }
| ^
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I250c78827a743c024da2e28fe807fdd5c290e686
Mathieu Desnoyers [Fri, 2 Sep 2022 20:19:06 +0000 (16:19 -0400)]
__lttng_counter_add: skip effect-less code when global_sum_step=0
Skip effect-less code in the common case where global_sum_step=0.
This saves about 1.5ns on x86-64.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I62e8d163143780e64d7130051b1013470fef48fe
Mathieu Desnoyers [Fri, 8 Apr 2022 16:22:14 +0000 (12:22 -0400)]
ABI: add key_string_len output field in lttng_kernel_abi_counter_map_descriptor
Tell userspace the size of the key string. Useful to adjust memory
allocation for a retry.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ifde8f2acc841579b717b78128f8bfddbc0dfee26
Mathieu Desnoyers [Thu, 24 Mar 2022 19:03:45 +0000 (15:03 -0400)]
Implement extensible LTTNG_KERNEL_ABI_COUNTER_EVENT ABI
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I427287757a8842ab163791a6b34918ce80adcf51
Mathieu Desnoyers [Thu, 24 Mar 2022 18:38:20 +0000 (14:38 -0400)]
Implement extensible LTTNG_KERNEL_ABI_COUNTER_MAP_DESCRIPTOR
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ibd16679a5e3354553a9b606a6f3a5f9f2692836d
Mathieu Desnoyers [Thu, 24 Mar 2022 17:58:45 +0000 (13:58 -0400)]
Implement extensible counter read, aggregate, clear ioctls
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I5984e5442dbfe47e00fe4166d0d6cc686e51d655
Mathieu Desnoyers [Thu, 24 Mar 2022 16:21:10 +0000 (12:21 -0400)]
Implement counter configuration/dimensions extensible ABI
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I0660738c60a128b57a6975e65db5bf2a1562a323
Mathieu Desnoyers [Thu, 24 Mar 2022 15:17:52 +0000 (11:17 -0400)]
Implement copy_user_event_param_ext with lttng_copy_struct_from_user
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I55b0c811acc0c09374091dfa2cdc7535d22c9f34
Mathieu Desnoyers [Thu, 24 Mar 2022 15:10:06 +0000 (11:10 -0400)]
Introduce wrapper lttng_copy_struct_from_user
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I67e3d0249bbfdb5bc6e9d469119220a1fe3f03fd
Mathieu Desnoyers [Wed, 23 Mar 2022 20:23:45 +0000 (16:23 -0400)]
Introduce event counter extensible ABI structure layout
Introduce event counter ioctl argument structure with extensible layout
for new ioctls.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I120e057d136951973b9af801fd4940fb9866ce94
Mathieu Desnoyers [Wed, 23 Mar 2022 18:06:59 +0000 (14:06 -0400)]
ABI refactoring: Rename event counter ABI to "old"
The counter ioctls exposed in 2.13 for notifications use a fixed-size
array for the number of dimensions.
We aim to replace this by variable length arrays in 2.14 for event
counters, and introduce new ABIs as extensible structures.
Rename the ioctls as follows:
- LTTNG_KERNEL_ABI_COUNTER -> LTTNG_KERNEL_ABI_OLD_COUNTER
- LTTNG_KERNEL_ABI_COUNTER_READ -> LTTNG_KERNEL_ABI_OLD_COUNTER_READ
- LTTNG_KERNEL_ABI_COUNTER_AGGREGATE -> LTTNG_KERNEL_ABI_OLD_COUNTER_AGGREGATE
- LTTNG_KERNEL_ABI_COUNTER_CLEAR -> LTTNG_KERNEL_ABI_OLD_COUNTER_CLEAR
And rename the following structures:
- lttng_kernel_abi_counter_dimension -> lttng_kernel_abi_old_counter_dimension
- lttng_kernel_abi_counter_conf -> lttng_kernel_abi_old_counter_conf
- lttng_kernel_abi_counter_index -> lttng_kernel_abi_old_counter_index
- lttng_kernel_abi_counter_value -> lttng_kernel_abi_old_counter_value
- lttng_kernel_abi_counter_read -> lttng_kernel_abi_old_counter_read
- lttng_kernel_abi_counter_aggregate -> lttng_kernel_abi_old_counter_aggregate
- lttng_kernel_abi_counter_clear -> lttng_kernel_abi_old_counter_clear
Introduce "TODO" comments where the new ABIs should be implemented.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I7a4f04e89a56ca1415d326976c4ea3afb9715295
Mathieu Desnoyers [Thu, 3 Mar 2022 17:12:44 +0000 (12:12 -0500)]
kretprobe: Implement kretprobes with event enablers
This enables support for enabling only entry or exit for kretprobes.
This enables event notifier support for kretprobes.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ieef4f2744d5e1ebfc2f3320862e143bfe6401620
Mathieu Desnoyers [Tue, 1 Mar 2022 17:27:06 +0000 (12:27 -0500)]
kprobe: Implement kprobes with event enablers
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Idd1285baa8da6476620ddfc3c21d93a8d4ab08f7
Mathieu Desnoyers [Tue, 1 Mar 2022 15:16:53 +0000 (10:16 -0500)]
ABI: introduce lttng_kernel_abi_match_check
Requires introduction of extended event parameters because there are
only 8 bytes of padding left in struct lttng_kernel_abi_event.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I3dd1346093eeee42c1a7a047ec32865fda9c6ff5
Mathieu Desnoyers [Tue, 1 Mar 2022 15:58:32 +0000 (10:58 -0500)]
kretprobe: implement lttng_kretprobes_match_check
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I7a4584c3fa524664097a262d7b5f74eb93d2a335
Mathieu Desnoyers [Tue, 1 Mar 2022 15:34:37 +0000 (10:34 -0500)]
kprobe: Introduce lttng_kprobes_match_check
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Iffc9dba158f9802db9f877fabeec288d5072a84c
Mathieu Desnoyers [Mon, 28 Feb 2022 20:20:51 +0000 (15:20 -0500)]
Implement event notifier kretprobe support
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I32b42ddad79889a19ee8833ed9b52e4a37505f7b
Mathieu Desnoyers [Mon, 28 Feb 2022 20:09:12 +0000 (15:09 -0500)]
Remove lttng_kernel_event_create warnings
Errors returned by lttng_kernel_event_create are handled by the caller,
and may happen e.g. when a kprobe or kretprobe symbol does not exist.
It should not generate a warning in the kernel console.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I0bd59ec35e5648fa6aa1ece3cf36714c5cc1a83e
Mathieu Desnoyers [Mon, 28 Feb 2022 19:15:00 +0000 (14:15 -0500)]
kretprobes: implement event counter support
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Id5142ae8d31bba2c9a806f75cbbfefdca303d523
Mathieu Desnoyers [Mon, 28 Feb 2022 15:40:40 +0000 (10:40 -0500)]
lttng_abi_create_event_notifier: add missing fallthrough
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I8e7011f63ccce4db21b36fcd18eb78e95ca2f406
Mathieu Desnoyers [Fri, 25 Feb 2022 14:38:52 +0000 (09:38 -0500)]
Implement events-by-key hash table
Allow re-use of counter index for events with matching key.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Id1dff39ff3c58d5664d04ae5d77d1ae66e728cd6
Mathieu Desnoyers [Fri, 25 Feb 2022 14:44:06 +0000 (09:44 -0500)]
Rename lttng_event_notifier_group events_ht to events_name_ht
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I64313d4b8255a717ef06ef7bf5944d2c1c4e24da
Mathieu Desnoyers [Fri, 25 Feb 2022 14:40:03 +0000 (09:40 -0500)]
Rename lttng_get_event_ht_from_enabler to lttng_get_events_name_ht_from_enabler
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I53bb9917ae7644ba79f36dc16f9feb095a3c4194
Mathieu Desnoyers [Thu, 24 Feb 2022 20:42:56 +0000 (15:42 -0500)]
Implement counter maps (for listing)
Also wire up LTTNG_KERNEL_ABI_SYSCALL_MASK in lttng_counter_ioctl.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: If9215bafb010162250636c9407d85fefcd61ebc2
Mathieu Desnoyers [Thu, 24 Feb 2022 19:58:18 +0000 (14:58 -0500)]
Implement channel counter creation/destroy
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I2e242fe9b50f3b4ae5f97969b587f4306051109f
Mathieu Desnoyers [Tue, 22 Feb 2022 16:59:09 +0000 (11:59 -0500)]
Cleanup: remove kprobes/kretprobes/uprobes unused exports
Can be removed now that those are embedded in the tracer core.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I14f4b011c562d7a2e669749159fda23ee964554f
Mathieu Desnoyers [Tue, 22 Feb 2022 16:56:29 +0000 (11:56 -0500)]
Fix: circular dependency on symbol lttng_id_tracker_lookup
Adding lttng_id_tracker_lookup feature into kprobes, uprobes and
kretprobes introduces a circular dependency between lttng-tracer.ko and
the respective probe modules.
There is no real reason for having the kprobes/uprobes/kretprobes
modules separate from the tracer core, so combine those.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Iea80c8054054b341e1836c8675c04e00424608fc
Mathieu Desnoyers [Mon, 21 Feb 2022 21:18:04 +0000 (16:18 -0500)]
Fix: circular dependency between lttng-events and lib counter
lib counter depends on lttng-events (tracer), not the opposite. Use the
lttng-counter clients callbacks to remove the circular dependency.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I04cdbfb39deb76884092459cab62227b9f39d85d
Mathieu Desnoyers [Thu, 10 Feb 2022 21:36:47 +0000 (16:36 -0500)]
Implement event counter creation
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I5b407513c5c64ae418fc1846ae10f3fa99609796
Mathieu Desnoyers [Thu, 10 Feb 2022 20:53:59 +0000 (15:53 -0500)]
Rename lttng_abi_create_event to lttng_abi_create_event_recorder_enabler
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I39b2e288b952e0316b6511f4f79014700cbc42e5
Mathieu Desnoyers [Thu, 10 Feb 2022 20:41:58 +0000 (15:41 -0500)]
uprobe: implement counter support
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I46909ecc57a15d5f0c6b58e1f2f254219e55e01d
Mathieu Desnoyers [Thu, 10 Feb 2022 20:40:25 +0000 (15:40 -0500)]
kretprobes: implement counter support
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I8e64712455b2812305250a45311b5b023281a1fe
Mathieu Desnoyers [Thu, 10 Feb 2022 20:36:48 +0000 (15:36 -0500)]
kprobe: implement counter support
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I8741ab89b03089ec34f17965749f84ddc23a2601
Mathieu Desnoyers [Thu, 10 Feb 2022 20:30:31 +0000 (15:30 -0500)]
Add missing counter handling
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I5ba6bc03b7c090e6c9b6431d81da4a739c764610
Mathieu Desnoyers [Thu, 10 Feb 2022 20:23:57 +0000 (15:23 -0500)]
abi: introduce session common
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Id6512b87661d7e29666f41002370d065d540a27a
Mathieu Desnoyers [Thu, 10 Feb 2022 19:45:27 +0000 (14:45 -0500)]
Implement event counter probe
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I6cdeef84a3b2f5675029a7509ce353a17bbeb0b4
Mathieu Desnoyers [Thu, 10 Feb 2022 19:39:15 +0000 (14:39 -0500)]
Remove unused lttng_event_enabler_event_name_match_event
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Icd02b897aa6aaa870e503db873f86f80a04ff02c
Mathieu Desnoyers [Thu, 10 Feb 2022 19:35:09 +0000 (14:35 -0500)]
Match event keys for syscall events
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ia0b3df16abeda9e0a404eeed156e33c17f4f47e3
Mathieu Desnoyers [Thu, 10 Feb 2022 19:25:35 +0000 (14:25 -0500)]
Skip sync of disabled enablers
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Icf20e16baee3c63b84f1be9f730100229108bcc6
Mathieu Desnoyers [Thu, 10 Feb 2022 19:20:48 +0000 (14:20 -0500)]
Remove duplicate lookup in lttng_event_enabler_create_tracepoint_events_if_missing
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ic597f34dfc3823ba83728bde3fcd41bb3eed9c91
Mathieu Desnoyers [Thu, 10 Feb 2022 19:17:11 +0000 (14:17 -0500)]
Implement _lttng_kernel_event_create counter event support
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: If1a2e1d64d8663f592e81611914402d30f111e17
Mathieu Desnoyers [Thu, 10 Feb 2022 18:53:07 +0000 (13:53 -0500)]
lttng_kernel_event_alloc: handler counters
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ic50018274bd5048181f9da278027e1c175b6bd80
Mathieu Desnoyers [Thu, 10 Feb 2022 17:52:54 +0000 (12:52 -0500)]
Refactor notification error counters
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I106b6fe85f899297582e131252c591ac5ba7d538
Mathieu Desnoyers [Wed, 2 Feb 2022 20:37:03 +0000 (15:37 -0500)]
Add counter case in lttng_kernel_event_id_available
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I1967ddd37d677806558a41138f32566ce19bae21
Mathieu Desnoyers [Thu, 27 Jan 2022 21:09:14 +0000 (16:09 -0500)]
Implement event counters
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I9eadee226c78c6b48158a0670b9b50a8b6aab06e
Mathieu Desnoyers [Wed, 2 Feb 2022 20:23:02 +0000 (15:23 -0500)]
Add channel counter structures to internal header
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I00b2a4df48d66977deafedeb3e9f5021754bf42a
Mathieu Desnoyers [Thu, 27 Jan 2022 20:58:08 +0000 (15:58 -0500)]
Wire up LTTNG_KERNEL_EVENT_TYPE_COUNTER
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Iddfaa8de487a376d35d404415bfec0676d7cb304
Mathieu Desnoyers [Thu, 27 Jan 2022 20:53:01 +0000 (15:53 -0500)]
Refactor _lttng_event_destroy duplicated code
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I42a607101c084ade8ebed673b3a666987cfad98f
Mathieu Desnoyers [Thu, 27 Jan 2022 19:44:26 +0000 (14:44 -0500)]
struct lttng_kernel_event_session_common_private: remove unused ctx field
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I99a8eb21db55ec8d9df2300853b3d08abec095e5
Mathieu Desnoyers [Thu, 27 Jan 2022 19:27:47 +0000 (14:27 -0500)]
Rename struct lttng_kernel_session_private events_ht field to events_name_ht
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I2452d6154064fd91e801d0b8487168c7cdfb0a3e
Mathieu Desnoyers [Thu, 27 Jan 2022 19:24:10 +0000 (14:24 -0500)]
Rename struct lttng_metadata_stream list field to node
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Iaefccfd27d18cbb90726f6b77400409eeea493d0
Mathieu Desnoyers [Thu, 27 Jan 2022 19:21:52 +0000 (14:21 -0500)]
Rename struct lttng_kernel_session_private list field to node
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I971bb068e51567ef79a30608984137827f1d45c8
Mathieu Desnoyers [Thu, 27 Jan 2022 19:19:09 +0000 (14:19 -0500)]
Reorder struct lttng_kernel_session_private fields
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I9a7c8f415c1b0b128662081f580df14bd5368893
Mathieu Desnoyers [Thu, 27 Jan 2022 19:17:28 +0000 (14:17 -0500)]
Rename session events field to events_head
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I8181d86dc2dede4ba15178722e1eb884feb556eb
Mathieu Desnoyers [Thu, 27 Jan 2022 19:14:54 +0000 (14:14 -0500)]
Rename session chan field to chan_head
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I4447978d05d2979e8c7e8c6d66126da66142e32c
Mathieu Desnoyers [Thu, 27 Jan 2022 19:09:51 +0000 (14:09 -0500)]
Introduce struct lttng_event_counter_enabler
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I9683c18b4d661d65b128a1edda5adb1154d8d543
Mathieu Desnoyers [Thu, 27 Jan 2022 19:05:35 +0000 (14:05 -0500)]
Introduce struct lttng_kernel_event_counter_private
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I2cc9d82a18f8222682e413e41a27acb8f8a74754
Mathieu Desnoyers [Thu, 27 Jan 2022 19:08:23 +0000 (14:08 -0500)]
Move counter key structures to beginning of events-internal.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I4b76cac6837a5098720da9ae321169b46d78866b
Mathieu Desnoyers [Thu, 27 Jan 2022 19:03:49 +0000 (14:03 -0500)]
Introduce struct lttng_kernel_channel_counter and struct lttng_kernel_channel_counter_ops
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Icdc8c1fb6444eca2051b60fa4a7dd564e943da68
Mathieu Desnoyers [Thu, 27 Jan 2022 19:03:14 +0000 (14:03 -0500)]
Introduce struct lttng_kernel_event_counter
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ie0e9ab234bce48c3ce23cf0d4c664ce4bb3bdaee
Mathieu Desnoyers [Mon, 10 Jan 2022 21:31:34 +0000 (16:31 -0500)]
Introduce struct lttng_kernel_event_session_common_private
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ibaab6a0a8ce60bbc5ac212106c5c75a8a16d7e2c
Mathieu Desnoyers [Mon, 10 Jan 2022 21:19:27 +0000 (16:19 -0500)]
Introduce struct lttng_event_enabler_session_common
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ia160e559525f9276512506271742703804be6c9b
Mathieu Desnoyers [Mon, 10 Jan 2022 19:48:59 +0000 (14:48 -0500)]
Trace hit counters: introduce counter private data structures
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ie6adadcbab8c41237b2bfb03b1c341b4183715cc
Mathieu Desnoyers [Mon, 10 Jan 2022 19:34:13 +0000 (14:34 -0500)]
Trace hit counters: ABI
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I886975f27af90e42cbab274f70820a06090c48bc
Mathieu Desnoyers [Fri, 2 Sep 2022 20:13:46 +0000 (16:13 -0400)]
Fix: libcounter: __lttng_counter_add global sum step alloc vs sync mixup
The global sum step needs to be handled on per-cpu allocated counters,
not per-cpu sync.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I9b6ef221fb099c9fc602dfdb9a93d70ae2192500
Mathieu Desnoyers [Mon, 28 Feb 2022 15:40:03 +0000 (10:40 -0500)]
Fix: lttng_abi_validate_event_param: use kretprobe enum
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I8c444e16781fb8d8df9f05f0c70775f324ae030f
Mathieu Desnoyers [Thu, 4 Jul 2024 15:22:23 +0000 (11:22 -0400)]
kvm instrumentation: Fix kvm_mmio event NULL pointer dereference
Upstream Linux commit
e39d200fa5bf ("KVM: Fix stack-out-of-bounds read
in write_mmio") introduce a NULL pointer check within TP_fast_assign().
lttng-modules commit
33630522da97 ("Update kvm instrumentation for 4.15")
introduce use of:
ctf_sequence_hex(unsigned char, val, val, u32, len)
without the required NULL pointer check, which can trigger NULL pointer
dereference in case of unsatisfied MMIO read.
Add the missing NULL pointer check. Record a sequence of length 0 in the
trace when the val pointer is NULL.
Reported-by: Fahad Arslan <fahad.arslan@siemens.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I51a171a56af96e2cf68dba73f7eb473dd6c0ba0e
Mathieu Desnoyers [Thu, 4 Jul 2024 15:15:24 +0000 (11:15 -0400)]
kvm instrumentation: Cleanup: Eliminate code duplication
Commit
0badc02f82b38 ("Fix: adjust SLE version ranges to build with SP2
and SP3") introduced code duplication. Modify the version match logic to
remove duplicated code.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I918c87d2e6d68e6c71df18fbf66d88445ce68d23
Kienan Stewart [Thu, 20 Jun 2024 15:15:59 +0000 (11:15 -0400)]
Fix: Build on CentOS 9 Stream 2024-06
Change-Id: I445d2df9d49930e28e57b6a7d075a9f68e914bad
Signed-off-by: Kienan Stewart <kstewart@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Tue, 25 Jun 2024 18:15:39 +0000 (14:15 -0400)]
fix: file: Rename fcheck lookup_fd_rcu (v5.10.220)
See upstream backported commit:
commit
c4716bb296504cbc64aeefb370df44e821214c44
Author: Eric W. Biederman <ebiederm@xmission.com>
Date: Fri Nov 20 17:14:27 2020 -0600
file: Rename fcheck lookup_fd_rcu
[ Upstream commit
460b4f812a9d473d4b39d87d37844f9fc30a9eb3 ]
Also remove the confusing comment about checking if a fd exists. I
could not find one instance in the entire kernel that still matches
the description or the reason for the name fcheck.
The need for better names became apparent in the last round of
discussion of this set of changes[1].
[1] https://lkml.kernel.org/r/CAHk-=wj8BQbgJFLa+J0e=iT-1qpmCRTbPAJ8gd6MJQ=kbRPqyQ@mail.gmail.com
Link: https://lkml.kernel.org/r/20201120231441.29911-10-ebiederm@xmission.com
Change-Id: Ib880bd8feef1c5d75d2a018cd93a1d464485ab7b
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 21 Nov 2022 22:26:59 +0000 (17:26 -0500)]
Cleanup: update stale file paths in LICENSE
Change-Id: I4849b19daa235b93a6435e57bd764128e43d691e
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 21 Nov 2022 22:10:48 +0000 (17:10 -0500)]
Cleanup: use SPDX v3.0 identifiers
The short form of GPL-2.0 and LGPL-2.1 were deprecated in favour of the
clearer GPL-2.0-only and GPL-2.0-or-later in the SPDX license list v3.0.
Change-Id: I8b59b3689aa38fb5f5a114f9d02f22274a5bff57
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Wed, 29 May 2024 19:02:15 +0000 (15:02 -0400)]
Warn and return on fd overflow fdt
The fdt should only grow and iterate_fd() holds file_lock, which should
ensure the fdt does not change while the lock is taken but be cautious
and check anyway.
Change-Id: Icd6a3263026734cbe3f296f6087f79add4148a8f
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Wed, 8 May 2024 19:46:23 +0000 (15:46 -0400)]
cleanup: add correct error messages to lttng-get-syscall-inout.sh
The script argument parsing was modified in
commit
6ae73da43362 ("Fix syscall generator scripts") without adjusting
the error messages and comments.
Report the proper errors for the current arguments.
Change-Id: I86f4d16ffede1a6a48bc6ab5fe1e678ef340585b
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Wed, 8 May 2024 18:47:09 +0000 (14:47 -0400)]
cleanup: document 'pipe' syscall override
Change-Id: Iec84c10b774c1001ff2035024a1d05fdd31c8d9d
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 27 May 2024 15:11:21 +0000 (11:11 -0400)]
fix: net: udp: add IP/port data to the tracepoint udp/udp_fail_queue_rcv_skb (v6.10)
See upstream commit:
commit
e9669a00bba79442dd4862c57761333d6a020c24
Author: Balazs Scheidler <bazsi77@gmail.com>
Date: Tue Mar 26 19:05:47 2024 +0100
net: udp: add IP/port data to the tracepoint udp/udp_fail_queue_rcv_skb
The udp_fail_queue_rcv_skb() tracepoint lacks any details on the source
and destination IP/port whereas this information can be critical in case
of UDP/syslog.
Change-Id: I0c337c5817b0a120298cbf5088d60671d9625b0d
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 27 May 2024 14:49:45 +0000 (10:49 -0400)]
fix: close_on_exec(): pass files_struct instead of fdtable (v6.10)
See upstream commit:
commit
f60d374d2cc88034385265d193a38e3f4a4b430c
Author: Al Viro <viro@zeniv.linux.org.uk>
Date: Thu Jan 4 21:35:38 2024 -0500
close_on_exec(): pass files_struct instead of fdtable
both callers are happier that way...
Change-Id: I8cdabb073c2090842b27b74954d86cb486c43b3e
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 27 May 2024 17:13:15 +0000 (13:13 -0400)]
fix: btrfs: move ->parent and ->ref_root into btrfs_delayed_ref_node (v6.10)
See upstream commit:
commit
cf4f04325b2b27efa5697ba0ea4c1abdee0035b4
Author: Josef Bacik <josef@toxicpanda.com>
Date: Fri Apr 12 22:57:13 2024 -0400
btrfs: move ->parent and ->ref_root into btrfs_delayed_ref_node
These two members are shared by both the tree refs and data refs, so
move them into btrfs_delayed_ref_node proper. This allows us to greatly
simplify the comparison code, as the shared refs always only sort on
parent, and the non shared refs always sort first on ref_root, and then
only data refs sort on their specific fields.
Change-Id: Ib7c92cc4bb8d674ac66ccfa25c03476f7adaaf90
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 27 May 2024 17:04:42 +0000 (13:04 -0400)]
fix: btrfs: simplify delayed ref tracepoints (v6.10)
See upstream commit:
commit
1bff6d4f873790cfc675afce9860208576508c5a
Author: Josef Bacik <josef@toxicpanda.com>
Date: Fri Apr 12 20:27:00 2024 -0400
btrfs: simplify delayed ref tracepoints
Now that all of the delayed ref information is in the delayed ref node,
drastically simplify the delayed ref tracepoints by simply passing in
the btrfs_delayed_ref_node and populating the tracepoints with the
values from the structure itself.
Change-Id: Ic90bc23d6aa558baec33adc33b4d21e052e83375
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Martin Hicks [Fri, 17 May 2024 15:07:26 +0000 (11:07 -0400)]
Fix mm_vmscan_lru_isolate tracepoint for RHEL 9.4 kernel
Redhat has moved to using the format first found in the 6.7 kernel
for the mm_vmscan_lru_isolate tracepoint.
Change-Id: I2aa84769c0070458d902e9a0305488d6d8a380e1
Signed-off-by: Martin Hicks <martin@sr-research.com>
Signed-off-by: Kienan Stewart <kstewart@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Wed, 8 May 2024 18:20:30 +0000 (14:20 -0400)]
fix: Add missing 'pselect6_time32' and 'ppoll_time32' syscall overrides
The instrumentation currently has overrides to the generated syscall
tracepoints of 'ppoll' and 'pselect6' to extract additional information
from the parameters.
On arm-32 and x86-32 these 2 syscalls were renamed to 'ppoll_time32' and
'pselect6_time32' and new syscalls using 64-bit time_t were introduced
with the old names. This results in missing overrides on these
architectures for the 32-bit variants that were renamed.
Add the '_time32' overrides to restore the previous behavior.
Change-Id: I81e3a3ddc3f3cea58d86edcdf4a1fc9b600637c2
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 9 May 2024 18:43:05 +0000 (14:43 -0400)]
page alloc wrapper: Fix get_pfnblock_flags_mask prototype
The canary __canary__get_pfnblock_flags_mask has never done its job of
detecting changes to the prototype of get_pfnblock_flags_mask because
it was actually calling the wrapper, because the wrapper/page_alloc.h
header maps get_pfnblock_flags_mask to wrapper_get_pfnblock_flags_mask.
Unfortunately, this wrapper is included by page_alloc.c only _after_ the
linux/pageblock-flags.h header is included, which means the
get_pfnblock_flags_mask prototype does _not_ have the wrapper prefix,
which prevents it from being useful for any kind of type validation.
This has been detected by a compiler warning stating that
wrapper_get_pfnblock_flags_mask() does not have a prior declaration.
Move the wrapper/page_alloc.h include _before_ including
pageblock-flags.h. This ensures the declaration has the wrapper_ prefix,
and therefore the compiler compares the declaration with the definition
of wrapper_get_pfnblock_flags_mask within page_alloc.c. The canary
function can be removed because it is redundant with this type check.
With this proper type check in place, we notice the following two
changes upstream:
commit
535b81e209219 ("mm/page_alloc.c: remove unnecessary end_bitidx for [set|get]_pfnblock_flags_mask()")
introduced in v5.9 removes the end_bitidx argument.
commit
ca891f41c4c79 ("mm: constify get_pfnblock_flags_mask and get_pfnblock_migratetype")
introduced in v5.14 adds a const qualifier to the struct page pointer.
Adapt the code to match the evolution of this prototype.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I51b7871edfbff0f74ba1cf4d0ad988eb8d642b4e
Mathieu Desnoyers [Thu, 9 May 2024 17:55:44 +0000 (13:55 -0400)]
lttng probe: include events-internal.h
Include events-internal.h for the declarations of lttng_logger_init and
lttng_logger_exit.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I14968060c309083f90a282f186f3c635f1ebfd8d
Mathieu Desnoyers [Thu, 9 May 2024 17:55:16 +0000 (13:55 -0400)]
uprobes: Remove dead code
lttng_uprobes_destroy_event_notifier_private is now unused. Remove it.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ia995c60691f68090b6853b2deb0d265b1d4a047e
Mathieu Desnoyers [Thu, 9 May 2024 17:54:20 +0000 (13:54 -0400)]
syscalls: Remove unused duplicated code
lttng_abi_syscall_list() was moved to src/lttng-abi.c within the 2.13
refactoring. Remove this unused copy.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Iabbab3b576e3d85bc5ac9831729a5786b5c5f224
Mathieu Desnoyers [Thu, 9 May 2024 17:52:54 +0000 (13:52 -0400)]
statedump: Add missing events-internal.h include
Include events-internal.h for the declaration of
lttng_statedump_start().
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ieda391aa0d780113efe1d517d8bc5aedb2095a2c
Mathieu Desnoyers [Thu, 9 May 2024 17:51:39 +0000 (13:51 -0400)]
lttng-events: Remove dead code
Functions lttng_event_notifier_enabler_enable and
lttng_event_notifier_enabler_disable are unused since the 2.13
refactoring, remove them.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I18d0d483bf54cbc7d158413f27111271c68ac37d
Mathieu Desnoyers [Thu, 9 May 2024 17:50:19 +0000 (13:50 -0400)]
lttng-events: Add missing static
get_tracker() and lttng_metadata_printf() are only used within the
compile unit, mark them as static.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ie454c85cc29a30d964922fcfe1f88f3fb91bbc8f
Mathieu Desnoyers [Thu, 9 May 2024 17:49:37 +0000 (13:49 -0400)]
event notifier: Add missing static
Mark capture_sequence() static because it is only used within the
compile unit.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I003e5cf016fbf2f2df24f4550a6c285e020956d0
Mathieu Desnoyers [Thu, 9 May 2024 17:49:08 +0000 (13:49 -0400)]
context callstack: Add missing static
lttng_cs_event_fields() is only used within the compile unit, mark it
static.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I3435c6de411a0671de86ecdbcb3e1ea019d908e6
Mathieu Desnoyers [Thu, 9 May 2024 17:48:05 +0000 (13:48 -0400)]
lttng-clock: Add missing lttng/events-internal.h include
Needed for lttng_clock_ref and lttng_clock_unref declarations.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Idb21d942b9e2151f1d5a78b31b28ca1ac455719b
Mathieu Desnoyers [Thu, 9 May 2024 17:46:52 +0000 (13:46 -0400)]
lttng-calibrate: Add missing static and include
Include lttng/events-internal.h for the lttng_calibrate
declaration. Make lttng_calibrate_kretprobe static.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ia18aa60e69cae7a16ed7d17c8297d7ad3bb3aca2
Mathieu Desnoyers [Thu, 9 May 2024 17:46:07 +0000 (13:46 -0400)]
lttng-bytecode: Remove dead code
Functions lttng_filter_enabler_attach_bytecode and
lttng_free_enabler_filter_bytecode are unused since the
refactoring of lttng 2.13. Remove them.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I2abbb3906cdb5c1b7fa9c27c7871a51af7697832
Mathieu Desnoyers [Thu, 9 May 2024 17:45:45 +0000 (13:45 -0400)]
lttng-abi: Add missing static to function definitions
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Icc6928df5a47c96a560e18b2c854780afbcf6307
Mathieu Desnoyers [Thu, 9 May 2024 17:45:24 +0000 (13:45 -0400)]
ring buffer: Add missing static to function definitions
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I80c03d8c8879777e37d24c3574ba7bdea512446a
Mathieu Desnoyers [Thu, 9 May 2024 17:44:05 +0000 (13:44 -0400)]
blkdev wrapper: Fix constness warning
Upstream commit
f8c7511db009d ("block: make block_class constant")
makes the block_class const. Reflect this change in the lttng-modules
canary function.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ib3aadd3dedc413f8370b9739f200ce9663c38d99
Mathieu Desnoyers [Thu, 2 May 2024 21:06:29 +0000 (17:06 -0400)]
Rename "tsc" to "timestamp"
Naming timestamps "TSC" or "tsc" is an historical artefact dating from
the implementation of libringbuffer, where the initial intent was to use
the x86 "rdtsc" instruction directly, which ended up not being what was
done in reality.
Rename uses of "TSC" and "tsc" to "timestamp" to clarify things and
don't require reviewers to be fluent in x86 instruction set.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I09437b0cf6db79600ed1a423d1f6df0344f5c9f7
Kienan Stewart [Mon, 15 Apr 2024 13:25:26 +0000 (09:25 -0400)]
Fix: timer_expire_entry changed in 4.19.312
See upstream commit:
commit
bbb5b1c060d73ca96ccc8cceaa81f5e1a96e8fa4
Author: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date: Thu Mar 21 13:09:21 2019 +0100
timer/trace: Improve timer tracing
[ Upstream commit
f28d3d5346e97e60c81f933ac89ccf015430e5cf ]
Timers are added to the timer wheel off by one. This is required in
case a timer is queued directly before incrementing jiffies to prevent
early timer expiry.
When reading a timer trace and relying only on the expiry time of the timer
in the timer_start trace point and on the now in the timer_expiry_entry
trace point, it seems that the timer fires late. With the current
timer_expiry_entry trace point information only now=jiffies is printed but
not the value of base->clk. This makes it impossible to draw a conclusion
to the index of base->clk and makes it impossible to examine timer problems
without additional trace points.
Therefore add the base->clk value to the timer_expire_entry trace
point, to be able to calculate the index the timer base is located at
during collecting expired timers.
Change-Id: I2ebdbb637db0966ff51f45bf66916a59a496b50c
Signed-off-by: Kienan Stewart <kstewart@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 11 Apr 2024 20:09:26 +0000 (16:09 -0400)]
ring buffer: Use cpu_dcache_is_aliasing()
Upstream Linux commit
8690bbcf3b7 ("Introduce cpu_dcache_is_aliasing()
across all architectures") allows checking whether the architecture has
aliasing data caches more accurately. This will be present in upstream
Linux v6.9 (currently in v6.9-rc3).
I expect this to improve the ring buffer performance on ARM64 and
32-bit ARM with non-aliasing data caches.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I3e29966b8c8cab098d57437a11f1f94c53a9e186
This page took 0.044387 seconds and 4 git commands to generate.