Michael Jeanson [Mon, 4 Apr 2022 17:54:59 +0000 (13:54 -0400)]
fix: block: remove genhd.h (v5.18)
See upstream commit :
commit
322cbb50de711814c42fb088f6d31901502c711a
Author: Christoph Hellwig <hch@lst.de>
Date: Mon Jan 24 10:39:13 2022 +0100
block: remove genhd.h
There is no good reason to keep genhd.h separate from the main blkdev.h
header that includes it. So fold the contents of genhd.h into blkdev.h
and remove genhd.h entirely.
Change-Id: I7cf2aaa3a4c133320b95f2edde49f790f9515dbd
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Mon, 4 Apr 2022 17:52:57 +0000 (13:52 -0400)]
fix: sched/tracing: Don't re-read p->state when emitting sched_switch event (v5.18)
See upstream commit :
commit
fa2c3254d7cfff5f7a916ab928a562d1165f17bb
Author: Valentin Schneider <valentin.schneider@arm.com>
Date: Thu Jan 20 16:25:19 2022 +0000
sched/tracing: Don't re-read p->state when emitting sched_switch event
As of commit
c6e7bd7afaeb ("sched/core: Optimize ttwu() spinning on p->on_cpu")
the following sequence becomes possible:
p->__state = TASK_INTERRUPTIBLE;
__schedule()
deactivate_task(p);
ttwu()
READ !p->on_rq
p->__state=TASK_WAKING
trace_sched_switch()
__trace_sched_switch_state()
task_state_index()
return 0;
TASK_WAKING isn't in TASK_REPORT, so the task appears as TASK_RUNNING in
the trace event.
Prevent this by pushing the value read from __schedule() down the trace
event.
Change-Id: I46743cd006be4b4d573cae2d77df7d6d16744d04
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 4 Apr 2022 19:49:32 +0000 (15:49 -0400)]
Fix: tracepoint event: allow same provider and event name
Using the same name for the provider (TRACE_SYSTEM) and event name
causes a compilation error because the same identifiers are emitted
twice.
Fix this by prefixing the provider identifier with
"__provider_event_desc___".
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I8cdf8f859e35b8bd5c19737860d12f1ed546dfc2
Mathieu Desnoyers [Tue, 29 Mar 2022 20:34:07 +0000 (16:34 -0400)]
Fix: compaction migratepages event name
The commit "fix: mm: compaction: fix the migration stats in trace_mm_compaction_migratepages() (v5.17)"
Triggers this warning:
LTTng: event provider mismatch: The event name needs to start with provider name + _ + one or more letter, provider: compaction, event name: mm_compaction_migratepages
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I01c7485af765084dafb33bf33ae392e60bfbf1e7
Mathieu Desnoyers [Mon, 14 Mar 2022 17:31:24 +0000 (13:31 -0400)]
Document expected ISO8601 time formats in ABI header
Document the expected ISO8601 time formats in the ABI header to justify
the choice of string maximum length.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I4dedde83b5fb81c376245338773ea63677401a09
Mathieu Desnoyers [Mon, 14 Mar 2022 15:25:56 +0000 (11:25 -0400)]
Fix: lttng ABI: lttng_counter_ioctl() tainted scalar
Found by Coverity:
>>> CID
1476250: (TAINTED_SCALAR)
>>> Using tainted variable "local_counter_aggregate.index.number_dimensions" as a loop boundary.
>>> CID
1476250: (TAINTED_SCALAR)
>>> Using tainted variable "local_counter_clear.index.number_dimensions" as a loop boundary.
>>> CID
1476250: (TAINTED_SCALAR)
>>> Using tainted variable "local_counter_read.index.number_dimensions" as a loop boundary.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I7d35cf96781bb18837fe4564e4e8a34aa2ddc310
Mathieu Desnoyers [Mon, 14 Mar 2022 15:23:17 +0000 (11:23 -0400)]
Cleanup: Remove dead code in _lttng_kernel_event_create()
Found by Coverity:
>>> CID
1476251: (DEADCODE)
>>> Execution cannot reach this statement: "case LTTNG_KERNEL_ABI_NOOP:".
>>> CID
1476251: (DEADCODE)
>>> Execution cannot reach this statement: "case LTTNG_KERNEL_ABI_FUNCT...".
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I16918b687fdc302a476b3d10d64da4fbd6ce95be
Mathieu Desnoyers [Mon, 14 Mar 2022 14:59:55 +0000 (10:59 -0400)]
Fix: lttng_event_enabler_create_syscall_events_if_missing() uninitialized ret variable
Found by Coverity:
** CID
1476252: Uninitialized variables (UNINIT)
/src/lttng-syscalls.c: 843 in lttng_event_enabler_create_syscall_events_if_missing()
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ibd43b79e760e34f8665d13bf2757bec2de1f56ee
Mathieu Desnoyers [Mon, 14 Mar 2022 14:58:08 +0000 (10:58 -0400)]
Fix: lttng_syscall_filter_enable_event(): uninitialized ret variable
Found by Coverity:
** CID
1476253: Uninitialized variables (UNINIT)
/src/lttng-syscalls.c: 1057 in lttng_syscall_filter_enable_event()
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ie49ef12681efaf7613501a2208cad26951177edd
Mathieu Desnoyers [Thu, 10 Mar 2022 19:20:47 +0000 (14:20 -0500)]
Fix: sample discarded events count before reserve
Sampling the discarded events count in the buffer_end callback is done
out of order, and may therefore include increments performed by following
events (in following packets) if the thread doing the end-of-packet
event write is interrupted for a long time.
Sampling the event discarded counts before reserving space for the last
event in a packet, and keeping this as part of the private ring buffer
context, should fix this race.
In lttng-modules, this scenario would only happen if an interrupt
handler produces many events, when nested over an event between its
reserve and commit. Note that if lttng-modules supports faultable
tracepoints in the future, this may become more easy to trigger due to
preemption.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I696a206b3926fc1abbee35caa9af65461ff56c68
Mathieu Desnoyers [Thu, 10 Mar 2022 19:01:14 +0000 (14:01 -0500)]
Cleanup: comment alignment in ring buffer config.h
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I38fdfd786dfb60e1339634780be2645968351ed8
Michael Jeanson [Mon, 31 Jan 2022 15:47:53 +0000 (10:47 -0500)]
fix: net: socket: rename SKB_DROP_REASON_SOCKET_FILTER (v5.17)
No version check needed since this change is between two RCs, see
upstream commit :
commit
364df53c081d93fcfd6b91085ff2650c7f17b3c7
Author: Menglong Dong <imagedong@tencent.com>
Date: Thu Jan 27 17:13:01 2022 +0800
net: socket: rename SKB_DROP_REASON_SOCKET_FILTER
Rename SKB_DROP_REASON_SOCKET_FILTER, which is used
as the reason of skb drop out of socket filter before
it's part of a released kernel. It will be used for
more protocols than just TCP in future series.
Link: https://lore.kernel.org/all/20220127091308.91401-2-imagedong@tencent.com/
Change-Id: I666461a5b541fe9e0bf53ad996ce33237af4bfbb
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Thu, 27 Jan 2022 16:43:12 +0000 (11:43 -0500)]
Add missing 'random' tracepoints
Add the 'random_' prefix to the new events names to match the rest of
the file.
Change-Id: I7b60d24e901c390ff16dc1e2ab2199dda17239d1
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Wed, 26 Jan 2022 19:49:11 +0000 (14:49 -0500)]
fix: net: skb: introduce kfree_skb_reason() (v5.17)
See upstream commit :
commit
c504e5c2f9648a1e5c2be01e8c3f59d394192bd3
Author: Menglong Dong <imagedong@tencent.com>
Date: Sun Jan 9 14:36:26 2022 +0800
net: skb: introduce kfree_skb_reason()
Introduce the interface kfree_skb_reason(), which is able to pass
the reason why the skb is dropped to 'kfree_skb' tracepoint.
Add the 'reason' field to 'trace_kfree_skb', therefor user can get
more detail information about abnormal skb with 'drop_monitor' or
eBPF.
All drop reasons are defined in the enum 'skb_drop_reason', and
they will be print as string in 'kfree_skb' tracepoint in format
of 'reason: XXX'.
( Maybe the reasons should be defined in a uapi header file, so that
user space can use them? )
Change-Id: I6766678a288da959498a4736fc3f95bf239c3e94
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 28 Jan 2022 16:26:56 +0000 (11:26 -0500)]
Introduce hrtimer_mode enumeration
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I402146a868b98981558842a914fa7a5eaa0f1781
Michael Jeanson [Wed, 26 Jan 2022 19:53:41 +0000 (14:53 -0500)]
fix: random: rather than entropy_store abstraction, use global (v5.17)
See upstream commit :
commit
90ed1e67e896cc8040a523f8428fc02f9b164394
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date: Wed Jan 12 17:18:08 2022 +0100
random: rather than entropy_store abstraction, use global
Originally, the RNG used several pools, so having things abstracted out
over a generic entropy_store object made sense. These days, there's only
one input pool, and then an uneven mix of usage via the abstraction and
usage via &input_pool. Rather than this uneasy mixture, just get rid of
the abstraction entirely and have things always use the global. This
simplifies the code and makes reading it a bit easier.
Change-Id: I1a2a14d7b6e69a047804e1e91e00fe002f757431
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Wed, 26 Jan 2022 19:37:52 +0000 (14:37 -0500)]
fix: btrfs: pass fs_info to trace_btrfs_transaction_commit (v5.17)
See upstream commit :
commit
2e4e97abac4c95f8b87b2912ea013f7836a6f10b
Author: Josef Bacik <josef@toxicpanda.com>
Date: Fri Nov 5 16:45:29 2021 -0400
btrfs: pass fs_info to trace_btrfs_transaction_commit
The root on the trans->root can be anything, and generally we're
committing from the transaction kthread so it's usually the tree_root.
Change this to just take an fs_info, and to maintain compatibility
simply put the ROOT_TREE_OBJECTID as the root objectid for the
tracepoint. This will allow use to remove trans->root.
Change-Id: Ie5a4804330edabffac0714fcb9c25b8c8599e424
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Sun, 23 Jan 2022 18:26:17 +0000 (13:26 -0500)]
fix: mm: compaction: fix the migration stats in trace_mm_compaction_migratepages() (v5.17)
See upstream commit :
commit
84b328aa81216e08804d8875d63f26bda1298788
Author: Baolin Wang <baolin.wang@linux.alibaba.com>
Date: Fri Jan 14 14:08:40 2022 -0800
mm: compaction: fix the migration stats in trace_mm_compaction_migratepages()
Now the migrate_pages() has changed to return the number of {normal
page, THP, hugetlb} instead, thus we should not use the return value to
calculate the number of pages migrated successfully. Instead we can
just use the 'nr_succeeded' which indicates the number of normal pages
migrated successfully to calculate the non-migrated pages in
trace_mm_compaction_migratepages().
Link: https://lkml.kernel.org/r/b4225251c4bec068dcd90d275ab7de88a39e2bd7.1636275127.git.baolin.wang@linux.alibaba.com
Change-Id: Ib8e8f2a16a273f16cd73fe63afbbfc25c0a2540c
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Sun, 23 Jan 2022 18:11:47 +0000 (13:11 -0500)]
fix: block: remove the ->rq_disk field in struct request (v5.17)
See upstream commit :
commit
f3fa33acca9f0058157214800f68b10d8e71ab7a
Author: Christoph Hellwig <hch@lst.de>
Date: Fri Nov 26 13:18:00 2021 +0100
block: remove the ->rq_disk field in struct request
Just use the disk attached to the request_queue instead.
Link: https://lore.kernel.org/r/20211126121802.2090656-4-hch@lst.de
Change-Id: I24263be519d1b51f4b00bd95f14a9aeb8457889a
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Sun, 23 Jan 2022 18:04:47 +0000 (13:04 -0500)]
fix: block: remove GENHD_FL_SUPPRESS_PARTITION_INFO (v5.17)
See upstream commit :
commit
3b5149ac50970669ee0ddb9629ec77ffd5c0622d
Author: Christoph Hellwig <hch@lst.de>
Date: Mon Nov 22 14:06:21 2021 +0100
block: remove GENHD_FL_SUPPRESS_PARTITION_INFO
This flag is not set directly anywhere and only inherited from
GENHD_FL_HIDDEN. Just check for GENHD_FL_HIDDEN instead.
Link: https://lore.kernel.org/r/20211122130625.1136848-11-hch@lst.de
Change-Id: Ide92bdaaff7d16e96be23aaf00cebeaa601235b7
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Francis Deslauriers [Thu, 6 Jan 2022 23:30:51 +0000 (18:30 -0500)]
Cleanup: events.h: add alignment comments and fix whitespace
Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I327a85a2c3e259830795f181f218b1f3504f24fb
Mathieu Desnoyers [Fri, 14 Jan 2022 20:02:42 +0000 (15:02 -0500)]
Copyright ownership transfer
Apply copyright ownership transfer from Julien Desfossez to EfficiOS Inc.
Link: https://lists.lttng.org/pipermail/lttng-dev/2022-January/030092.html
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Julien Desfossez <ju@klipix.org>
Signed-off-by: Julien Desfossez <ju@klipix.org>
Change-Id: Ida168b1fbe6589cb371a549ef14d9b4b28b221b3
Michael Jeanson [Tue, 14 Dec 2021 19:44:35 +0000 (14:44 -0500)]
fix: mm: move kvmalloc-related functions to slab.h (v5.16)
See upstream commit :
commit
8587ca6f34152ea650bad4b2db68456601159024
Author: Matthew Wilcox (Oracle) <willy@infradead.org>
Date: Fri Nov 5 13:35:07 2021 -0700
mm: move kvmalloc-related functions to slab.h
Not all files in the kernel should include mm.h. Migrating callers from
kmalloc to kvmalloc is easier if the kvmalloc functions are in slab.h.
[akpm@linux-foundation.org: move the new kvrealloc() also]
[akpm@linux-foundation.org: drivers/hwmon/occ/p9_sbe.c needs slab.h]
Link: https://lkml.kernel.org/r/20210622215757.3525604-1-willy@infradead.org
Change-Id: I84e885ffbd1e2ff551a4738950e0c9462551b853
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Tue, 14 Dec 2021 20:13:20 +0000 (15:13 -0500)]
fix: block: don't call blk_status_to_errno in blk_update_request (v5.16)
See upstream commit :
commit
8a7d267b4a2c71a5ff5dd9046abea7117c7d0ac2
Author: Christoph Hellwig <hch@lst.de>
Date: Mon Oct 18 10:45:18 2021 +0200
block: don't call blk_status_to_errno in blk_update_request
We only need to call it to resolve the blk_status_t -> errno mapping for
tracing, so move the conversion into the tracepoints that are not called
at all when tracing isn't enabled.
Change-Id: Ic556cee1d82e44a93a1467f55d45b6e17a48d387
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Tue, 14 Dec 2021 20:06:51 +0000 (15:06 -0500)]
fix: KVM: MMU: change tracepoints arguments to kvm_page_fault (v5.16)
See upstream commit :
commit
f0066d94c92dc5cf7f1a272a1bd324b0fc575292
Author: Paolo Bonzini <pbonzini@redhat.com>
Date: Fri Aug 6 04:35:50 2021 -0400
KVM: MMU: change tracepoints arguments to kvm_page_fault
Pass struct kvm_page_fault to tracepoints instead of extracting the
arguments from the struct. This also lets the kvm_mmu_spte_requested
tracepoint pick the gfn directly from fault->gfn, instead of using
the address.
Change-Id: I5ee3f344a8d1cd0ed185cdeecb3a3121183c9b43
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Tue, 14 Dec 2021 20:00:18 +0000 (15:00 -0500)]
fix: KVM: x86: Get exit_reason as part of kvm_x86_ops.get_exit_info (v5.16)
See upstream commit :
commit
0a62a0319abb92c89a4f91c2dbfcaee4e47f37ca
Author: David Edmondson <david.edmondson@oracle.com>
Date: Mon Sep 20 11:37:35 2021 +0100
KVM: x86: Get exit_reason as part of kvm_x86_ops.get_exit_info
Extend the get_exit_info static call to provide the reason for the VM
exit. Modify relevant trace points to use this rather than extracting
the reason in the caller.
Change-Id: I28903e658eb7cbfc6666e35ba4cffba5e49d1445
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Tue, 14 Dec 2021 19:46:45 +0000 (14:46 -0500)]
fix: isystem: delete global -isystem compile option (v5.16)
See upstream commit :
commit
04e85bbf71c9072dcf0ad9a7150495d72461105c
Author: Alexey Dobriyan <adobriyan@gmail.com>
Date: Mon Aug 2 23:43:15 2021 +0300
isystem: delete global -isystem compile option
Further isolate kernel from userspace, prevent accidental inclusion of
undesireable headers, mainly float.h and stdatomic.h.
nds32 keeps -isystem globally due to intrinsics used in entrenched header.
-isystem is selectively reenabled for some files, again, for intrinsics.
Change-Id: I5bea29687dc2bc15e96eeb13008aefe1acc97b8a
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Michael Jeanson [Tue, 14 Dec 2021 19:43:26 +0000 (14:43 -0500)]
fix: block: move block-related definitions out of fs.h (v5.16)
See upstream commit :
commit
3f1266f1f82d7b8c72472a8921e80aa3e611fb62
Author: Christoph Hellwig <hch@lst.de>
Date: Sat Jun 20 09:16:41 2020 +0200
block: move block-related definitions out of fs.h
Move most of the block related definition out of fs.h into more suitable
headers.
Change-Id: I8d072406a04f549d1ddb0f2ac392deaabbb26a92
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 2 Dec 2021 21:39:19 +0000 (16:39 -0500)]
syscalls: syscall id lookup and dispatch table improvements
Use the syscall id from event creation as key to index the filter
bitmap rather than lookup the syscall id using the syscall name as
key. This additional lookup is completely redundant.
For unknown syscalls, add the unknown syscall event to the unknown
system call dispatch table only when it matches an enabler: the only way
it matches an enabler is because a wildcard is used to enabled all
system calls (until we eventually support enabling system calls by
number).
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I61ce9d447e5056976605ab0e048ff5f9cd8ff484
Mathieu Desnoyers [Wed, 1 Dec 2021 20:56:40 +0000 (15:56 -0500)]
Fix: syscall tracing: missing trigger actions
Observed issue
==============
There is an issue when associating multiple actions to a single system
call, where the first action is effectively added, but the following
actions are silently ignored.
Cause
=====
The is caused by event creation of the 2nd event to be skipped because
lttng_syscall_filter_enable returns "-EBUSY", because the bit is already
set in the bitmap.
Solution
========
Fixing this double-add-trigger scenario requires changes to how the
lttng_syscall_filter_enable -EBUSY errors are dealt with on event
creation, but the problem runs deeper.
Given that many events may be responsible for requiring a bit to be set
in the bitmap of the syscall filter, we cannot simply clear the bit
whenever one event is disabled
Otherwise, this will cause situations where all events for a given
system call are disabled (due to the syscall filter bit being cleared)
whenever one single event for that system call is disabled (e.g. 2
triggers on the same system call, but with different actions).
We need to keep track of all events associated with this bit in the
bitmap, and only clear the bit when the reference count reaches 0.
This fixes the double-add-trigger issue by enturing that no -EBUSY
is returned when creating the second event, and fixes the
double-add-trigger-then-remove-trigger scenario as well.
Known drawbacks
===============
None.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I3c1e966e9720a2e8f4438ae2c98d83ffe318e424
Mathieu Desnoyers [Wed, 1 Dec 2021 20:55:15 +0000 (15:55 -0500)]
Warn on event registration/unregistration failure
Warn whenever event registration/unregistration fails, including when
synchonizing the event list.
Silently ignoring errors makes identification of those failures tricky.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I764455c8535ddb906325942e70aa689ca21c04bb
Mathieu Desnoyers [Sat, 6 Nov 2021 00:34:27 +0000 (20:34 -0400)]
Fix: kernels 3.0.x do not implement IS_ENABLED macro
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Id1059e57e4caacd6892b7d18032937650833a080
Mathieu Desnoyers [Fri, 5 Nov 2021 19:22:04 +0000 (15:22 -0400)]
Refactoring: lttng_event_enabler_create_tracepoint_events_if_missing: break loop if found
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I17aa51cbfc7e6d70837c16621897c3f928467a8a
Mathieu Desnoyers [Fri, 5 Nov 2021 19:20:46 +0000 (15:20 -0400)]
Refactoring: syscall: break loops when found
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: If30584dbedd47e891a823a180204aad7a7a6ddff
Mathieu Desnoyers [Fri, 5 Nov 2021 19:08:07 +0000 (15:08 -0400)]
Fix: _lttng_kernel_event_create never returns NULL
Handle _lttng_kernel_event_create return value as IS_ERR. It is never
NULL.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Iaae2b632b7a11084403740c1849fe101bdca2472
Mathieu Desnoyers [Fri, 5 Nov 2021 19:01:46 +0000 (15:01 -0400)]
Refactoring: move lttng_syscall_event_enabler_create_matching_events after probe registration
Considering that additional events can be added after the probe
registration, there is no point in registering the probes after the
event creation in the first instance.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Iba2ce2c1e718969f81e067e56dd106cd38a11447
Mathieu Desnoyers [Fri, 5 Nov 2021 19:01:14 +0000 (15:01 -0400)]
Refactoring: combine common code into lttng_syscall_event_enabler_create_matching_events
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I6618096c1e3e62e49b6896740ddbd00921840c97
Mathieu Desnoyers [Fri, 5 Nov 2021 18:58:40 +0000 (14:58 -0400)]
Refactoring: introduce lttng_syscall_event_enabler_create_matching_syscall_table_events
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I5aed44593f8610250cde523e447b74b73202c7cf
Mathieu Desnoyers [Fri, 5 Nov 2021 18:52:50 +0000 (14:52 -0400)]
Refactoring: remove unused argument from lttng_syscall_event_enabler_create_matching_events
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ib97a4d12f3e08ef1186d78af97b90ee48b8e05ed
Mathieu Desnoyers [Fri, 5 Nov 2021 18:50:03 +0000 (14:50 -0400)]
Refactoring: add/remove to/from dispatch list on enable/disable event for event recorder
Use same behavior for event recorder as for event notifier.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Idc27de3cb353fa44c3330bec3f33f670de0ced3d
Mathieu Desnoyers [Fri, 5 Nov 2021 18:40:18 +0000 (14:40 -0400)]
Refactoring: syscall tracing: config compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I023a7fc9e1c03dee3e3c9421b141b03d3b353777
Mathieu Desnoyers [Fri, 5 Nov 2021 18:32:54 +0000 (14:32 -0400)]
Fix: event notifier unknown syscall match only wildcard all
The unknown system call event should only be generated when matching a
wildcard *all*, otherwise when matching a system call by name we don't
expect to emit a notification for an unknown system call.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ia5b99ac3b15849859519b9484e400ce0de95faeb
Mathieu Desnoyers [Fri, 5 Nov 2021 16:41:38 +0000 (12:41 -0400)]
Refactoring: introduce create_unknown_syscall_event
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I70c34deb6d44fd2722fedb2a1e4065fe7468d12b
Mathieu Desnoyers [Fri, 5 Nov 2021 16:35:21 +0000 (12:35 -0400)]
Refactoring: introduce lttng_syscall_event_enabler_create_matching_events
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I98018adfbec95420122737b419fb0923c045efdd
Mathieu Desnoyers [Fri, 5 Nov 2021 16:33:37 +0000 (12:33 -0400)]
Fix: add unknown event to dispatch list
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I4dcef64b8b4ce4b13ee12cc33426a2734504db4e
Mathieu Desnoyers [Fri, 5 Nov 2021 16:31:34 +0000 (12:31 -0400)]
Fix: RCU-aware add event recorder to RCU dispatch list
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I0a9f95fb04d00ce8e38e047d193401ee1178eac5
Mathieu Desnoyers [Fri, 5 Nov 2021 16:20:56 +0000 (12:20 -0400)]
Refactoring: introduce lttng_syscall_event_enabler_create_event
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ifc230027ad2bfab1da580965ce8ecc9ff0150a78
Mathieu Desnoyers [Fri, 5 Nov 2021 14:56:30 +0000 (10:56 -0400)]
Refactoring: syscall: move matching event creation before tracepoint registration
There is no point in doing the event notifier creation after tracepoint
registration for syscall tracing. Move it prior to tracepoint
registration, similarly to event recorder.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I1ddbbb765445509f8a1f571788528ff0fce3dace
Mathieu Desnoyers [Fri, 5 Nov 2021 14:55:26 +0000 (10:55 -0400)]
syscalls: remove vmalloc sync mappings
The system call tables don't use vmalloc, so there is no point in
synchronizing the mappings.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I91c5d46c85d34ca02643e8732511f25e226b3e80
Mathieu Desnoyers [Fri, 5 Nov 2021 14:16:10 +0000 (10:16 -0400)]
Refactoring: introduce lttng_event_enabler_create_{syscall,tracepoint}_events_if_missing
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I6b0a21efcb39119cffbf5b2929c87fb27f455a45
Mathieu Desnoyers [Thu, 4 Nov 2021 21:10:21 +0000 (17:10 -0400)]
Refactoring: combine common code into _lttng_kernel_event_create
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I1409d6b1f5616b66edf8a461e2b8a4991d71ea4d
Mathieu Desnoyers [Thu, 4 Nov 2021 21:05:10 +0000 (17:05 -0400)]
Fix: clear error counter before adding to lists
Adding to lists should be the last thing in the create function,
otherwise errors on error counter clear may lead to use-after-free
due to presence of freed objects in linked lists.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ia6fb83cd053c2122939add6c330834199514b0e5
Mathieu Desnoyers [Thu, 4 Nov 2021 21:02:55 +0000 (17:02 -0400)]
Refactoring: introduce lttng_kernel_event_id_available
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ib95d7aeff5072075d232f89ca7a2f194876f2636
Mathieu Desnoyers [Thu, 4 Nov 2021 20:53:32 +0000 (16:53 -0400)]
Refactoring: remove unused event_recorder_return
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I9edef31a9355abe6cd9065689a74a4ad9ef7f3ad
Mathieu Desnoyers [Thu, 4 Nov 2021 20:51:34 +0000 (16:51 -0400)]
Refactoring: event create: introduce _lttng_event_recorder_metadata_statedump
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I03494b121ef036c240f95b6cd9cae37c434452e3
Mathieu Desnoyers [Thu, 4 Nov 2021 20:45:36 +0000 (16:45 -0400)]
Refactoring: event create: use lttng_get_event_list_head_from_enabler
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Id34660d2c6ccaaa27241757cf2177605b951df2a
Mathieu Desnoyers [Thu, 4 Nov 2021 20:42:44 +0000 (16:42 -0400)]
Refactoring: introduce lttng_kernel_event_notifier_clear_error_counter
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I702eefefd920aa2260873b4366cbdde65b522734
Mathieu Desnoyers [Thu, 4 Nov 2021 20:33:39 +0000 (16:33 -0400)]
Refactoring: introduce lttng_event_enabler_event_name_match_event
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ie7960f23e06a23d0db70e3c9586ec37739d5b4da
Mathieu Desnoyers [Thu, 4 Nov 2021 19:51:24 +0000 (15:51 -0400)]
Refactoring: event create: use parent structure
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I367e629a44157e232597cb6e39ab834d34258a14
Mathieu Desnoyers [Thu, 4 Nov 2021 19:44:48 +0000 (15:44 -0400)]
Refactoring: introduce lttng_kernel_event_alloc and lttng_kernel_event_free
Eliminate duplicated code.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I31a0d95bbbf782c20e9d63397d6f386ea6a5fc9a
Mathieu Desnoyers [Wed, 3 Nov 2021 20:21:43 +0000 (16:21 -0400)]
Refactoring: merge lttng_sync_event_list common code
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I49493dbe1ff0868b5ed576828d0efe7cf526a6c5
Mathieu Desnoyers [Wed, 3 Nov 2021 20:01:14 +0000 (16:01 -0400)]
Refactoring: move enablers list into common structure
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I1a7653df9ffff24e8568d5928c0cfb0e4ce4163b
Mathieu Desnoyers [Wed, 3 Nov 2021 19:42:01 +0000 (15:42 -0400)]
Refactoring: introduce lttng_event_sync_filter_state and lttng_event_sync_capture_state
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Id0fd7ef45fa30c20b76b87b68dec85b43bc4a8af
Mathieu Desnoyers [Wed, 3 Nov 2021 19:27:37 +0000 (15:27 -0400)]
Refactoring: combine common code into lttng_event_enabler_ref_events
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I1b2b0f9f8bcd5f143780354d412f6a072acb32b7
Mathieu Desnoyers [Wed, 3 Nov 2021 19:22:28 +0000 (15:22 -0400)]
Refactoring: introduce lttng_event_enabler_init_event_filter
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I9eff68c72e55cc8a92a821043e7428220c082f6e
Mathieu Desnoyers [Wed, 3 Nov 2021 19:19:26 +0000 (15:19 -0400)]
Refactoring: introduce lttng_event_enabler_init_event_capture
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: If558bcd7e2d0583cc5729b14fe3927399966830b
Mathieu Desnoyers [Wed, 3 Nov 2021 19:09:53 +0000 (15:09 -0400)]
Refactoring: combine common code into lttng_syscall_table_set_wildcard_all
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I84bda6aa93f5ca67e57dec95710c51f9464a11f4
Mathieu Desnoyers [Wed, 3 Nov 2021 18:59:51 +0000 (14:59 -0400)]
Refactoring: introduce list head from enabler getter
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ib97b1063ccc63d2c1dbeb6f4ea204667afce9a1a
Mathieu Desnoyers [Wed, 3 Nov 2021 18:55:36 +0000 (14:55 -0400)]
Refactoring: move event list node field to common structure
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I670545ecd1a8c4289e605b452488c17cc87fdfe2
Mathieu Desnoyers [Wed, 3 Nov 2021 16:20:32 +0000 (12:20 -0400)]
Refactoring: combine common code into lttng_create_event_if_missing
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I9df1460471e3d9ce51ae0cba1b607493b5964acc
Mathieu Desnoyers [Wed, 3 Nov 2021 16:17:10 +0000 (12:17 -0400)]
Refactoring: combine identical functions into lttng_create_tracepoint_event_if_missing
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ia923b97ae0e6a6f137fc51c9737f607cf45f96a8
Mathieu Desnoyers [Wed, 3 Nov 2021 16:14:09 +0000 (12:14 -0400)]
Refactoring/fix: desc match enabler: handle error internally
This actually ensures that callers don't mistakenly consider a negative
return value (error) as a match success.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I27fe42b4d1d018b9f69de62a0cd8b43c77a61fa5
Mathieu Desnoyers [Wed, 3 Nov 2021 16:08:22 +0000 (12:08 -0400)]
Refactoring: syscalls: use common match functions
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: If63da64ce79e75fe630ee032f587b41947e52d73
Mathieu Desnoyers [Wed, 3 Nov 2021 16:00:02 +0000 (12:00 -0400)]
Refactoring: combine create event common code
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: If87900e447a45de86ca0fc2a8b999c9639f84fef
Mathieu Desnoyers [Wed, 3 Nov 2021 15:25:59 +0000 (11:25 -0400)]
Refactoring: combine match functions for notifier and recorder
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ib9ee7d770328791d584b4f4e68b441999984de29
Mathieu Desnoyers [Tue, 2 Nov 2021 20:58:34 +0000 (16:58 -0400)]
Refactoring: introduce lttng_get_event_ht_from_enabler
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I82759291c892c0d0c8b7a7c6be4a32ec8fac0dcd
Mathieu Desnoyers [Tue, 2 Nov 2021 20:42:52 +0000 (16:42 -0400)]
Refactoring: combine hlist_node into common event structure
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I998d4ff59f51da8e1c6068f0a4dbb52a759e2c3f
Mathieu Desnoyers [Tue, 2 Nov 2021 19:04:08 +0000 (15:04 -0400)]
Refactoring: event notifier create: use enablers
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ib75cc8d0336f74af96455fd04c0a967db9013633
Mathieu Desnoyers [Tue, 2 Nov 2021 18:16:38 +0000 (14:16 -0400)]
Refactoring: combine event hash tables common code
Combine common code across notifier and recorder.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I1b781cf0481cc6d532622975376cc834d1b33603
Mathieu Desnoyers [Tue, 2 Nov 2021 18:11:40 +0000 (14:11 -0400)]
Refactoring: combine _lttng_event_unregister common code
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I89111affad4b35b68939c51f2ebd3aec6f4a881b
Mathieu Desnoyers [Tue, 2 Nov 2021 18:02:37 +0000 (14:02 -0400)]
Refactoring: combine register_event common code
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Icb8d0ba19c7070c86f25b9d54ec6034ffe74ba77
Mathieu Desnoyers [Tue, 2 Nov 2021 17:52:42 +0000 (13:52 -0400)]
Refactoring: combine lttng_create_syscall_event_if_missing common code
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I392c8dd39a956e2b46ce4dac76112249bccabf7b
Mathieu Desnoyers [Tue, 2 Nov 2021 17:50:40 +0000 (13:50 -0400)]
Refactoring: syscalls: move lttng_syscalls_create_matching_event_notifiers into registration
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I3c8e7c0f2ebf832e433b0c10b5073e7e469d8329
Mathieu Desnoyers [Tue, 2 Nov 2021 17:34:00 +0000 (13:34 -0400)]
Refactoring: Rename lttng_channel_syscall_mask to lttng_syscall_table_get_active_mask
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I4740cef4ec6465ba9cbd4d61b097263e01acf4b8
Mathieu Desnoyers [Tue, 2 Nov 2021 17:30:32 +0000 (13:30 -0400)]
Refactoring: kretprobes: use event common argument types
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I9c272f240b01cf070e45d7663c331e1cbce921b8
Mathieu Desnoyers [Tue, 2 Nov 2021 16:46:48 +0000 (12:46 -0400)]
Refactoring: kprobes: combine common code between recorder and notifier
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Iea2cf795c5409b0f5dadbadccb9cb2b4cd37acfc
Mathieu Desnoyers [Tue, 2 Nov 2021 16:38:41 +0000 (12:38 -0400)]
Refactoring: uprobes: combine common code between recorder and notifier
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ibbd7ddb064ca114e0c9dcf1b88c695167ee087aa
Mathieu Desnoyers [Tue, 2 Nov 2021 16:31:08 +0000 (12:31 -0400)]
Refactoring: syscalls: combine syscalls register event for notifier/recorder
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I907ac0397d0fdf421702d50ee382eb5e79827921
Mathieu Desnoyers [Tue, 2 Nov 2021 15:21:47 +0000 (11:21 -0400)]
Refactoring: syscall: combine syscall filter enable/disable recorder/notifier
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: If0e10ade6586073255817f5a8a96f73b5aa92f99
Mathieu Desnoyers [Mon, 1 Nov 2021 20:47:39 +0000 (16:47 -0400)]
Refactoring: rename lttng_syscalls_register_event to lttng_syscalls_register_event_recorder
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Icc5a6fcfdf951dd9b4661a4485c90ea7e84ad39a
Mathieu Desnoyers [Mon, 1 Nov 2021 20:39:22 +0000 (16:39 -0400)]
Cleanup: tracepoint probe register/unregister: use parent field
Use the parent field to match the type expected in the probe callback.
This works so far only because parent is the first field of the children
structures.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I05fb3cdc75c1c04abb352cdebdaa90f780d0c789
Mathieu Desnoyers [Mon, 1 Nov 2021 19:59:10 +0000 (15:59 -0400)]
Refactoring/fix: syscall table unregister/destroy
Combine syscall table unregister/destroy for both channel buffers and
notifier groups.
This fixes an issue within notifier groups where the syscall dispatch
tables are freed before waiting for an RCU grace period.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ia69f6be86da651022c5d5f4f6bce6e321156c070
Mathieu Desnoyers [Mon, 1 Nov 2021 19:33:28 +0000 (15:33 -0400)]
Refactoring: rename lttng_channel_create to lttng_channel_buffer_create
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I2d1ca065c5eb03adab3a982d1159c2e472bbc177
Mathieu Desnoyers [Mon, 1 Nov 2021 19:31:04 +0000 (15:31 -0400)]
Refactoring: channel enable/disable using common type
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ie86e23937d00a5d53aa3dbadb7666c176f3c0d52
Mathieu Desnoyers [Mon, 1 Nov 2021 19:23:20 +0000 (15:23 -0400)]
Cleanup: rename event register/unregister for event recorder
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ifb45adfed7b5c3acef3d5003b123c12b5f2d7a64
Mathieu Desnoyers [Mon, 1 Nov 2021 19:20:22 +0000 (15:20 -0400)]
Cleanup: rename lttng_syscalls_destroy_event to lttng_syscalls_destroy_channel
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Iabff0107d1280e2d88aa607b3220fa811f80c09c
Mathieu Desnoyers [Mon, 1 Nov 2021 19:14:44 +0000 (15:14 -0400)]
Cleanup: syscall filter enable/disable event
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I36f683e209a51ef0ca9e3a490f52f2c270f9b297
Mathieu Desnoyers [Mon, 1 Nov 2021 18:59:41 +0000 (14:59 -0400)]
Cleanup: notifier syscalls: Remove useless zero-init of zeroed memory
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I30f1c97f3d8ca9f6d800c0407f8ef96d3199cf06
Mathieu Desnoyers [Mon, 1 Nov 2021 18:47:24 +0000 (14:47 -0400)]
Refactoring: combine event enabler destroy for notifier and recorder
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I39ed3d9046604e5ab16f3e565ba72460348f54f5
Mathieu Desnoyers [Mon, 1 Nov 2021 18:31:51 +0000 (14:31 -0400)]
Refactoring: combine event notifier notifier and recorder enable/disable
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ia6cffc5bb36b91c5a5c289c1d1b13accb55dcce3
This page took 0.045024 seconds and 4 git commands to generate.