Rebase to v23.3
This commit is contained in:
parent
39e7a56913
commit
4897c5eb02
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,3 +8,4 @@ psmisc-22.10.tar.gz
|
||||
/psmisc-22.21.tar.gz
|
||||
/psmisc-23.1.tar.xz
|
||||
/psmisc-23.2.tar.xz
|
||||
/psmisc-23.3.tar.xz
|
||||
|
@ -1,122 +0,0 @@
|
||||
From 1188315cd037d73bf946a0003b70c6423cc330d2 Mon Sep 17 00:00:00 2001
|
||||
From: Craig Small <csmall@enc.com.au>
|
||||
Date: Wed, 7 Nov 2018 20:13:09 +1100
|
||||
Subject: [PATCH 01/11] killall: match on 16 character commlen too
|
||||
|
||||
The comm length increase meant killall could accomodate the
|
||||
larger comm name given out by newer kernels but it meant that
|
||||
if a user relied on the previous 16 character truncation then
|
||||
processes that used to match would fail.
|
||||
|
||||
killall now checks to see if the the comm is the old COMM_LEN
|
||||
length and the given name is longer than old COMM_LEN and does
|
||||
a truncated match as well.
|
||||
|
||||
References:
|
||||
https://bugs.debian.org/912748
|
||||
---
|
||||
ChangeLog | 3 +++
|
||||
src/killall.c | 69 +++++++++++++++++++++++++++++++++++----------------
|
||||
2 files changed, 50 insertions(+), 22 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 7fd2abd..37962cb 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,3 +1,6 @@
|
||||
+Changes in 23.4
|
||||
+===============
|
||||
+ * killall: check also truncated 16 char comm names Debian #912748
|
||||
Changes in 23.2
|
||||
===============
|
||||
* misc: Command names increased from 16 to 64 characters
|
||||
diff --git a/src/killall.c b/src/killall.c
|
||||
index 2715515..09212a4 100644
|
||||
--- a/src/killall.c
|
||||
+++ b/src/killall.c
|
||||
@@ -492,6 +492,49 @@ create_pid_table(int *max_pids, int *pids)
|
||||
return pid_table;
|
||||
}
|
||||
|
||||
+#define strcmp2(A,B,I) (I? strcasecmp((A),(B)):strcmp((A),(B)))
|
||||
+#define strncmp2(A,B,L,I) (I? strncasecmp((A),(B),(L)):strncmp((A),(B),(L)))
|
||||
+static int match_process_name(
|
||||
+ const char *proc_comm,
|
||||
+ const int comm_len,
|
||||
+ const char *proc_cmdline,
|
||||
+ const char *match_name,
|
||||
+ const int match_len,
|
||||
+ const int got_long
|
||||
+ )
|
||||
+{
|
||||
+ /* process is old length but matching longer */
|
||||
+ if (comm_len == OLD_COMM_LEN - 1 && match_len >= OLD_COMM_LEN - 1)
|
||||
+ {
|
||||
+ if (got_long)
|
||||
+ {
|
||||
+ return (0 == strncmp2 (match_name, proc_cmdline, OLD_COMM_LEN - 1,
|
||||
+ ignore_case));
|
||||
+ } else {
|
||||
+ return (0 == strncmp2 (match_name, proc_comm, OLD_COMM_LEN - 1,
|
||||
+ ignore_case));
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (comm_len == COMM_LEN - 1 && match_len >= COMM_LEN - 1)
|
||||
+ {
|
||||
+ if (got_long)
|
||||
+ {
|
||||
+ return (0 == strncmp2 (match_name, proc_cmdline, COMM_LEN - 1,
|
||||
+ ignore_case));
|
||||
+ } else {
|
||||
+ return (0 == strncmp2 (match_name, proc_comm, COMM_LEN - 1,
|
||||
+ ignore_case));
|
||||
+ }
|
||||
+ }
|
||||
+ /* Not old new COMM_LEN so we match all of it */
|
||||
+ if (got_long)
|
||||
+ {
|
||||
+ return (0 == strcmp2 (match_name, proc_cmdline, ignore_case));
|
||||
+ }
|
||||
+ return (0 == strcmp2 (match_name, proc_comm, ignore_case));
|
||||
+}
|
||||
+
|
||||
#ifdef WITH_SELINUX
|
||||
static int
|
||||
kill_all(int signal, int name_count, char **namelist, struct passwd *pwent,
|
||||
@@ -599,28 +642,10 @@ kill_all (int signal, int name_count, char **namelist, struct passwd *pwent)
|
||||
{
|
||||
if (!name_info[j].st.st_dev)
|
||||
{
|
||||
- if (length != COMM_LEN - 1 || name_info[j].name_length < COMM_LEN - 1)
|
||||
- {
|
||||
- if (ignore_case == 1)
|
||||
- {
|
||||
- if (strcasecmp (namelist[j], comm))
|
||||
- continue;
|
||||
- } else {
|
||||
- if (strcmp(namelist[j], comm))
|
||||
- continue;
|
||||
- }
|
||||
- } else {
|
||||
- if (ignore_case == 1)
|
||||
- {
|
||||
- if (got_long ? strcasecmp (namelist[j], command) :
|
||||
- strncasecmp (namelist[j], comm, COMM_LEN - 1))
|
||||
- continue;
|
||||
- } else {
|
||||
- if (got_long ? strcmp (namelist[j], command) :
|
||||
- strncmp (namelist[j], comm, COMM_LEN - 1))
|
||||
- continue;
|
||||
- }
|
||||
- }
|
||||
+ if (!match_process_name(comm, length, command, namelist[j],
|
||||
+ name_info[j].name_length, got_long))
|
||||
+ continue;
|
||||
+
|
||||
} else {
|
||||
int ok = 1;
|
||||
if (asprintf (&path, PROC_BASE "/%d/exe", pid_table[i]) < 0)
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,28 +0,0 @@
|
||||
From e2cf9f3e83e0fc0278ff39a4dfc8e3f2730eebca Mon Sep 17 00:00:00 2001
|
||||
From: Craig Small <csmall@enc.com.au>
|
||||
Date: Wed, 7 Nov 2018 20:19:38 +1100
|
||||
Subject: [PATCH 02/11] misc: Remember to add comm.h too
|
||||
|
||||
The previous commit should have included comm.h too
|
||||
---
|
||||
src/comm.h | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/src/comm.h b/src/comm.h
|
||||
index b54b998..b10eb36 100644
|
||||
--- a/src/comm.h
|
||||
+++ b/src/comm.h
|
||||
@@ -33,4 +33,10 @@
|
||||
*/
|
||||
#define COMM_LEN 64
|
||||
|
||||
+/*
|
||||
+ * Older kernels had only 16 characters, which means we may have to check this
|
||||
+ * too
|
||||
+ */
|
||||
+#define OLD_COMM_LEN 16
|
||||
+
|
||||
#endif
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,29 +0,0 @@
|
||||
From b7dc1c5eb9459f83b2355c8f061933c74b71c724 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Stapelberg <michael@stapelberg.de>
|
||||
Date: Sun, 14 Oct 2018 16:07:23 +0200
|
||||
Subject: [PATCH 03/11] Makefile.am: create src/ before src/signames.h
|
||||
|
||||
This fixes out-of-tree builds which use
|
||||
--disable-dependency-tracking. With dependency tracking enabled,
|
||||
src/.deps is created as a side-effect of how dependency tracking
|
||||
works, which is why this issue was never noticed before.
|
||||
---
|
||||
Makefile.am | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index d8c4619..8859818 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -79,7 +79,7 @@ EXTRA_DIST = src/signames.c README.md misc/git-version-gen
|
||||
|
||||
CLEANFILES = src/signames.h
|
||||
|
||||
-src/signames.h: src/signames.c Makefile
|
||||
+src/signames.h: src/signames.c Makefile src/$(am__dirstamp)
|
||||
export LC_ALL=C ; \
|
||||
@CPP@ -dM $< |\
|
||||
tr -s '\t ' ' ' | sort -n -k 3 | sed \
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,59 +0,0 @@
|
||||
From 499dfe62817f46e2132dd265dbe3603e5929279e Mon Sep 17 00:00:00 2001
|
||||
From: Jan Rybar <jrybar@redhat.com>
|
||||
Date: Tue, 19 Feb 2019 16:39:17 +0100
|
||||
Subject: [PATCH 04/11] NULLptr sanity added in scan fns to avoid useless prep
|
||||
work (stalls NFS)
|
||||
|
||||
---
|
||||
src/fuser.c | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/src/fuser.c b/src/fuser.c
|
||||
index c44cee8..b8662a3 100644
|
||||
--- a/src/fuser.c
|
||||
+++ b/src/fuser.c
|
||||
@@ -188,6 +188,9 @@ scan_procs(struct names *names_head, struct inode_list *ino_head,
|
||||
pid_t pid, my_pid;
|
||||
uid_t uid;
|
||||
|
||||
+ if ( (ino_head == NULL) && (dev_head == NULL) )
|
||||
+ return;
|
||||
+
|
||||
if ((topproc_dir = opendir("/proc")) == NULL) {
|
||||
fprintf(stderr, _("Cannot open /proc directory: %s\n"),
|
||||
strerror(errno));
|
||||
@@ -1873,6 +1876,10 @@ scan_knfsd(struct names *names_head, struct inode_list *ino_head,
|
||||
char *find_space;
|
||||
struct stat st;
|
||||
|
||||
+ if ( (ino_head == NULL) && (dev_head == NULL) )
|
||||
+ return;
|
||||
+
|
||||
+
|
||||
if ((fp = fopen(KNFSD_EXPORTS, "r")) == NULL) {
|
||||
#ifdef DEBUG
|
||||
printf("Cannot open %s\n", KNFSD_EXPORTS);
|
||||
@@ -1919,6 +1926,10 @@ scan_mounts(struct names *names_head, struct inode_list *ino_head,
|
||||
char *find_space;
|
||||
struct stat st;
|
||||
|
||||
+ if ( (ino_head == NULL) && (dev_head == NULL) )
|
||||
+ return;
|
||||
+
|
||||
+
|
||||
if ((fp = fopen(PROC_MOUNTS, "r")) == NULL) {
|
||||
fprintf(stderr, "Cannot open %s\n", PROC_MOUNTS);
|
||||
return;
|
||||
@@ -1962,6 +1973,9 @@ scan_swaps(struct names *names_head, struct inode_list *ino_head,
|
||||
char *find_space;
|
||||
struct stat st;
|
||||
|
||||
+ if ( (ino_head == NULL) && (dev_head == NULL) )
|
||||
+ return;
|
||||
+
|
||||
if ((fp = fopen(PROC_SWAPS, "r")) == NULL) {
|
||||
/*fprintf(stderr, "Cannot open %s\n", PROC_SWAPS); */
|
||||
return;
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,24 +0,0 @@
|
||||
From d055680b41a2ca9a195e450bbc41728efc8d4f86 Mon Sep 17 00:00:00 2001
|
||||
From: Craig Small <csmall@enc.com.au>
|
||||
Date: Thu, 9 May 2019 21:22:15 +1000
|
||||
Subject: [PATCH 05/11] changelog: Add note for !18
|
||||
|
||||
---
|
||||
ChangeLog | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 37962cb..1ad8967 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -1,6 +1,7 @@
|
||||
Changes in 23.4
|
||||
===============
|
||||
* killall: check also truncated 16 char comm names Debian #912748
|
||||
+ * fuser: Return early if have nulls !18
|
||||
Changes in 23.2
|
||||
===============
|
||||
* misc: Command names increased from 16 to 64 characters
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,236 +0,0 @@
|
||||
From 32432ef9bbb44ea74d4dae858786db75c082623f Mon Sep 17 00:00:00 2001
|
||||
From: akaher <akaher@vmware.com>
|
||||
Date: Tue, 16 Apr 2019 13:50:08 +0000
|
||||
Subject: [PATCH 06/11] This patch is to 'Add ARM64 support to peekfd'.
|
||||
|
||||
ARM64 copy user_pt_regs to user space instead of pt_regs.
|
||||
So in this patch, mapping the require user_pt_regs except orig_x0,
|
||||
as orig_x0 not available in user_pt_regs for SYSCALL exit.
|
||||
|
||||
For each SYSCALL, peekfd catches user_pt_regs for SYSCALL entry/exit.
|
||||
Value of orig_x0 is available in user_pt_regs->x0 of SYSCALL entry.
|
||||
|
||||
So to get orig_x0, stores user_pt_regs of SYSCALL entry,
|
||||
and then compare 'fd and addr of buffer' of SYSCALL exit
|
||||
with SYSCALL entry to retrive orig_x0 at the time of SYSCALL exit.
|
||||
|
||||
Signed-off-by: Ajay Kaher <akaher@vmware.com>
|
||||
---
|
||||
Makefile.am | 6 +++
|
||||
configure.ac | 3 ++
|
||||
src/peekfd.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++++--
|
||||
3 files changed, 118 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Makefile.am b/Makefile.am
|
||||
index 8859818..441ae94 100644
|
||||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -40,6 +40,12 @@ if WANT_PEEKFD_ARM
|
||||
bin_PROGRAMS += src/peekfd
|
||||
AM_CPPFLAGS += -DARM
|
||||
endif
|
||||
+
|
||||
+if WANT_PEEKFD_ARM64
|
||||
+ bin_PROGRAMS += src/peekfd
|
||||
+ AM_CPPFLAGS += -DARM64
|
||||
+endif
|
||||
+
|
||||
if WANT_PEEKFD_MIPS
|
||||
bin_PROGRAMS += src/peekfd
|
||||
AM_CPPFLAGS += -DMIPS
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 176a2fc..407cd97 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -131,6 +131,7 @@ AC_CHECK_MEMBERS([struct user_regs_struct.orig_eax,
|
||||
AC_CHECK_MEMBERS([struct pt_regs.orig_gpr3,
|
||||
struct pt_regs.gpr], [],[], [#include <linux/ptrace.h>])
|
||||
AC_CHECK_MEMBERS([struct pt_regs.uregs],[],[], [#include <asm/ptrace.h>])
|
||||
+AC_CHECK_MEMBERS([struct user_pt_regs.regs],[],[], [#include <asm/ptrace.h>])
|
||||
AC_CHECK_MEMBERS([struct pt_regs.regs,
|
||||
struct pt_regs.cp0_status],[],[], [#include <asm/ptrace.h>])
|
||||
AC_CHECK_MEMBERS([struct pt_regs.orig_d0,
|
||||
@@ -163,6 +164,8 @@ AM_CONDITIONAL(WANT_PEEKFD_PPC,
|
||||
test $ac_cv_member_struct_pt_regs_gpr = yes )
|
||||
AM_CONDITIONAL(WANT_PEEKFD_ARM,
|
||||
test $ac_cv_member_struct_pt_regs_uregs = yes)
|
||||
+AM_CONDITIONAL(WANT_PEEKFD_ARM64,
|
||||
+ test $ac_cv_member_struct_user_pt_regs_regs = yes)
|
||||
AM_CONDITIONAL(WANT_PEEKFD_MIPS,
|
||||
test $build_cpu = mipsel &&
|
||||
test $ac_cv_member_struct_pt_regs_regs = yes &&
|
||||
diff --git a/src/peekfd.c b/src/peekfd.c
|
||||
index 5aa990a..f41391a 100644
|
||||
--- a/src/peekfd.c
|
||||
+++ b/src/peekfd.c
|
||||
@@ -35,9 +35,17 @@
|
||||
#include <getopt.h>
|
||||
#include <ctype.h>
|
||||
#include <dirent.h>
|
||||
+#include <stdint.h>
|
||||
+#include <errno.h>
|
||||
+#include <string.h>
|
||||
|
||||
#include "i18n.h"
|
||||
|
||||
+#ifdef ARM64
|
||||
+#include <sys/uio.h>
|
||||
+#include <linux/elf.h>
|
||||
+#endif
|
||||
+
|
||||
#ifdef I386
|
||||
#define REG_ORIG_ACCUM orig_eax
|
||||
#define REG_ACCUM eax
|
||||
@@ -72,6 +80,16 @@
|
||||
#define REG_PARAM1 ARM_ORIG_r0
|
||||
#define REG_PARAM2 ARM_r1
|
||||
#define REG_PARAM3 ARM_r2
|
||||
+
|
||||
+#elif defined(ARM64)
|
||||
+ #define REG_ORIG_ACCUM regs[8]
|
||||
+ #define REG_ACCUM regs[0]
|
||||
+ #define REG_PARAM1 regs[0]
|
||||
+ #define REG_PARAM2 regs[1]
|
||||
+ #define REG_PARAM3 regs[2]
|
||||
+
|
||||
+
|
||||
+
|
||||
#elif defined(MIPS)
|
||||
#ifndef MIPSEL
|
||||
#error only little endian supported
|
||||
@@ -94,6 +112,59 @@ int num_attached_pids = 0;
|
||||
pid_t attached_pids[MAX_ATTACHED_PIDS];
|
||||
int *fds = NULL;
|
||||
|
||||
+#ifdef ARM64
|
||||
+struct user_pt_regs_node {
|
||||
+ struct user_pt_regs regs;
|
||||
+ struct user_pt_regs_node *user_pt_regs_next;
|
||||
+};
|
||||
+
|
||||
+void user_pt_regs_insert(struct user_pt_regs_node** user_pt_regs_head, struct user_pt_regs *regs)
|
||||
+{
|
||||
+ struct user_pt_regs_node* new_node =
|
||||
+ (struct user_pt_regs_node*) malloc(sizeof(struct user_pt_regs_node));
|
||||
+
|
||||
+ memcpy(&new_node->regs, regs, sizeof(struct user_pt_regs));
|
||||
+ new_node->user_pt_regs_next = (*user_pt_regs_head);
|
||||
+ (*user_pt_regs_head) = new_node;
|
||||
+}
|
||||
+
|
||||
+struct user_pt_regs * user_pt_regs_search(struct user_pt_regs_node** user_pt_regs_head, struct user_pt_regs *regs)
|
||||
+{
|
||||
+ struct user_pt_regs_node* current = *user_pt_regs_head;
|
||||
+ while (current != NULL)
|
||||
+ {
|
||||
+ if ((current->regs.REG_ORIG_ACCUM == regs->REG_ORIG_ACCUM) && (current->regs.REG_PARAM2 == regs->REG_PARAM2))
|
||||
+ return ¤t->regs;
|
||||
+ current = current->user_pt_regs_next;
|
||||
+ }
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+int user_pt_regs_delete(struct user_pt_regs_node** user_pt_regs_head, struct user_pt_regs *regs)
|
||||
+{
|
||||
+ struct user_pt_regs_node* temp = *user_pt_regs_head, *prev;
|
||||
+
|
||||
+ if (temp != NULL && (&temp->regs == regs))
|
||||
+ {
|
||||
+ *user_pt_regs_head = temp->user_pt_regs_next;
|
||||
+ free(temp);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ while (temp != NULL && (&temp->regs != regs))
|
||||
+ {
|
||||
+ prev = temp;
|
||||
+ temp = temp->user_pt_regs_next;
|
||||
+ }
|
||||
+
|
||||
+ if (temp == NULL) return -1;
|
||||
+ prev->user_pt_regs_next = temp->user_pt_regs_next;
|
||||
+ free(temp);
|
||||
+ return 0;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
void detach(int signum) {
|
||||
int i;
|
||||
for (i = 0; i < num_attached_pids; i++)
|
||||
@@ -260,6 +331,10 @@ int main(int argc, char **argv)
|
||||
unsigned char *lastbuf = NULL;
|
||||
unsigned long last_buf_size = -1;
|
||||
|
||||
+#ifdef ARM64
|
||||
+ struct user_pt_regs_node* user_pt_regs_head = NULL;
|
||||
+#endif
|
||||
+
|
||||
for(;;) {
|
||||
int status;
|
||||
pid_t pid = wait(&status);
|
||||
@@ -274,6 +349,18 @@ int main(int argc, char **argv)
|
||||
#elif defined(ARM)
|
||||
struct pt_regs regs;
|
||||
ptrace(PTRACE_GETREGS, pid, 0, ®s);
|
||||
+
|
||||
+#elif defined(ARM64)
|
||||
+ struct user_pt_regs regs, *old_regs;
|
||||
+ struct iovec io;
|
||||
+ io.iov_base = ®s;
|
||||
+ io.iov_len = sizeof(regs);
|
||||
+
|
||||
+ if (ptrace(PTRACE_GETREGSET, pid, (void*) NT_PRSTATUS, (void*) &io) == -1) {
|
||||
+ printf("ARM64: PTRACE_GETREGSET: %s\n", strerror(errno));
|
||||
+ return errno;
|
||||
+ }
|
||||
+
|
||||
#elif defined(MIPS)
|
||||
struct pt_regs regs;
|
||||
long pc = ptrace(PTRACE_PEEKUSER, pid, 64, 0);
|
||||
@@ -287,12 +374,26 @@ int main(int argc, char **argv)
|
||||
ptrace(PTRACE_GETREGS, pid, 0, ®s);
|
||||
#endif
|
||||
/*unsigned int b = ptrace(PTRACE_PEEKTEXT, pid, regs.eip, 0);*/
|
||||
- if ((follow_forks && regs.REG_ORIG_ACCUM == SYS_fork)
|
||||
- || (follow_clones && regs.REG_ORIG_ACCUM == SYS_clone)) {
|
||||
+
|
||||
+#if defined(ARM64)
|
||||
+ if (follow_forks && regs.REG_ORIG_ACCUM == SYS_clone) {
|
||||
+#else
|
||||
+ if ((follow_forks && regs.REG_ORIG_ACCUM == SYS_fork)
|
||||
+ || (follow_clones && regs.REG_ORIG_ACCUM == SYS_clone)) {
|
||||
+#endif
|
||||
if (regs.REG_ACCUM > 0)
|
||||
attach(regs.REG_ACCUM);
|
||||
}
|
||||
if ((regs.REG_ORIG_ACCUM == SYS_read || regs.REG_ORIG_ACCUM == SYS_write) && (regs.REG_PARAM3 == regs.REG_ACCUM)) {
|
||||
+#ifdef ARM64
|
||||
+ /* ARM64 doesn't expose orig_x0 to user space,
|
||||
+ so retrive orig_x0 from older user pt regs */
|
||||
+ old_regs = user_pt_regs_search(&user_pt_regs_head, ®s);
|
||||
+ if (old_regs != NULL) {
|
||||
+ regs.REG_PARAM1 = old_regs->REG_PARAM1;
|
||||
+ user_pt_regs_delete(&user_pt_regs_head, old_regs);
|
||||
+ }
|
||||
+#endif
|
||||
for (i = 0; i < numfds; i++)
|
||||
if (fds[i] == (int)regs.REG_PARAM1)
|
||||
break;
|
||||
@@ -348,7 +449,12 @@ int main(int argc, char **argv)
|
||||
fflush(stdout);
|
||||
}
|
||||
}
|
||||
-
|
||||
+#ifdef ARM64
|
||||
+ else if (regs.REG_ORIG_ACCUM == SYS_read || regs.REG_ORIG_ACCUM == SYS_write)
|
||||
+ {
|
||||
+ user_pt_regs_insert(&user_pt_regs_head,®s);
|
||||
+ }
|
||||
+#endif
|
||||
ptrace(PTRACE_SYSCALL, pid, 0, 0);
|
||||
}
|
||||
}
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,24 +0,0 @@
|
||||
From 0f35d29fc90d9eb56d0370366f075339918efa62 Mon Sep 17 00:00:00 2001
|
||||
From: Craig Small <csmall@enc.com.au>
|
||||
Date: Thu, 9 May 2019 21:28:34 +1000
|
||||
Subject: [PATCH 07/11] changelog: Add note for psmisc/psmisc!19
|
||||
|
||||
---
|
||||
ChangeLog | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 1ad8967..f7037bd 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -2,6 +2,7 @@ Changes in 23.4
|
||||
===============
|
||||
* killall: check also truncated 16 char comm names Debian #912748
|
||||
* fuser: Return early if have nulls !18
|
||||
+ * peekfd: Add support for ARM64
|
||||
Changes in 23.2
|
||||
===============
|
||||
* misc: Command names increased from 16 to 64 characters
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,25 +0,0 @@
|
||||
From d36663a3ba6fbd1a878328308135f7b77570865e Mon Sep 17 00:00:00 2001
|
||||
From: Craig Small <csmall@enc.com.au>
|
||||
Date: Thu, 9 May 2019 21:29:11 +1000
|
||||
Subject: [PATCH 08/11] changelog: put in merge request
|
||||
|
||||
---
|
||||
ChangeLog | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index f7037bd..66a8e88 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -2,7 +2,7 @@ Changes in 23.4
|
||||
===============
|
||||
* killall: check also truncated 16 char comm names Debian #912748
|
||||
* fuser: Return early if have nulls !18
|
||||
- * peekfd: Add support for ARM64
|
||||
+ * peekfd: Add support for ARM64 !19
|
||||
Changes in 23.2
|
||||
===============
|
||||
* misc: Command names increased from 16 to 64 characters
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,25 +0,0 @@
|
||||
From 8a9d81dbbf3fc8159920335777d862d543995499 Mon Sep 17 00:00:00 2001
|
||||
From: Vladislav Ivanishin <vlad@ispras.ru>
|
||||
Date: Thu, 6 Jun 2019 19:28:20 +0300
|
||||
Subject: [PATCH 09/11] pstree: initialize pid_set
|
||||
|
||||
---
|
||||
src/pstree.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/pstree.c b/src/pstree.c
|
||||
index aaf3df7..e4fed4d 100644
|
||||
--- a/src/pstree.c
|
||||
+++ b/src/pstree.c
|
||||
@@ -1148,7 +1148,7 @@ int main(int argc, char **argv)
|
||||
pid_t pid, highlight;
|
||||
char termcap_area[1024];
|
||||
char *termname, *endptr;
|
||||
- int c, pid_set;
|
||||
+ int c, pid_set = 0;
|
||||
enum ns_type nsid = NUM_NS;
|
||||
|
||||
struct option options[] = {
|
||||
--
|
||||
2.20.1
|
||||
|
@ -1,89 +0,0 @@
|
||||
From 0a1cd72ba107b0b06b60af94853589fb5e0e7b1e Mon Sep 17 00:00:00 2001
|
||||
From: Craig Small <csmall@enc.com.au>
|
||||
Date: Mon, 24 Jun 2019 22:16:54 +1000
|
||||
Subject: [PATCH 10/11] fuser: use larger inode size
|
||||
|
||||
Scanned inodes now are unsigned long long.
|
||||
Thanks to... anon!
|
||||
|
||||
References:
|
||||
psmisc/psmisc#16
|
||||
---
|
||||
ChangeLog | 1 +
|
||||
src/fuser.c | 13 +++++++------
|
||||
2 files changed, 8 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/ChangeLog b/ChangeLog
|
||||
index 66a8e88..77b842f 100644
|
||||
--- a/ChangeLog
|
||||
+++ b/ChangeLog
|
||||
@@ -3,6 +3,7 @@ Changes in 23.4
|
||||
* killall: check also truncated 16 char comm names Debian #912748
|
||||
* fuser: Return early if have nulls !18
|
||||
* peekfd: Add support for ARM64 !19
|
||||
+ * fuser: Use larger inode sizes #16
|
||||
Changes in 23.2
|
||||
===============
|
||||
* misc: Command names increased from 16 to 64 characters
|
||||
diff --git a/src/fuser.c b/src/fuser.c
|
||||
index b8662a3..db00c78 100644
|
||||
--- a/src/fuser.c
|
||||
+++ b/src/fuser.c
|
||||
@@ -703,7 +703,8 @@ find_net_sockets(struct inode_list **ino_list,
|
||||
FILE *fp;
|
||||
char pathname[200], line[BUFSIZ];
|
||||
unsigned long loc_port, rmt_port;
|
||||
- unsigned long rmt_addr, scanned_inode;
|
||||
+ unsigned long rmt_addr;
|
||||
+ unsigned long long scanned_inode;
|
||||
ino_t inode;
|
||||
struct ip_connections *conn_tmp;
|
||||
|
||||
@@ -718,7 +719,7 @@ find_net_sockets(struct inode_list **ino_list,
|
||||
while (fgets(line, BUFSIZ, fp) != NULL) {
|
||||
if (sscanf
|
||||
(line,
|
||||
- "%*u: %*x:%lx %08lx:%lx %*x %*x:%*x %*x:%*x %*x %*d %*d %lu",
|
||||
+ "%*u: %*x:%lx %08lx:%lx %*x %*x:%*x %*x:%*x %*x %*d %*d %llu",
|
||||
&loc_port, &rmt_addr, &rmt_port, &scanned_inode) != 4)
|
||||
continue;
|
||||
#ifdef DEBUG
|
||||
@@ -769,7 +770,7 @@ find_net6_sockets(struct inode_list **ino_list,
|
||||
unsigned int tmp_addr[4];
|
||||
char rmt_addr6str[INET6_ADDRSTRLEN];
|
||||
struct ip6_connections *conn_tmp;
|
||||
- unsigned long scanned_inode;
|
||||
+ unsigned long long scanned_inode;
|
||||
ino_t inode;
|
||||
|
||||
if (snprintf(pathname, 200, "/proc/net/%s6", protocol) < 0)
|
||||
@@ -785,7 +786,7 @@ find_net6_sockets(struct inode_list **ino_list,
|
||||
while (fgets(line, BUFSIZ, fp) != NULL) {
|
||||
if (sscanf
|
||||
(line,
|
||||
- "%*u: %*x:%lx %08x%08x%08x%08x:%lx %*x %*x:%*x %*x:%*x %*x %*d %*d %lu",
|
||||
+ "%*u: %*x:%lx %08x%08x%08x%08x:%lx %*x %*x:%*x %*x:%*x %*x %*d %*d %llu",
|
||||
&loc_port, &(tmp_addr[0]), &(tmp_addr[1]), &(tmp_addr[2]),
|
||||
&(tmp_addr[3]), &rmt_port, &scanned_inode) != 7)
|
||||
continue;
|
||||
@@ -1702,7 +1703,7 @@ void fill_unix_cache(struct unixsocket_list **unixsocket_head)
|
||||
{
|
||||
FILE *fp;
|
||||
char line[BUFSIZ];
|
||||
- int scanned_inode;
|
||||
+ unsigned long long scanned_inode;
|
||||
struct stat st;
|
||||
struct unixsocket_list *newsocket;
|
||||
|
||||
@@ -1714,7 +1715,7 @@ void fill_unix_cache(struct unixsocket_list **unixsocket_head)
|
||||
while (fgets(line, BUFSIZ, fp) != NULL) {
|
||||
char *path;
|
||||
char *scanned_path = NULL;
|
||||
- if (sscanf(line, "%*x: %*x %*x %*x %*x %*d %d %ms",
|
||||
+ if (sscanf(line, "%*x: %*x %*x %*x %*x %*d %llu %ms",
|
||||
&scanned_inode, &scanned_path) != 2) {
|
||||
if (scanned_path)
|
||||
free(scanned_path);
|
||||
--
|
||||
2.20.1
|
||||
|
18
psmisc.spec
18
psmisc.spec
@ -1,8 +1,8 @@
|
||||
|
||||
Summary: Utilities for managing processes on your system
|
||||
Name: psmisc
|
||||
Version: 23.2
|
||||
Release: 3%{?dist}
|
||||
Version: 23.3
|
||||
Release: 1%{?dist}
|
||||
License: GPLv2+
|
||||
URL: https://gitlab.com/psmisc/psmisc
|
||||
|
||||
@ -10,17 +10,6 @@ Source: https://sourceforge.net/projects/%{name}/files/%{name}/%{name}-%{version
|
||||
|
||||
#The following has been reworked by upstream in a different way ... we'll see
|
||||
#Patch1: psmisc-22.13-fuser-silent.patch
|
||||
Patch1: 0001-killall-match-on-16-character-commlen-too.patch
|
||||
Patch2: 0002-misc-Remember-to-add-comm.h-too.patch
|
||||
Patch3: 0003-Makefile.am-create-src-before-src-signames.h.patch
|
||||
Patch4: 0004-NULLptr-sanity-added-in-scan-fns-to-avoid-useless-pr.patch
|
||||
Patch5: 0005-changelog-Add-note-for-18.patch
|
||||
Patch6: 0006-This-patch-is-to-Add-ARM64-support-to-peekfd.patch
|
||||
Patch7: 0007-changelog-Add-note-for-psmisc-psmisc-19.patch
|
||||
Patch8: 0008-changelog-put-in-merge-request.patch
|
||||
Patch9: 0009-pstree-initialize-pid_set.patch
|
||||
Patch10: 0010-fuser-use-larger-inode-size.patch
|
||||
|
||||
|
||||
BuildRequires: libselinux-devel
|
||||
BuildRequires: gettext
|
||||
@ -79,6 +68,9 @@ mv $RPM_BUILD_ROOT%{_bindir}/fuser $RPM_BUILD_ROOT%{_sbindir}
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed Nov 27 2019 Jan Rybar <jrybar@redhat.com> - 23.3-1
|
||||
- Rebase to v23.3
|
||||
|
||||
* Fri Sep 06 2019 Jan Rybar <jrybar@redhat.com> - 23.2-3
|
||||
- peekfd re-restricted for s390x
|
||||
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (psmisc-23.2.tar.xz) = a8d4e91443b66de1c4418fd74b5eb6dd42caddc937e75dfb35a4e49b9b35236db779e2a480c1693bcc7feaf0957b1028850134040685e88e6ff7ffcb572e20e8
|
||||
SHA512 (psmisc-23.3.tar.xz) = 791ffef78d87b092d653da98710b338017466a9e1e1935968b9f0194ccef8da941317aa0c39d821d46b20d95d6539ccf78e5ebb71ad1032ae62337a397180d58
|
||||
|
Loading…
Reference in New Issue
Block a user