import UBI systemtap-4.9-3.el8
This commit is contained in:
parent
c7ff69c7ad
commit
2b832edeae
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/systemtap-4.8.tar.gz
|
SOURCES/systemtap-4.9.tar.gz
|
||||||
|
@ -1 +1 @@
|
|||||||
35e1168d72c9d553a6094825f067e2e62d662a59 SOURCES/systemtap-4.8.tar.gz
|
7ba2ad579a5ba66ccfd36ad6df0896c9e136f9e9 SOURCES/systemtap-4.9.tar.gz
|
||||||
|
1845
SOURCES/pr29108.patch
Normal file
1845
SOURCES/pr29108.patch
Normal file
File diff suppressed because it is too large
Load Diff
99
SOURCES/pr30749.patch
Normal file
99
SOURCES/pr30749.patch
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
commit 9839db5514a29cf4f58b3de8cc6155088be6d061
|
||||||
|
gpg: Signature made Sat 12 Aug 2023 02:49:26 PM EDT
|
||||||
|
gpg: using RSA key 5D38116FA4D3A7CC77E378D37E83610126DCC2E8
|
||||||
|
gpg: Good signature from "Frank Ch. Eigler <fche@elastic.org>" [full]
|
||||||
|
Author: Frank Ch. Eigler <fche@redhat.com>
|
||||||
|
Date: Sat Aug 12 14:28:44 2023 -0400
|
||||||
|
|
||||||
|
PR30749: correct stap --sign-module timing
|
||||||
|
|
||||||
|
Previous code signed the temp directory copy, after it had already
|
||||||
|
been copied into the cache -- so the signature never made it to a
|
||||||
|
permanent artifact.
|
||||||
|
|
||||||
|
If the module was being fetched from the cache from a previous build
|
||||||
|
run, a sign (re)attempt will still be done. This may not be
|
||||||
|
necessary, but shouldn't be harmful.
|
||||||
|
|
||||||
|
Reported-By: Renaud Métrich <rmetrich@redhat.com>
|
||||||
|
|
||||||
|
diff --git a/main.cxx b/main.cxx
|
||||||
|
index 06adb66ad..9f695cbd8 100644
|
||||||
|
--- a/main.cxx
|
||||||
|
+++ b/main.cxx
|
||||||
|
@@ -1190,8 +1190,10 @@ passes_0_4 (systemtap_session &s)
|
||||||
|
s.mok_fingerprints.clear();
|
||||||
|
s.mok_fingerprints.push_back(mok_fingerprint);
|
||||||
|
}
|
||||||
|
- rc =
|
||||||
|
- sign_module (s.tmpdir, s.module_filename(), s.mok_fingerprints, mok_path, s.kernel_build_tree);
|
||||||
|
+ if (s.verbose)
|
||||||
|
+ clog << _F("Signing %s with mok key %s", s.module_filename().c_str(), mok_path.c_str())
|
||||||
|
+ << endl;
|
||||||
|
+ rc = sign_module (s.tmpdir, s.module_filename(), s.mok_fingerprints, mok_path, s.kernel_build_tree);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -1310,8 +1312,30 @@ passes_0_4 (systemtap_session &s)
|
||||||
|
if (! s.use_script_cache && s.last_pass <= 4)
|
||||||
|
s.save_module = true;
|
||||||
|
|
||||||
|
+#if HAVE_NSS
|
||||||
|
+ // PR30749
|
||||||
|
+ if (!rc && s.module_sign_given)
|
||||||
|
+ {
|
||||||
|
+ // when run on client as --sign-module, mok fingerprints are result of mokutil -l
|
||||||
|
+ // when run from server as --sign-module=PATH, mok fingerprint is given by PATH
|
||||||
|
+ string mok_path;
|
||||||
|
+ if (!s.module_sign_mok_path.empty())
|
||||||
|
+ {
|
||||||
|
+ string mok_fingerprint;
|
||||||
|
+ split_path (s.module_sign_mok_path, mok_path, mok_fingerprint);
|
||||||
|
+ s.mok_fingerprints.clear();
|
||||||
|
+ s.mok_fingerprints.push_back(mok_fingerprint);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (s.verbose)
|
||||||
|
+ clog << _F("Signing %s with mok key %s", s.module_filename().c_str(), mok_path.c_str())
|
||||||
|
+ << endl;
|
||||||
|
+ rc = sign_module (s.tmpdir, s.module_filename(), s.mok_fingerprints, mok_path, s.kernel_build_tree);
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
// Copy module to the current directory.
|
||||||
|
- if (s.save_module && !pending_interrupts)
|
||||||
|
+ if (!rc && s.save_module && !pending_interrupts)
|
||||||
|
{
|
||||||
|
string module_src_path = s.tmpdir + "/" + s.module_filename();
|
||||||
|
string module_dest_path = s.module_filename();
|
||||||
|
@@ -1327,29 +1351,11 @@ passes_0_4 (systemtap_session &s)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-#if HAVE_NSS
|
||||||
|
- if (s.module_sign_given)
|
||||||
|
- {
|
||||||
|
- // when run on client as --sign-module, mok fingerprints are result of mokutil -l
|
||||||
|
- // when run from server as --sign-module=PATH, mok fingerprint is given by PATH
|
||||||
|
- string mok_path;
|
||||||
|
- if (!s.module_sign_mok_path.empty())
|
||||||
|
- {
|
||||||
|
- string mok_fingerprint;
|
||||||
|
- split_path (s.module_sign_mok_path, mok_path, mok_fingerprint);
|
||||||
|
- s.mok_fingerprints.clear();
|
||||||
|
- s.mok_fingerprints.push_back(mok_fingerprint);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- rc = sign_module (s.tmpdir, s.module_filename(), s.mok_fingerprints, mok_path, s.kernel_build_tree);
|
||||||
|
- }
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
PROBE1(stap, pass4__end, &s);
|
||||||
|
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+
|
||||||
|
int
|
||||||
|
pass_5 (systemtap_session &s, vector<remote*> targets)
|
||||||
|
{
|
@ -1,50 +0,0 @@
|
|||||||
commit 47cab810bb7ea315a2dec23c2f61e7ba74515b82
|
|
||||||
Author: Martin Cermak <mcermak@redhat.com>
|
|
||||||
Date: Fri Dec 16 16:08:20 2022 -0500
|
|
||||||
|
|
||||||
tapset: nfs.proc.commit_done compilation on some kernels
|
|
||||||
|
|
||||||
Correct:
|
|
||||||
9.0 Server x86_64 # stap -vp3 nfs.proc.commit_done.stp
|
|
||||||
|
|
||||||
Pass 1: parsed user script and 482 library scripts using 108088virt/88468res/12460shr/75476data kb, in 190usr/60sys/501real ms.
|
|
||||||
semantic error: invalid access '->task' vs 'void*': operator '->' at /usr/share/systemtap/tapset/linux/nfs_proc.stpm:16:21
|
|
||||||
source: ( get_ip(&@nfs_data->task) )
|
|
||||||
^
|
|
||||||
in expansion of macro: operator '@_nfs_data_server_ip' at /usr/share/systemtap/tapset/linux/nfs_proc.stp:1421:15
|
|
||||||
source: server_ip = @_nfs_data_server_ip($task->tk_calldata)
|
|
||||||
^
|
|
||||||
|
|
||||||
diff --git a/tapset/linux/nfs_proc.stp b/tapset/linux/nfs_proc.stp
|
|
||||||
index 9b1f65f5f..4413384f9 100644
|
|
||||||
--- a/tapset/linux/nfs_proc.stp
|
|
||||||
+++ b/tapset/linux/nfs_proc.stp
|
|
||||||
@@ -1442,10 +1442,11 @@ probe nfs.proc3.commit_done = kernel.function("nfs3_commit_done") !,
|
|
||||||
valid = @_nfs_data_valid($data)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
- server_ip = @_nfs_data_server_ip($task->tk_calldata)
|
|
||||||
- prot = @_nfs_data_prot($task->tk_calldata)
|
|
||||||
- count = @_nfs_data_res_count($task->tk_calldata)
|
|
||||||
- valid = @_nfs_data_valid($task->tk_calldata)
|
|
||||||
+ _tk_calldata=@choose_defined($task->tk_calldata, @cast($task, "rpc_task", "kernel:nfs")->tk_calldata)
|
|
||||||
+ server_ip = @_nfs_data_server_ip(_tk_calldata)
|
|
||||||
+ prot = @_nfs_data_prot(_tk_calldata)
|
|
||||||
+ count = @_nfs_data_res_count(_tk_calldata)
|
|
||||||
+ valid = @_nfs_data_valid(_tk_calldata)
|
|
||||||
}
|
|
||||||
timestamp = 0
|
|
||||||
version = 3
|
|
||||||
diff --git a/tapset/linux/nfs_proc.stpm b/tapset/linux/nfs_proc.stpm
|
|
||||||
index 8576c0f33..4fe40b2a5 100644
|
|
||||||
--- a/tapset/linux/nfs_proc.stpm
|
|
||||||
+++ b/tapset/linux/nfs_proc.stpm
|
|
||||||
@@ -13,7 +13,7 @@
|
|
||||||
|
|
||||||
@define _nfs_data_server_ip(nfs_data)
|
|
||||||
%(
|
|
||||||
- ( get_ip(&@nfs_data->task) )
|
|
||||||
+ ( get_ip(@choose_defined(&@nfs_data->task, &@cast(@nfs_data, "nfs_commit_data", "kernel:nfs")->task)) )
|
|
||||||
%)
|
|
||||||
|
|
||||||
@define _nfs_data_prot(nfs_data)
|
|
@ -1,30 +0,0 @@
|
|||||||
commit 578e60102871d11ed8c18d36f6286f3a96258d8f
|
|
||||||
Author: Ryan Goldberg <rgoldber@redhat.com>
|
|
||||||
Date: Thu Dec 1 16:15:44 2022 -0500
|
|
||||||
|
|
||||||
PR29676: Wildcard expansion fix for labels
|
|
||||||
|
|
||||||
PR29676, introduced an bug where function symbols from the symbol
|
|
||||||
table were expanded in the function component resulting in wildcards
|
|
||||||
not being expanded in labels. This fix, removes the issue by restricting
|
|
||||||
the symbol table query to probes which don't need further debuginfo to
|
|
||||||
expand.
|
|
||||||
|
|
||||||
diff --git a/tapsets.cxx b/tapsets.cxx
|
|
||||||
index 0ec71ebda..46b10f26e 100644
|
|
||||||
--- a/tapsets.cxx
|
|
||||||
+++ b/tapsets.cxx
|
|
||||||
@@ -1256,7 +1256,11 @@ dwarf_query::handle_query_module()
|
|
||||||
// in the symbol table but not in dwarf and minidebuginfo is
|
|
||||||
// located in the gnu_debugdata section, alias_dupes checking
|
|
||||||
// is done before adding any probe points
|
|
||||||
- if(!pending_interrupts)
|
|
||||||
+ // PR29676. Some probes require additional debuginfo
|
|
||||||
+ // to expand wildcards (ex. .label, .callee). Since the debuginfo is
|
|
||||||
+ // not available, don't bother looking in the symbol table for these results.
|
|
||||||
+ // This can result in 0 results, if there is no dwarf info present
|
|
||||||
+ if(!pending_interrupts && !(has_label || has_callee || has_callees_num))
|
|
||||||
query_module_symtab();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,78 +0,0 @@
|
|||||||
commit 05eb6742c169226ae09f1737aa8b9dc1dc12adb5
|
|
||||||
Author: Mark Wielaard <mark@klomp.org>
|
|
||||||
Date: Tue Nov 29 18:50:58 2022 +0100
|
|
||||||
|
|
||||||
Handle DWARF5 DW_OP_implicit_pointer and DW_OP_entry_value
|
|
||||||
|
|
||||||
These are the same as the GNU extensions for older DWARF,
|
|
||||||
DW_OP_GNU_implicit_pointer and DW_GNU_entry_value.
|
|
||||||
|
|
||||||
diff --git a/loc2stap.cxx b/loc2stap.cxx
|
|
||||||
index efc78cc57..53316a480 100644
|
|
||||||
--- a/loc2stap.cxx
|
|
||||||
+++ b/loc2stap.cxx
|
|
||||||
@@ -23,6 +23,11 @@
|
|
||||||
#define DW_OP_GNU_entry_value 0xf3
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#if ! _ELFUTILS_PREREQ(0, 171)
|
|
||||||
+#define DW_OP_entry_value 0xa3
|
|
||||||
+#define DW_OP_implicit_pointer 0xa0
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#define N_(x) x
|
|
||||||
|
|
||||||
|
|
||||||
@@ -372,7 +377,7 @@ location_context::translate (const Dwarf_Op *expr, const size_t len,
|
|
||||||
DIE ("operations follow DW_OP_implicit_value");
|
|
||||||
|
|
||||||
if (implicit_pointer != NULL)
|
|
||||||
- DIE ("operations follow DW_OP_GNU_implicit_pointer");
|
|
||||||
+ DIE ("operations follow DW_OP implicit_pointer");
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (expr[i].atom)
|
|
||||||
@@ -662,6 +667,7 @@ location_context::translate (const Dwarf_Op *expr, const size_t len,
|
|
||||||
|
|
||||||
#if _ELFUTILS_PREREQ (0, 149)
|
|
||||||
case DW_OP_GNU_implicit_pointer:
|
|
||||||
+ case DW_OP_implicit_pointer:
|
|
||||||
implicit_pointer = &expr[i];
|
|
||||||
/* Fake top of stack: implicit_pointer being set marks it. */
|
|
||||||
PUSH(NULL);
|
|
||||||
@@ -684,10 +690,11 @@ location_context::translate (const Dwarf_Op *expr, const size_t len,
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DW_OP_GNU_entry_value:
|
|
||||||
+ case DW_OP_entry_value:
|
|
||||||
{
|
|
||||||
expression *result = handle_GNU_entry_value (expr[i]);
|
|
||||||
if (result == NULL)
|
|
||||||
- DIE("DW_OP_GNU_entry_value unable to resolve value");
|
|
||||||
+ DIE("DW_OP entry_value unable to resolve value");
|
|
||||||
PUSH(result);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
@@ -1248,7 +1255,8 @@ location_context::location_relative (const Dwarf_Op *expr, size_t len,
|
|
||||||
break;
|
|
||||||
|
|
||||||
case DW_OP_GNU_entry_value:
|
|
||||||
- DIE ("unhandled DW_OP_GNU_entry_value");
|
|
||||||
+ case DW_OP_entry_value:
|
|
||||||
+ DIE ("unhandled DW_OP entry_value");
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
diff --git a/testsuite/systemtap.base/dw_entry_value.exp b/testsuite/systemtap.base/dw_entry_value.exp
|
|
||||||
index 7339fc5fa..b728fa7ff 100644
|
|
||||||
--- a/testsuite/systemtap.base/dw_entry_value.exp
|
|
||||||
+++ b/testsuite/systemtap.base/dw_entry_value.exp
|
|
||||||
@@ -10,7 +10,7 @@ if { $res != "" } {
|
|
||||||
pass "$test: compiled $test.c"
|
|
||||||
}
|
|
||||||
|
|
||||||
-if { ![catch { exec eu-readelf -w $test | grep GNU_entry_value }] } {
|
|
||||||
+if { ![catch { exec eu-readelf -w $test | grep entry_value: }] } {
|
|
||||||
stap_run $test no_load $all_pass_string $srcdir/$subdir/$test.stp -c ./${test} -w
|
|
||||||
} else {
|
|
||||||
untested "$test: no DW_OP_GNU_entry_value found"
|
|
@ -1,73 +0,0 @@
|
|||||||
commit 7eed8d1fef36997b9e4c1d9cdb67643483a51e56
|
|
||||||
Author: William Cohen <wcohen@redhat.com>
|
|
||||||
Date: Fri Nov 4 11:12:05 2022 -0400
|
|
||||||
|
|
||||||
Ensure that SystemTap runtime uses smp_processor_id() in proper context
|
|
||||||
|
|
||||||
There were cases on Fedora 36 and Rawhide running kernels with
|
|
||||||
CONFIG_DEBUG_PREEMPT=y where systemtap scripts would trigger kernel
|
|
||||||
log messages like the following:
|
|
||||||
|
|
||||||
[ 257.544406] check_preemption_disabled: 4 callbacks suppressed
|
|
||||||
[ 257.544409] BUG: using smp_processor_id() in preemptible [00000000] code: staprun/2106
|
|
||||||
[ 257.544465] caller is _stp_runtime_context_trylock+0x12/0x70 [stap_e36600406768aeefd49daf9fc7a3d23c_2106]
|
|
||||||
[ 257.544507] CPU: 0 PID: 2106 Comm: staprun Tainted: G OE ------- --- 6.1.0-0.rc2.20221028git23758867219c.24.fc38.x86_64 #1
|
|
||||||
[ 257.544544] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.0-1.fc36 04/01/2014
|
|
||||||
[ 257.544571] Call Trace:
|
|
||||||
[ 257.544583] <TASK>
|
|
||||||
[ 257.544593] dump_stack_lvl+0x5b/0x77
|
|
||||||
[ 257.544620] check_preemption_disabled+0xe1/0xf0
|
|
||||||
[ 257.544641] _stp_runtime_context_trylock+0x12/0x70 [stap_e36600406768aeefd49daf9fc7a3d23c_2106]
|
|
||||||
[ 257.544673] _stp_runtime_entryfn_get_context+0xb/0x70 [stap_e36600406768aeefd49daf9fc7a3d23c_2106]
|
|
||||||
[ 257.544705] _stp_ctl_send+0x76/0x1e0 [stap_e36600406768aeefd49daf9fc7a3d23c_2106]
|
|
||||||
[ 257.544735] _stp_transport_init+0x71a/0x860 [stap_e36600406768aeefd49daf9fc7a3d23c_2106]
|
|
||||||
[ 257.544771] ? kallsyms_on_each_symbol+0x30/0x30 [stap_e36600406768aeefd49daf9fc7a3d23c_2106]
|
|
||||||
[ 257.544803] do_one_initcall+0x6b/0x320
|
|
||||||
[ 257.544827] do_init_module+0x4a/0x200
|
|
||||||
[ 257.544844] __do_sys_init_module+0x16a/0x1a0
|
|
||||||
[ 257.544870] do_syscall_64+0x58/0x80
|
|
||||||
[ 257.544885] ? up_read+0x17/0x20
|
|
||||||
[ 257.544902] ? lock_is_held_type+0xe8/0x140
|
|
||||||
[ 257.544921] ? asm_exc_page_fault+0x22/0x30
|
|
||||||
[ 257.544939] ? lockdep_hardirqs_on+0x7d/0x100
|
|
||||||
[ 257.544956] entry_SYSCALL_64_after_hwframe+0x63/0xcd
|
|
||||||
[ 257.544975] RIP: 0033:0x7f3cde12f5de
|
|
||||||
[ 257.544992] Code: 48 8b 0d 35 68 0c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 49 89 ca b8 af 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 02 68 0c 00 f7 d8 64 89 01 48
|
|
||||||
[ 257.545010] RSP: 002b:00007ffc5170c418 EFLAGS: 00000246 ORIG_RAX: 00000000000000af
|
|
||||||
[ 257.545010] RAX: ffffffffffffffda RBX: 0000563620bd4020 RCX: 00007f3cde12f5de
|
|
||||||
[ 257.545010] RDX: 0000563620bd4020 RSI: 0000000000040ea0 RDI: 00007f3cde44a010
|
|
||||||
[ 257.545010] RBP: 0000000000000003 R08: 0000000000000000 R09: 0000000000000000
|
|
||||||
[ 257.545010] R10: 0000000000000053 R11: 0000000000000246 R12: 00007ffc5170c510
|
|
||||||
[ 257.545010] R13: 00007f3cde44a010 R14: 00007ffc5170c440 R15: 00007f3cde4631e8
|
|
||||||
[ 257.545010] </TASK>
|
|
||||||
|
|
||||||
This issue was introduced by git commit 1641b6e7ea which added a fast
|
|
||||||
path check that used smp_processor_id() without first having a
|
|
||||||
preempt_disable(). The code now ensures that preemption is disabled
|
|
||||||
before using the smp_processor_id().
|
|
||||||
|
|
||||||
diff --git a/runtime/linux/runtime_context.h b/runtime/linux/runtime_context.h
|
|
||||||
index 3ed3cbd22..ee3870f32 100644
|
|
||||||
--- a/runtime/linux/runtime_context.h
|
|
||||||
+++ b/runtime/linux/runtime_context.h
|
|
||||||
@@ -49,13 +49,18 @@ static bool _stp_runtime_context_trylock(void)
|
|
||||||
{
|
|
||||||
bool locked;
|
|
||||||
|
|
||||||
+ /* Need to disable preemption because of the smp_processor_id() call
|
|
||||||
+ in _stp_runtime_get_context(). */
|
|
||||||
+ preempt_disable();
|
|
||||||
+
|
|
||||||
/* fast path to ignore new online CPUs without percpu context memory
|
|
||||||
* allocations. this also serves as an extra safe guard for NULL context
|
|
||||||
* pointers. */
|
|
||||||
- if (unlikely(_stp_runtime_get_context() == NULL))
|
|
||||||
+ if (unlikely(_stp_runtime_get_context() == NULL)) {
|
|
||||||
+ preempt_enable_no_resched();
|
|
||||||
return false;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
- preempt_disable();
|
|
||||||
locked = atomic_add_unless(&_stp_contexts_busy_ctr, 1, INT_MAX);
|
|
||||||
if (!locked)
|
|
||||||
preempt_enable_no_resched();
|
|
@ -1,72 +0,0 @@
|
|||||||
commit 8f3498781413a710dc9e128f5a96891a6a18fc52
|
|
||||||
Author: Martin Cermak <mcermak@redhat.com>
|
|
||||||
Date: Wed Dec 14 17:37:58 2022 +0100
|
|
||||||
|
|
||||||
PR29766: kernel.function("__set_page_dirty_buffers") not found in vfs.stp
|
|
||||||
|
|
||||||
Updates needed for 6.1.0-65.fc38 compatibility.
|
|
||||||
|
|
||||||
diff --git a/tapset/linux/vfs.stp b/tapset/linux/vfs.stp
|
|
||||||
index e3c1a3032..aebeb3fc0 100644
|
|
||||||
--- a/tapset/linux/vfs.stp
|
|
||||||
+++ b/tapset/linux/vfs.stp
|
|
||||||
@@ -822,13 +822,15 @@ probe vfs.buffer_migrate_page.return =
|
|
||||||
}
|
|
||||||
|
|
||||||
/* default if aop not set, __set_page_dirty_nobuffers usually used if set */
|
|
||||||
-probe vfs.__set_page_dirty_buffers = kernel.function("__set_page_dirty_buffers")
|
|
||||||
+/* block_dirty_folio related to kernel commit e621900ad28b748e058b81d6078 */
|
|
||||||
+probe vfs.__set_page_dirty_buffers = kernel.function("__set_page_dirty_buffers")!,
|
|
||||||
+ kernel.function("block_dirty_folio")
|
|
||||||
{
|
|
||||||
- dev = __page_dev($page)
|
|
||||||
- devname = __find_bdevname(dev, __page_bdev($page))
|
|
||||||
- ino = __page_ino($page)
|
|
||||||
+ dev = __page_dev(@choose_defined($page, $folio))
|
|
||||||
+ devname = __find_bdevname(dev, __page_bdev(@choose_defined($page, $folio)))
|
|
||||||
+ ino = __page_ino(@choose_defined($page, $folio))
|
|
||||||
|
|
||||||
- index = __page_index($page)
|
|
||||||
+ index = __page_index(@choose_defined($page, $folio))
|
|
||||||
|
|
||||||
name = "__set_page_dirty_buffers"
|
|
||||||
argstr = sprintf("%d", index)
|
|
||||||
@@ -837,7 +839,8 @@ probe vfs.__set_page_dirty_buffers = kernel.function("__set_page_dirty_buffers")
|
|
||||||
units = "pages"
|
|
||||||
}
|
|
||||||
probe vfs.__set_page_dirty_buffers.return =
|
|
||||||
- kernel.function("__set_page_dirty_buffers").return
|
|
||||||
+ kernel.function("__set_page_dirty_buffers").return!,
|
|
||||||
+ kernel.function("block_dirty_folio")
|
|
||||||
{
|
|
||||||
name = "__set_page_dirty_buffers"
|
|
||||||
retstr = sprintf("%d", $return)
|
|
||||||
@@ -914,8 +917,9 @@ probe __vfs.ext4_mpage_readpages.return =
|
|
||||||
|
|
||||||
|
|
||||||
/* newer style */
|
|
||||||
+/* add_to_page_cache_locked removed per kernel commit f00654007fe1c15 */
|
|
||||||
probe vfs.__add_to_page_cache =
|
|
||||||
- kernel.function("add_to_page_cache_locked"),
|
|
||||||
+ kernel.function("add_to_page_cache_locked") !,
|
|
||||||
kernel.function("add_to_page_cache_lru")
|
|
||||||
{ }
|
|
||||||
|
|
||||||
@@ -939,7 +943,7 @@ probe vfs.add_to_page_cache =
|
|
||||||
|
|
||||||
/* newer style */
|
|
||||||
probe vfs.__add_to_page_cache.return =
|
|
||||||
- kernel.function("add_to_page_cache_locked").return,
|
|
||||||
+ kernel.function("add_to_page_cache_locked").return !,
|
|
||||||
kernel.function("add_to_page_cache_lru").return
|
|
||||||
{ }
|
|
||||||
|
|
||||||
@@ -958,7 +962,7 @@ probe vfs.add_to_page_cache.return =
|
|
||||||
|
|
||||||
probe vfs.remove_from_page_cache =
|
|
||||||
kernel.function("__delete_from_page_cache") !,
|
|
||||||
- kernel.function("__remove_from_page_cache")
|
|
||||||
+ kernel.function("__remove_from_page_cache") ?
|
|
||||||
{
|
|
||||||
dev = __page_dev($page)
|
|
||||||
devname = __find_bdevname(dev, __page_bdev($page))
|
|
24
SOURCES/rhbz2223733.patch
Normal file
24
SOURCES/rhbz2223733.patch
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
commit ead30c04c7157fec194c0f6d81e5c51c99bf25cf
|
||||||
|
gpg: Signature made Wed 24 May 2023 10:23:54 AM EDT
|
||||||
|
gpg: using RSA key 5D38116FA4D3A7CC77E378D37E83610126DCC2E8
|
||||||
|
gpg: Good signature from "Frank Ch. Eigler <fche@elastic.org>" [full]
|
||||||
|
Author: Frank Ch. Eigler <fche@redhat.com>
|
||||||
|
Date: Wed May 24 10:22:08 2023 -0400
|
||||||
|
|
||||||
|
PR30484: stap-report: scrape less of /sys /proc
|
||||||
|
|
||||||
|
Mainly: avoid process/busy parts like /proc/$pid.
|
||||||
|
|
||||||
|
diff --git a/stap-report b/stap-report
|
||||||
|
index 217ddf840..3b3a1a258 100755
|
||||||
|
--- a/stap-report
|
||||||
|
+++ b/stap-report
|
||||||
|
@@ -105,7 +105,7 @@ elif [ -f /var/log/packages ]; then
|
||||||
|
run "cat /var/log/packages | egrep 'systemtap|elfutils|kernel|gcc|dyninst|java|byteman|avahi|nss|nspr|dejagnu' | sort -k9"
|
||||||
|
fi
|
||||||
|
run "egrep 'PROBE|RANDOMIZE|RELOC|TRACE|MARKER|KALLSYM|_DEBUG_|LOCKDEP|LOCKING|MODULE|FENTRY|_SIG|BPF' /lib/modules/`uname -r`/build/.config | grep -v not.set | sort | fmt -w 80"
|
||||||
|
-run "find /debugfs /proc /sys /dev /sys/kernel/debug -type f -path '*kprobe*' -o -path '*yama*' 2>/dev/null | xargs grep -H ."
|
||||||
|
+run "find /debugfs /proc/sys /sys/kernel /dev -type f -path '*kprobe*' -o -path '*yama*' 2>/dev/null | xargs grep -H ."
|
||||||
|
run "lsmod"
|
||||||
|
run "avahi-browse -r -t _stap._tcp"
|
||||||
|
run "ifconfig -a"
|
64
SOURCES/rhbz2223735.patch
Normal file
64
SOURCES/rhbz2223735.patch
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
commit ab0c5c25509600b7c9cecc9e10baebc984082b50
|
||||||
|
gpg: Signature made Fri 12 May 2023 11:18:18 AM EDT
|
||||||
|
gpg: using RSA key 5D38116FA4D3A7CC77E378D37E83610126DCC2E8
|
||||||
|
gpg: Good signature from "Frank Ch. Eigler <fche@elastic.org>" [full]
|
||||||
|
Author: Frank Ch. Eigler <fche@redhat.com>
|
||||||
|
Date: Fri May 12 11:13:45 2023 -0400
|
||||||
|
|
||||||
|
PR30442: failing optional statement probes should not trigger pass2 exceptions
|
||||||
|
|
||||||
|
In tapsets.cxx, query_cu() and query_module() aggressively caught &
|
||||||
|
sess-print_error'd semantic_errors from subsidiary call sites. They
|
||||||
|
are unaware of whether the probe in question is being resolved within
|
||||||
|
an optional (? or !) context. Instead of this, they now simply let
|
||||||
|
the exceptions propagate out to derive_probes() or similar, which does
|
||||||
|
know whether exceptions are errors in that context. That means
|
||||||
|
exceptions can propagate through elfutils iteration machinery too,
|
||||||
|
perhaps risking C level memory leaks, but so be it.
|
||||||
|
|
||||||
|
This fix goes well beyond statement probes per se, but hand-testing
|
||||||
|
and the testsuite appear not to show regressions related to this.
|
||||||
|
|
||||||
|
Added semok/badstmt.exp to test.
|
||||||
|
|
||||||
|
diff --git a/tapsets.cxx b/tapsets.cxx
|
||||||
|
index 859160bc5..7b7107371 100644
|
||||||
|
--- a/tapsets.cxx
|
||||||
|
+++ b/tapsets.cxx
|
||||||
|
@@ -2453,8 +2453,9 @@ query_cu (Dwarf_Die * cudie, dwarf_query * q)
|
||||||
|
}
|
||||||
|
catch (const semantic_error& e)
|
||||||
|
{
|
||||||
|
- q->sess.print_error (e);
|
||||||
|
- return DWARF_CB_ABORT;
|
||||||
|
+ // q->sess.print_error (e);
|
||||||
|
+ throw;
|
||||||
|
+ // return DWARF_CB_ABORT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -2696,8 +2697,9 @@ query_module (Dwfl_Module *mod,
|
||||||
|
}
|
||||||
|
catch (const semantic_error& e)
|
||||||
|
{
|
||||||
|
- q->sess.print_error (e);
|
||||||
|
- return DWARF_CB_ABORT;
|
||||||
|
+ // q->sess.print_error (e);
|
||||||
|
+ // return DWARF_CB_ABORT;
|
||||||
|
+ throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/testsuite/semok/stmtbad.stp b/testsuite/semok/stmtbad.stp
|
||||||
|
new file mode 100755
|
||||||
|
index 000000000..06780790a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/testsuite/semok/stmtbad.stp
|
||||||
|
@@ -0,0 +1,7 @@
|
||||||
|
+#! /bin/sh
|
||||||
|
+
|
||||||
|
+exec stap -v -p2 -e 'probe oneshot {log("nothing") }
|
||||||
|
+ probe process.statement("main@*:1")? { log("yo") }' -c stap
|
||||||
|
+
|
||||||
|
+# The optional misaddressed statement probe should let stap still
|
||||||
|
+# succeed with the oneshot probe.
|
@ -121,8 +121,9 @@ m stapdev stapdev
|
|||||||
|
|
||||||
|
|
||||||
Name: systemtap
|
Name: systemtap
|
||||||
Version: 4.8
|
# PRERELEASE
|
||||||
Release: 2%{?release_override}%{?dist}
|
Version: 4.9
|
||||||
|
Release: 3%{?release_override}%{?dist}
|
||||||
# for version, see also configure.ac
|
# for version, see also configure.ac
|
||||||
|
|
||||||
|
|
||||||
@ -141,6 +142,7 @@ Release: 2%{?release_override}%{?dist}
|
|||||||
# systemtap-runtime-virtguest udev rules, init scripts/systemd service, req:-runtime
|
# systemtap-runtime-virtguest udev rules, init scripts/systemd service, req:-runtime
|
||||||
# systemtap-runtime-python2 HelperSDT python2 module, req:-runtime
|
# systemtap-runtime-python2 HelperSDT python2 module, req:-runtime
|
||||||
# systemtap-runtime-python3 HelperSDT python3 module, req:-runtime
|
# systemtap-runtime-python3 HelperSDT python3 module, req:-runtime
|
||||||
|
# systemtap-jupyter /usr/bin/stap-jupyter-* interactive-notebook req:systemtap
|
||||||
#
|
#
|
||||||
# Typical scenarios:
|
# Typical scenarios:
|
||||||
#
|
#
|
||||||
@ -158,12 +160,10 @@ License: GPLv2+
|
|||||||
URL: http://sourceware.org/systemtap/
|
URL: http://sourceware.org/systemtap/
|
||||||
Source: ftp://sourceware.org/pub/systemtap/releases/systemtap-%{version}.tar.gz
|
Source: ftp://sourceware.org/pub/systemtap/releases/systemtap-%{version}.tar.gz
|
||||||
|
|
||||||
Patch1: rhbz1997192.patch
|
Patch1: rhbz2223733.patch
|
||||||
Patch2: rhbz2145242.patch
|
Patch2: rhbz2223735.patch
|
||||||
Patch3: rhbz2149223.patch
|
Patch3: pr29108.patch
|
||||||
Patch4: rhbz2149666.patch
|
Patch4: pr30749.patch
|
||||||
Patch5: rhbz2154430.patch
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Build*
|
# Build*
|
||||||
@ -578,16 +578,26 @@ This package installs the services necessary on a virtual machine for a
|
|||||||
systemtap-runtime-virthost machine to execute systemtap scripts.
|
systemtap-runtime-virthost machine to execute systemtap scripts.
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{with_python3} && %{with_monitor}
|
||||||
|
%package jupyter
|
||||||
|
Summary: ISystemtap jupyter kernel and examples
|
||||||
|
License: GPLv2+
|
||||||
|
URL: http://sourceware.org/systemtap/
|
||||||
|
Requires: systemtap = %{version}-%{release}
|
||||||
|
|
||||||
|
%description jupyter
|
||||||
|
This package includes files needed to build and run
|
||||||
|
the interactive systemtap Jupyter kernel, either locally
|
||||||
|
or within a container.
|
||||||
|
%endif
|
||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
%patch -P1 -p1
|
||||||
%patch1 -p1
|
%patch -P2 -p1
|
||||||
%patch2 -p1
|
%patch -P3 -p1
|
||||||
%patch3 -p1
|
%patch -P4 -p1
|
||||||
%patch4 -p1
|
|
||||||
%patch5 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
|
|
||||||
@ -1289,6 +1299,15 @@ exit 0
|
|||||||
%{_sbindir}/stap-exporter
|
%{_sbindir}/stap-exporter
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
%if %{with_python3} && %{with_monitor}
|
||||||
|
%files jupyter
|
||||||
|
%{_bindir}/stap-jupyter-container
|
||||||
|
%{_bindir}/stap-jupyter-install
|
||||||
|
%{_mandir}/man1/stap-jupyter.1*
|
||||||
|
%dir %{_datadir}/systemtap
|
||||||
|
%{_datadir}/systemtap/interactive-notebook
|
||||||
|
%endif
|
||||||
|
|
||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
|
|
||||||
# Future new-release entries should be of the form
|
# Future new-release entries should be of the form
|
||||||
@ -1298,6 +1317,18 @@ exit 0
|
|||||||
|
|
||||||
# PRERELEASE
|
# PRERELEASE
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Aug 14 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-3
|
||||||
|
- rhbz2231619
|
||||||
|
- rhbz2095359
|
||||||
|
|
||||||
|
* Tue Jul 18 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-2
|
||||||
|
- rhbz2223733 = rhbz2211288
|
||||||
|
- rhbz2223735 = rhbz2223739
|
||||||
|
|
||||||
|
* Fri Apr 28 2023 Frank Ch. Eigler <fche@redhat.com> - 4.9-1
|
||||||
|
- Upstream release, see wiki page below for detailed notes.
|
||||||
|
https://sourceware.org/systemtap/wiki/SystemTapReleases
|
||||||
|
|
||||||
* Fri Dec 23 2022 Frank Ch. Eigler <fche@redhat.com> - 4.8-2
|
* Fri Dec 23 2022 Frank Ch. Eigler <fche@redhat.com> - 4.8-2
|
||||||
- rhbz2156092 = rhbz1997192
|
- rhbz2156092 = rhbz1997192
|
||||||
- rhbz2145241 = rhbz2145242
|
- rhbz2145241 = rhbz2145242
|
||||||
|
Loading…
Reference in New Issue
Block a user