bsc#1098697
OBS-URL: https://build.opensuse.org/package/show/Base:System/psmisc?expand=0&rev=102
This commit is contained in:
parent
be9db4d850
commit
cfbf82d055
@ -1,4 +1,4 @@
|
|||||||
From d7487838d0c79bd007e63e9ba9f7933cec40e3c9 Mon Sep 17 00:00:00 2001
|
From 28805c3dda0ce9c78f046974454c0bb8dfee615b Mon Sep 17 00:00:00 2001
|
||||||
From: Werner Fink <werner@suse.de>
|
From: Werner Fink <werner@suse.de>
|
||||||
Date: Thu, 29 Jun 2017 15:18:28 +0200
|
Date: Thu, 29 Jun 2017 15:18:28 +0200
|
||||||
Subject: [PATCH] Use mountinfo to be able to use the mount identity
|
Subject: [PATCH] Use mountinfo to be able to use the mount identity
|
||||||
@ -14,11 +14,11 @@ get the real mount ID for each file
|
|||||||
Signed-off-by: Werner Fink <werner@suse.de>
|
Signed-off-by: Werner Fink <werner@suse.de>
|
||||||
---
|
---
|
||||||
configure.ac | 18 +-
|
configure.ac | 18 +-
|
||||||
src/fuser.c | 528 +++++++++++++++++++++++++++----------
|
src/fuser.c | 540 +++++++++++++++++++++--------
|
||||||
src/fuser.h | 19 +-
|
src/fuser.h | 19 +-
|
||||||
testsuite/Makefile.am | 3 +-
|
testsuite/Makefile.am | 3 +-
|
||||||
testsuite/killall.test/killall.exp | 4 +
|
testsuite/killall.test/killall.exp | 4 +
|
||||||
5 files changed, 424 insertions(+), 148 deletions(-)
|
5 files changed, 436 insertions(+), 148 deletions(-)
|
||||||
|
|
||||||
diff --git configure.ac configure.ac
|
diff --git configure.ac configure.ac
|
||||||
index 176a2fc..d8d3366 100644
|
index 176a2fc..d8d3366 100644
|
||||||
@ -64,7 +64,7 @@ index 176a2fc..d8d3366 100644
|
|||||||
dnl Checks for typedefs, structures, and compiler characteristics.
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
||||||
AC_C_CONST
|
AC_C_CONST
|
||||||
diff --git src/fuser.c src/fuser.c
|
diff --git src/fuser.c src/fuser.c
|
||||||
index 31ef30c..a204f08 100644
|
index 31ef30c..e5337cd 100644
|
||||||
--- src/fuser.c
|
--- src/fuser.c
|
||||||
+++ src/fuser.c
|
+++ src/fuser.c
|
||||||
@@ -32,6 +32,10 @@
|
@@ -32,6 +32,10 @@
|
||||||
@ -227,11 +227,11 @@ index 31ef30c..a204f08 100644
|
|||||||
(unsigned long)this_name->st.st_dev,
|
(unsigned long)this_name->st.st_dev,
|
||||||
- (unsigned long)this_name->st.st_ino);
|
- (unsigned long)this_name->st.st_ino);
|
||||||
+ (unsigned long)this_name->st.st_ino,
|
+ (unsigned long)this_name->st.st_ino,
|
||||||
+ mountinfo.id, mountinfo.isnfs ? "yes" : "no");
|
+ mountinfo->id, mountinfo->isnfs ? "yes" : "no");
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
add_inode(ino_list, this_name, this_name->st.st_dev,
|
add_inode(ino_list, this_name, this_name->st.st_dev,
|
||||||
this_name->st.st_ino);
|
this_name->st.st_ino);
|
||||||
@@ -501,11 +515,39 @@ parse_mounts(struct names *this_name, struct device_list **dev_list,
|
@@ -501,11 +515,51 @@ parse_mounts(struct names *this_name, struct device_list **dev_list,
|
||||||
const opt_type opts)
|
const opt_type opts)
|
||||||
{
|
{
|
||||||
dev_t match_device;
|
dev_t match_device;
|
||||||
@ -247,7 +247,17 @@ index 31ef30c..a204f08 100644
|
|||||||
+ count = 0;
|
+ count = 0;
|
||||||
+ list_for_each(ptr, &mntinfo) {
|
+ list_for_each(ptr, &mntinfo) {
|
||||||
+ mntinfo_t *mnt = list_entry(ptr, mntinfo_t);
|
+ mntinfo_t *mnt = list_entry(ptr, mntinfo_t);
|
||||||
+ if (match_device != mnt->dev || this_name->mnt_id != mnt->id)
|
+ if (match_device != mnt->dev)
|
||||||
|
+ continue;
|
||||||
|
+ if (S_ISBLK(this_name->st.st_mode)) {
|
||||||
|
+ /* Skip mount IDs check if a block device
|
||||||
|
+ * was specified */
|
||||||
|
+ this_name->mnt_id = mnt->id;
|
||||||
|
+ add_device(dev_list, this_name, match_device);
|
||||||
|
+ count++;
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+ if (this_name->mnt_id != mnt->id)
|
||||||
+ continue;
|
+ continue;
|
||||||
+ if (!mountinfo)
|
+ if (!mountinfo)
|
||||||
+ mountinfo = mnt;
|
+ mountinfo = mnt;
|
||||||
@ -264,14 +274,16 @@ index 31ef30c..a204f08 100644
|
|||||||
+ errno = ENOTUNIQ;
|
+ errno = ENOTUNIQ;
|
||||||
+ fprintf(stderr,
|
+ fprintf(stderr,
|
||||||
+ _("The device %u:%u is not unique. Please change!\n"),
|
+ _("The device %u:%u is not unique. Please change!\n"),
|
||||||
+ major(mountinfo->dev), minor(mountinfo->dev));
|
+ major(match_device), minor(match_device));
|
||||||
+ /* return -1 */
|
+ /* return -1 */
|
||||||
+ }
|
+ }
|
||||||
|
+ if (S_ISBLK(this_name->st.st_mode))
|
||||||
|
+ return 0;
|
||||||
+ this_name->mnt_id = mountinfo->id;
|
+ this_name->mnt_id = mountinfo->id;
|
||||||
add_device(dev_list, this_name, match_device);
|
add_device(dev_list, this_name, match_device);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -620,7 +662,7 @@ int parse_inet(struct names *this_name, struct ip_connections **ip_list)
|
@@ -620,7 +674,7 @@ int parse_inet(struct names *this_name, struct ip_connections **ip_list)
|
||||||
fprintf(stderr, _("Unknown local port AF %d\n"),
|
fprintf(stderr, _("Unknown local port AF %d\n"),
|
||||||
res->ai_family);
|
res->ai_family);
|
||||||
freeaddrinfo(res);
|
freeaddrinfo(res);
|
||||||
@ -280,7 +292,7 @@ index 31ef30c..a204f08 100644
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
freeaddrinfo(res);
|
freeaddrinfo(res);
|
||||||
@@ -683,10 +725,12 @@ int parse_inet(struct names *this_name, struct ip_connections **ip_list)
|
@@ -683,10 +737,12 @@ int parse_inet(struct names *this_name, struct ip_connections **ip_list)
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -296,7 +308,7 @@ index 31ef30c..a204f08 100644
|
|||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@@ -1161,16 +1205,11 @@ int main(int argc, char *argv[])
|
@@ -1161,16 +1217,11 @@ int main(int argc, char *argv[])
|
||||||
skip_argv = 1;
|
skip_argv = 1;
|
||||||
//while(option != '\0') option++;
|
//while(option != '\0') option++;
|
||||||
if (strcmp(argv[argc_cnt], "tcp") == 0)
|
if (strcmp(argv[argc_cnt], "tcp") == 0)
|
||||||
@ -318,7 +330,7 @@ index 31ef30c..a204f08 100644
|
|||||||
else
|
else
|
||||||
usage(_
|
usage(_
|
||||||
("Invalid namespace name"));
|
("Invalid namespace name"));
|
||||||
@@ -1210,7 +1249,7 @@ int main(int argc, char *argv[])
|
@@ -1210,7 +1261,7 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(WITH_MOUNTINFO_LIST)
|
#if defined(WITH_MOUNTINFO_LIST)
|
||||||
@ -327,7 +339,7 @@ index 31ef30c..a204f08 100644
|
|||||||
thestat = mntstat;
|
thestat = mntstat;
|
||||||
#endif
|
#endif
|
||||||
/* an option */
|
/* an option */
|
||||||
@@ -1524,7 +1563,7 @@ print_matches(struct names *names_head, const opt_type opts,
|
@@ -1524,7 +1575,7 @@ print_matches(struct names *names_head, const opt_type opts,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,7 +348,7 @@ index 31ef30c..a204f08 100644
|
|||||||
{
|
{
|
||||||
char pathname[256];
|
char pathname[256];
|
||||||
struct stat *st;
|
struct stat *st;
|
||||||
@@ -1536,6 +1575,15 @@ static struct stat *get_pidstat(const pid_t pid, const char *filename)
|
@@ -1536,6 +1587,15 @@ static struct stat *get_pidstat(const pid_t pid, const char *filename)
|
||||||
free(st);
|
free(st);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -352,7 +364,7 @@ index 31ef30c..a204f08 100644
|
|||||||
return st;
|
return st;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1550,18 +1598,19 @@ check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head,
|
@@ -1550,18 +1610,19 @@ check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head,
|
||||||
struct inode_list *ino_tmp;
|
struct inode_list *ino_tmp;
|
||||||
struct device_list *dev_tmp;
|
struct device_list *dev_tmp;
|
||||||
struct unixsocket_list *sock_tmp;
|
struct unixsocket_list *sock_tmp;
|
||||||
@ -377,7 +389,7 @@ index 31ef30c..a204f08 100644
|
|||||||
pid, dirname, direntry->d_name);
|
pid, dirname, direntry->d_name);
|
||||||
|
|
||||||
if (timeout(thestat, filepath, &st, 5) != 0) {
|
if (timeout(thestat, filepath, &st, 5) != 0) {
|
||||||
@@ -1586,9 +1635,12 @@ check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head,
|
@@ -1586,9 +1647,12 @@ check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head,
|
||||||
dev_tmp = dev_tmp->next) {
|
dev_tmp = dev_tmp->next) {
|
||||||
if (thedev != dev_tmp->device)
|
if (thedev != dev_tmp->device)
|
||||||
continue;
|
continue;
|
||||||
@ -392,7 +404,7 @@ index 31ef30c..a204f08 100644
|
|||||||
add_matched_proc(dev_tmp->name,
|
add_matched_proc(dev_tmp->name,
|
||||||
pid, uid,
|
pid, uid,
|
||||||
ACCESS_FILEWR |
|
ACCESS_FILEWR |
|
||||||
@@ -1610,9 +1662,10 @@ check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head,
|
@@ -1610,9 +1674,10 @@ check_dir(const pid_t pid, const char *dirname, struct device_list *dev_head,
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (st.st_ino == ino_tmp->inode) {
|
if (st.st_ino == ino_tmp->inode) {
|
||||||
@ -405,7 +417,7 @@ index 31ef30c..a204f08 100644
|
|||||||
add_matched_proc(ino_tmp->name,
|
add_matched_proc(ino_tmp->name,
|
||||||
pid, uid,
|
pid, uid,
|
||||||
ACCESS_FILEWR |
|
ACCESS_FILEWR |
|
||||||
@@ -1641,18 +1694,30 @@ check_map(const pid_t pid, const char *filename,
|
@@ -1641,18 +1706,30 @@ check_map(const pid_t pid, const char *filename,
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
unsigned long long tmp_inode;
|
unsigned long long tmp_inode;
|
||||||
unsigned int tmp_maj, tmp_min;
|
unsigned int tmp_maj, tmp_min;
|
||||||
@ -441,7 +453,7 @@ index 31ef30c..a204f08 100644
|
|||||||
add_matched_proc(dev_tmp->name, pid,
|
add_matched_proc(dev_tmp->name, pid,
|
||||||
uid, access);
|
uid, access);
|
||||||
for (ino_tmp = ino_head; ino_tmp != NULL;
|
for (ino_tmp = ino_head; ino_tmp != NULL;
|
||||||
@@ -1661,7 +1726,8 @@ check_map(const pid_t pid, const char *filename,
|
@@ -1661,7 +1738,8 @@ check_map(const pid_t pid, const char *filename,
|
||||||
&& ino_tmp->inode == tmp_inode)
|
&& ino_tmp->inode == tmp_inode)
|
||||||
add_matched_proc(ino_tmp->name, pid,
|
add_matched_proc(ino_tmp->name, pid,
|
||||||
uid, access);
|
uid, access);
|
||||||
@ -451,7 +463,7 @@ index 31ef30c..a204f08 100644
|
|||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
@@ -1682,6 +1748,7 @@ static uid_t getpiduid(const pid_t pid)
|
@@ -1682,6 +1760,7 @@ static uid_t getpiduid(const pid_t pid)
|
||||||
* fill_unix_cache : Create a list of Unix sockets
|
* fill_unix_cache : Create a list of Unix sockets
|
||||||
* This list is used later for matching purposes
|
* This list is used later for matching purposes
|
||||||
*/
|
*/
|
||||||
@ -459,7 +471,7 @@ index 31ef30c..a204f08 100644
|
|||||||
void fill_unix_cache(struct unixsocket_list **unixsocket_head)
|
void fill_unix_cache(struct unixsocket_list **unixsocket_head)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
@@ -1698,6 +1765,8 @@ void fill_unix_cache(struct unixsocket_list **unixsocket_head)
|
@@ -1698,6 +1777,8 @@ void fill_unix_cache(struct unixsocket_list **unixsocket_head)
|
||||||
while (fgets(line, BUFSIZ, fp) != NULL) {
|
while (fgets(line, BUFSIZ, fp) != NULL) {
|
||||||
char *path;
|
char *path;
|
||||||
char *scanned_path = NULL;
|
char *scanned_path = NULL;
|
||||||
@ -468,7 +480,7 @@ index 31ef30c..a204f08 100644
|
|||||||
if (sscanf(line, "%*x: %*x %*x %*x %*x %*d %d %ms",
|
if (sscanf(line, "%*x: %*x %*x %*x %*x %*d %d %ms",
|
||||||
&scanned_inode, &scanned_path) != 2) {
|
&scanned_inode, &scanned_path) != 2) {
|
||||||
if (scanned_path)
|
if (scanned_path)
|
||||||
@@ -1713,6 +1782,8 @@ void fill_unix_cache(struct unixsocket_list **unixsocket_head)
|
@@ -1713,6 +1794,8 @@ void fill_unix_cache(struct unixsocket_list **unixsocket_head)
|
||||||
free(path);
|
free(path);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -477,7 +489,7 @@ index 31ef30c..a204f08 100644
|
|||||||
if ((newsocket = (struct unixsocket_list *)
|
if ((newsocket = (struct unixsocket_list *)
|
||||||
malloc(sizeof(struct unixsocket_list))) == NULL) {
|
malloc(sizeof(struct unixsocket_list))) == NULL) {
|
||||||
free(path);
|
free(path);
|
||||||
@@ -1721,6 +1792,7 @@ void fill_unix_cache(struct unixsocket_list **unixsocket_head)
|
@@ -1721,6 +1804,7 @@ void fill_unix_cache(struct unixsocket_list **unixsocket_head)
|
||||||
newsocket->sun_name = strdup(scanned_path);
|
newsocket->sun_name = strdup(scanned_path);
|
||||||
newsocket->inode = st.st_ino;
|
newsocket->inode = st.st_ino;
|
||||||
newsocket->dev = st.st_dev;
|
newsocket->dev = st.st_dev;
|
||||||
@ -485,7 +497,7 @@ index 31ef30c..a204f08 100644
|
|||||||
newsocket->net_inode = scanned_inode;
|
newsocket->net_inode = scanned_inode;
|
||||||
newsocket->next = *unixsocket_head;
|
newsocket->next = *unixsocket_head;
|
||||||
*unixsocket_head = newsocket;
|
*unixsocket_head = newsocket;
|
||||||
@@ -1733,6 +1805,7 @@ void fill_unix_cache(struct unixsocket_list **unixsocket_head)
|
@@ -1733,6 +1817,7 @@ void fill_unix_cache(struct unixsocket_list **unixsocket_head)
|
||||||
/*
|
/*
|
||||||
* Free up the list of Unix sockets
|
* Free up the list of Unix sockets
|
||||||
*/
|
*/
|
||||||
@ -493,7 +505,7 @@ index 31ef30c..a204f08 100644
|
|||||||
void clear_unix_cache(struct unixsocket_list **unixsocket_head)
|
void clear_unix_cache(struct unixsocket_list **unixsocket_head)
|
||||||
{
|
{
|
||||||
while(*unixsocket_head != NULL) {
|
while(*unixsocket_head != NULL) {
|
||||||
@@ -1900,30 +1973,22 @@ scan_mounts(struct names *names_head, struct inode_list *ino_head,
|
@@ -1900,30 +1985,22 @@ scan_mounts(struct names *names_head, struct inode_list *ino_head,
|
||||||
{
|
{
|
||||||
struct device_list *dev_tmp;
|
struct device_list *dev_tmp;
|
||||||
struct inode_list *ino_tmp;
|
struct inode_list *ino_tmp;
|
||||||
@ -534,7 +546,7 @@ index 31ef30c..a204f08 100644
|
|||||||
add_special_proc(dev_tmp->name, PTYPE_MOUNT, 0,
|
add_special_proc(dev_tmp->name, PTYPE_MOUNT, 0,
|
||||||
find_mountp);
|
find_mountp);
|
||||||
}
|
}
|
||||||
@@ -1935,7 +2000,6 @@ scan_mounts(struct names *names_head, struct inode_list *ino_head,
|
@@ -1935,7 +2012,6 @@ scan_mounts(struct names *names_head, struct inode_list *ino_head,
|
||||||
find_mountp);
|
find_mountp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -542,7 +554,7 @@ index 31ef30c..a204f08 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1985,16 +2049,42 @@ scan_swaps(struct names *names_head, struct inode_list *ino_head,
|
@@ -1985,16 +2061,42 @@ scan_swaps(struct names *names_head, struct inode_list *ino_head,
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -588,7 +600,7 @@ index 31ef30c..a204f08 100644
|
|||||||
{
|
{
|
||||||
list_t *ptr, *tmp;
|
list_t *ptr, *tmp;
|
||||||
|
|
||||||
@@ -2005,72 +2095,232 @@ static void clear_mntinfo(void)
|
@@ -2005,72 +2107,232 @@ static void clear_mntinfo(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -668,7 +680,12 @@ index 31ef30c..a204f08 100644
|
|||||||
+ char line[BUFSIZ];
|
+ char line[BUFSIZ];
|
||||||
+ FILE *fp;
|
+ FILE *fp;
|
||||||
+ int mnt_id = 0, flags = 0;
|
+ int mnt_id = 0, flags = 0;
|
||||||
+
|
|
||||||
|
- /* Sort mount points accordingly to the reverse mount order */
|
||||||
|
- initial(&sort);
|
||||||
|
- for (mid = 1; mid <= max; mid++) {
|
||||||
|
- list_t *ptr, *tmp;
|
||||||
|
- list_for_each_safe(ptr, tmp, &mntinfo) {
|
||||||
+ snprintf(pathname, 256, "/proc/%d/fdinfo/%s", pid, fd);
|
+ snprintf(pathname, 256, "/proc/%d/fdinfo/%s", pid, fd);
|
||||||
+ if ((fp = fopen(pathname, "r")) == NULL)
|
+ if ((fp = fopen(pathname, "r")) == NULL)
|
||||||
+ goto out;
|
+ goto out;
|
||||||
@ -747,12 +764,7 @@ index 31ef30c..a204f08 100644
|
|||||||
+ int ret = -1;
|
+ int ret = -1;
|
||||||
+
|
+
|
||||||
+ *mountinfo = NULL;
|
+ *mountinfo = NULL;
|
||||||
|
+
|
||||||
- /* Sort mount points accordingly to the reverse mount order */
|
|
||||||
- initial(&sort);
|
|
||||||
- for (mid = 1; mid <= max; mid++) {
|
|
||||||
- list_t *ptr, *tmp;
|
|
||||||
- list_for_each_safe(ptr, tmp, &mntinfo) {
|
|
||||||
+#if defined(HAS_NAME_TO_HANDLE_AT)
|
+#if defined(HAS_NAME_TO_HANDLE_AT)
|
||||||
+ if (mnt_id >= 0) {
|
+ if (mnt_id >= 0) {
|
||||||
+ list_t *ptr;
|
+ list_t *ptr;
|
||||||
@ -834,11 +846,11 @@ index 31ef30c..a204f08 100644
|
|||||||
- if (mid != mnt->parid)
|
- if (mid != mnt->parid)
|
||||||
+
|
+
|
||||||
+ if (nlen != mnt->nlen)
|
+ if (nlen != mnt->nlen)
|
||||||
continue;
|
+ continue;
|
||||||
- move_head(ptr, &sort);
|
|
||||||
+
|
+
|
||||||
+ if (strcmp(use, mnt->mpoint))
|
+ if (strcmp(use, mnt->mpoint))
|
||||||
+ continue;
|
continue;
|
||||||
|
- move_head(ptr, &sort);
|
||||||
+
|
+
|
||||||
+ ret = 0;
|
+ ret = 0;
|
||||||
+ errno = 0;
|
+ errno = 0;
|
||||||
@ -865,7 +877,7 @@ index 31ef30c..a204f08 100644
|
|||||||
/*
|
/*
|
||||||
* Determine device of links below /proc/
|
* Determine device of links below /proc/
|
||||||
*/
|
*/
|
||||||
@@ -2078,8 +2328,7 @@ static int mntstat(const char *path, struct stat *buf)
|
@@ -2078,8 +2340,7 @@ static int mntstat(const char *path, struct stat *buf)
|
||||||
{
|
{
|
||||||
char name[PATH_MAX + 1];
|
char name[PATH_MAX + 1];
|
||||||
const char *use;
|
const char *use;
|
||||||
@ -875,7 +887,7 @@ index 31ef30c..a204f08 100644
|
|||||||
|
|
||||||
if ((use = realpath(path, name)) == NULL || *use != '/')
|
if ((use = realpath(path, name)) == NULL || *use != '/')
|
||||||
{
|
{
|
||||||
@@ -2091,27 +2340,26 @@ static int mntstat(const char *path, struct stat *buf)
|
@@ -2091,27 +2352,26 @@ static int mntstat(const char *path, struct stat *buf)
|
||||||
errno = 0;
|
errno = 0;
|
||||||
return stat(path, buf);
|
return stat(path, buf);
|
||||||
}
|
}
|
||||||
@ -1030,5 +1042,5 @@ index b244893..1a10a1a 100644
|
|||||||
set test "killall list signals"
|
set test "killall list signals"
|
||||||
spawn $killall -l
|
spawn $killall -l
|
||||||
--
|
--
|
||||||
2.12.3
|
2.17.1
|
||||||
|
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jun 22 16:33:00 UTC 2018 - werner@suse.de
|
||||||
|
|
||||||
|
- Modify patch 0001-Use-mountinfo-to-be-able-to-use-the-mount-identity.patch
|
||||||
|
to make fuser option -m <block_device> work even with mountinfo
|
||||||
|
(bsc#1098697)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu May 17 10:32:53 UTC 2018 - werner@suse.de
|
Thu May 17 10:32:53 UTC 2018 - werner@suse.de
|
||||||
|
|
||||||
|
@ -73,9 +73,10 @@ grep -h src/ po/*.po|\
|
|||||||
sort -t : -k1,1 -u|\
|
sort -t : -k1,1 -u|\
|
||||||
sed -r 's/:[0-9]+$//' > po/POTFILES.in
|
sed -r 's/:[0-9]+$//' > po/POTFILES.in
|
||||||
autoreconf -fi
|
autoreconf -fi
|
||||||
CFLAGS="-D_GNU_SOURCE -D_DEFAULT_SOURCE ${RPM_OPT_FLAGS} -pipe"
|
CFLAGS="-D_GNU_SOURCE -D_DEFAULT_SOURCE ${RPM_OPT_FLAGS} -pipe -fPIE"
|
||||||
CXXFLAGS="$CFLAGS"
|
CXXFLAGS="$CFLAGS"
|
||||||
export CFLAGS CXXFLAGS
|
LDFLAGS=-pie
|
||||||
|
export CFLAGS CXXFLAGS LDFLAGS
|
||||||
%configure --disable-rpath \
|
%configure --disable-rpath \
|
||||||
--with-gnu-ld \
|
--with-gnu-ld \
|
||||||
--enable-selinux \
|
--enable-selinux \
|
||||||
|
Loading…
Reference in New Issue
Block a user