Compare commits

...

4 Commits
master ... f23

Author SHA1 Message Date
Frank Ch. Eigler eed857910b rhbz1374089 2016-09-07 19:43:47 -04:00
Josh Stone 1328f0dcf7 fix kernel-4.6 conflicts (PR19940, PR19940, PR20158, PR20161) 2016-07-21 11:59:10 -07:00
Frank Ch. Eigler 9dff469f00 Merge branch 'f23' into f24
* f23:
  cont'd
  PR19874 brown paper bag fix
2016-03-28 09:05:02 -04:00
Frank Ch. Eigler 761e49022a Merge branch 'master' into f24
* master:
  date tweak
  upstream release 3.0
  Automated weekly systemtap rawhide release: 0.20160321git1a442bf
2016-03-27 22:14:37 -04:00
3 changed files with 259 additions and 1 deletions

View File

@ -0,0 +1,180 @@
commit d9409a6b848e85dfd9e0cde62d7a2ff835df503c
Author: Josh Stone <jistone@redhat.com>
Date: Thu Jul 21 11:14:12 2016 -0700
Backport fixes for kernel 4.6 to systemtap 3.0
Fedora 23 and 24 were reported broken, rhbz1358863 and rhbz1358782.
commit 8acda2cea4688b8fca910ea8780fc29594ba6085
Author: David Smith <dsmith@redhat.com>
Date: Mon Apr 11 14:07:25 2016 -0500
Fixed PR19940 by updating runtime/linux/access_process_vm.h.
* runtime/linux/access_process_vm.h: Changed page_cache_release() to
put_page().
commit e7c42c3a9fa0c442ae59a15ccf256224c27ef745
Author: David Smith <dsmith@redhat.com>
Date: Mon Apr 25 10:02:36 2016 -0500
Fix PR19990 by updating runtime/linux/access_process_vm.h.
* runtime/linux/access_process_vm.h (__access_process_vm_): Use
get_user_pages_remote() when available.
* buildrun.cxx (compile_pass): Added export test for
'get_user_pages_remote()'.
commit 15de83a3b4b298ea8fa5f86083017d062393c0db
Author: David Smith <dsmith@redhat.com>
Date: Fri May 27 11:19:03 2016 -0500
Fix PR20158 by updating the runtime for the 4.6 kernel.
* buildrun.cxx (compile_pass): Added autoconf-stacktrace_ops-int-address.c
compile test.
* stack.c: (print_stack_address): If STAPCONF_STACKTRACE_OPS_INT_ADDRESS
is defined, the function returns a int instead of being a void
function.
* runtime/linux/autoconf-stacktrace_ops-int-address.c: New autoconf-style
test.
commit 59a9c75e68ba37bc891395da7e25cbef963d1ac7
Author: David Smith <dsmith@redhat.com>
Date: Fri May 27 13:08:36 2016 -0500
Fix PR20161 by handling VM_FAULT_MINOR being removed from rawhide kernels.
* tapset/linux/memory.stp (vm_fault_contains): Handle VM_FAULT_MINOR being
undefined by treating it the same way we did when it had the value of 0.
Plus a small bonus for rhbz1358863:
commit 91bfb360f9a2405edd6cd9f1cb3527aa085fa6ca
Author: Josh Stone <jistone@redhat.com>
Date: Thu Jul 21 10:11:31 2016 -0700
pfaults.stp: correct the fault_entry_time index
Commit 31131f187a73 removed most manual tid() memoization, but missed
this particular use, and stap complained about the never-assigned 'id'.
diff --git a/buildrun.cxx b/buildrun.cxx
index 76139b46b7eb..ca8a6dff3607 100644
--- a/buildrun.cxx
+++ b/buildrun.cxx
@@ -379,6 +379,8 @@ compile_pass (systemtap_session& s)
output_autoconf(s, o, "autoconf-walk-stack.c", "STAPCONF_WALK_STACK", NULL);
output_autoconf(s, o, "autoconf-stacktrace_ops-warning.c",
"STAPCONF_STACKTRACE_OPS_WARNING", NULL);
+ output_autoconf(s, o, "autoconf-stacktrace_ops-int-address.c",
+ "STAPCONF_STACKTRACE_OPS_INT_ADDRESS", NULL);
output_autoconf(s, o, "autoconf-mm-context-vdso.c", "STAPCONF_MM_CONTEXT_VDSO", NULL);
output_autoconf(s, o, "autoconf-mm-context-vdso-base.c", "STAPCONF_MM_CONTEXT_VDSO_BASE", NULL);
output_autoconf(s, o, "autoconf-blk-types.c", "STAPCONF_BLK_TYPES", NULL);
@@ -452,6 +454,7 @@ compile_pass (systemtap_session& s)
"STAPCONF_MODULE_LAYOUT", NULL);
output_autoconf(s, o, "autoconf-mod_kallsyms.c",
"STAPCONF_MOD_KALLSYMS", NULL);
+ output_exportconf(s, o, "get_user_pages_remote", "STAPCONF_GET_USER_PAGES_REMOTE");
o << module_cflags << " += -include $(STAPCONF_HEADER)" << endl;
diff --git a/runtime/linux/access_process_vm.h b/runtime/linux/access_process_vm.h
index fa11baf0276f..214d4e2546bf 100644
--- a/runtime/linux/access_process_vm.h
+++ b/runtime/linux/access_process_vm.h
@@ -32,7 +32,11 @@ __access_process_vm_ (struct task_struct *tsk, unsigned long addr, void *buf,
int bytes, ret, offset;
void *maddr;
+#ifdef STAPCONF_GET_USER_PAGES_REMOTE
+ ret = get_user_pages_remote (tsk, mm, addr, 1, write, 1, &page, &vma);
+#else
ret = get_user_pages (tsk, mm, addr, 1, write, 1, &page, &vma);
+#endif
if (ret <= 0)
break;
@@ -52,7 +56,7 @@ __access_process_vm_ (struct task_struct *tsk, unsigned long addr, void *buf,
reader (vma, page, addr, buf, maddr + offset, bytes);
}
kunmap (page);
- page_cache_release (page);
+ put_page (page);
len -= bytes;
buf += bytes;
addr += bytes;
diff --git a/runtime/linux/autoconf-stacktrace_ops-int-address.c b/runtime/linux/autoconf-stacktrace_ops-int-address.c
new file mode 100644
index 000000000000..8ca277a6e1c3
--- /dev/null
+++ b/runtime/linux/autoconf-stacktrace_ops-int-address.c
@@ -0,0 +1,14 @@
+#include <linux/sched.h>
+#include <asm/stacktrace.h>
+
+// check for 4.6 patch which changed the function signature of
+// stacktrace_ops 'address' member.
+
+int print_stack_address(void *data __attribute__ ((unused)),
+ unsigned long addr __attribute__ ((unused)),
+ int reliable __attribute__ ((unused)))
+{
+ return 0;
+}
+
+struct stacktrace_ops ops __attribute__ ((unused)) = {.address=print_stack_address};
diff --git a/runtime/stack.c b/runtime/stack.c
index a7d03db722d5..a99bad062382 100644
--- a/runtime/stack.c
+++ b/runtime/stack.c
@@ -111,7 +111,11 @@ static int print_stack_stack(void *data, char *name)
return -1;
}
+#ifdef STAPCONF_STACKTRACE_OPS_INT_ADDRESS
+static int print_stack_address(void *data, unsigned long addr, int reliable)
+#else
static void print_stack_address(void *data, unsigned long addr, int reliable)
+#endif
{
struct print_stack_data *sdata = data;
if (sdata->skip > 0)
@@ -122,6 +126,9 @@ static void print_stack_address(void *data, unsigned long addr, int reliable)
NULL);
sdata->levels--;
}
+#ifdef STAPCONF_STACKTRACE_OPS_INT_ADDRESS
+ return 0;
+#endif
}
static const struct stacktrace_ops print_stack_ops = {
diff --git a/tapset/linux/memory.stp b/tapset/linux/memory.stp
index e2c9b3cf32b8..4546ee97c763 100644
--- a/tapset/linux/memory.stp
+++ b/tapset/linux/memory.stp
@@ -30,7 +30,7 @@ function vm_fault_contains:long (value:long, test:long)
switch (STAP_ARG_test){
case 0: res = STAP_ARG_value & VM_FAULT_OOM; break;
case 1: res = STAP_ARG_value & VM_FAULT_SIGBUS; break;
-#if defined(VM_FAULT_MINOR) && VM_FAULT_MINOR == 0
+#if !defined(VM_FAULT_MINOR) || (defined(VM_FAULT_MINOR) && VM_FAULT_MINOR == 0)
case 2: /* VM_FAULT_MINOR infered by that flags off */
res = !((VM_FAULT_OOM | VM_FAULT_SIGBUS | VM_FAULT_MAJOR) &
STAP_ARG_value);
diff --git a/testsuite/systemtap.examples/memory/pfaults.stp b/testsuite/systemtap.examples/memory/pfaults.stp
index eaf6f4e6cdc9..fd70ba3e8d51 100755
--- a/testsuite/systemtap.examples/memory/pfaults.stp
+++ b/testsuite/systemtap.examples/memory/pfaults.stp
@@ -15,7 +15,7 @@ probe vm.pagefault {
probe vm.pagefault.return {
t=gettimeofday_us()
if (!(tid() in fault_entry_time)) next
- e = t - fault_entry_time[id]
+ e = t - fault_entry_time[tid()]
if (vm_fault_contains(fault_type,VM_FAULT_MINOR)) {
ftype="minor"
} else if (vm_fault_contains(fault_type,VM_FAULT_MAJOR)) {

View File

@ -0,0 +1,68 @@
commit 8f888904d8de9a798e4664caa373ea552366b304
Author: David Smith <dsmith@redhat.com>
Date: Mon May 23 13:56:29 2016 -0500
Fix PR20132 by updating the runtime to handle a 'struct inode' change.
* runtime/transport/transport.c (_stp_lock_inode): Use the new inode
lock/unlock routines.
(_stp_unlock_inode): Ditto.
* buildrun.cxx (compile_pass): Add autoconf-inode-rwsem test.
* runtime/linux/autoconf-inode-rwsem.c: New 'autoconf' test.
diff --git a/buildrun.cxx b/buildrun.cxx
index 8cf4b36b186e..27e2be6a2dc3 100644
--- a/buildrun.cxx
+++ b/buildrun.cxx
@@ -321,6 +321,7 @@ compile_pass (systemtap_session& s)
output_autoconf(s, o, "autoconf-generated-compile.c", "STAPCONF_GENERATED_COMPILE", NULL);
output_autoconf(s, o, "autoconf-hrtimer-getset-expires.c", "STAPCONF_HRTIMER_GETSET_EXPIRES", NULL);
output_autoconf(s, o, "autoconf-inode-private.c", "STAPCONF_INODE_PRIVATE", NULL);
+ output_autoconf(s, o, "autoconf-inode-rwsem.c", "STAPCONF_INODE_RWSEM", NULL);
output_autoconf(s, o, "autoconf-constant-tsc.c", "STAPCONF_CONSTANT_TSC", NULL);
output_autoconf(s, o, "autoconf-ktime-get-real.c", "STAPCONF_KTIME_GET_REAL", NULL);
output_autoconf(s, o, "autoconf-x86-uniregs.c", "STAPCONF_X86_UNIREGS", NULL);
diff --git a/runtime/linux/autoconf-inode-rwsem.c b/runtime/linux/autoconf-inode-rwsem.c
new file mode 100644
index 000000000000..8ca4a4accbd9
--- /dev/null
+++ b/runtime/linux/autoconf-inode-rwsem.c
@@ -0,0 +1,5 @@
+#include <linux/fs.h>
+
+// check for 4.6 inode patch which changed i_mutex to i_rwsem
+
+struct inode i __attribute__ ((unused)) = {.i_rwsem=__RWSEM_INITIALIZER(i.i_rwsem)};
diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c
index bbc61d25881d..d19eb1ee3831 100644
--- a/runtime/transport/transport.c
+++ b/runtime/transport/transport.c
@@ -490,20 +490,28 @@ static int _stp_transport_init(void)
static inline void _stp_lock_inode(struct inode *inode)
{
+#ifdef STAPCONF_INODE_RWSEM
+ inode_lock(inode);
+#else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
mutex_lock(&inode->i_mutex);
#else
down(&inode->i_sem);
#endif
+#endif
}
static inline void _stp_unlock_inode(struct inode *inode)
{
+#ifdef STAPCONF_INODE_RWSEM
+ inode_unlock(inode);
+#else
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
mutex_unlock(&inode->i_mutex);
#else
up(&inode->i_sem);
#endif
+#endif
}
static struct dentry *_stp_lockfile = NULL;

View File

@ -60,7 +60,7 @@
Name: systemtap
Version: 3.0
Release: 2%{?dist}
Release: 4%{?dist}
# for version, see also configure.ac
@ -159,6 +159,8 @@ BuildRequires: ncurses-devel
%endif
Patch10: pr19874.patch
Patch11: systemtap-3.0-kernel-4.6.patch
Patch12: systemtap-3.0-kernel-4.7.patch
# Install requirements
Requires: systemtap-client = %{version}-%{release}
@ -411,6 +413,8 @@ cd ..
%endif
%patch10 -p1
%patch11 -p1
%patch12 -p1
%build
@ -1055,6 +1059,12 @@ done
# http://sourceware.org/systemtap/wiki/SystemTapReleases
%changelog
* Wed Sep 07 2016 Frank Ch. Eigler <fche@redhat.com> - 3.0-4
- fix kernel-4.7 conflicts (PR20132)
* Thu Jul 21 2016 Josh Stone <jistone@redhat.com> - 3.0-3
- fix kernel-4.6 conflicts (PR19940, PR19940, PR20158, PR20161)
* Mon Mar 28 2016 Frank Ch. Eigler <fche@redhat.com> - 3.0-2
- fix PR19874 (stap -c CMD 60-second alarm)