Rebase to v23.3

This commit is contained in:
Jan Rybar 2019-11-27 18:52:19 +01:00
parent 39e7a56913
commit 4897c5eb02
13 changed files with 7 additions and 675 deletions

1
.gitignore vendored
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 &current->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, &regs);
+
+#elif defined(ARM64)
+ struct user_pt_regs regs, *old_regs;
+ struct iovec io;
+ io.iov_base = &regs;
+ 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, &regs);
#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, &regs);
+ 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,&regs);
+ }
+#endif
ptrace(PTRACE_SYSCALL, pid, 0, 0);
}
}
--
2.20.1

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1 +1 @@
SHA512 (psmisc-23.2.tar.xz) = a8d4e91443b66de1c4418fd74b5eb6dd42caddc937e75dfb35a4e49b9b35236db779e2a480c1693bcc7feaf0957b1028850134040685e88e6ff7ffcb572e20e8
SHA512 (psmisc-23.3.tar.xz) = 791ffef78d87b092d653da98710b338017466a9e1e1935968b9f0194ccef8da941317aa0c39d821d46b20d95d6539ccf78e5ebb71ad1032ae62337a397180d58