diff --git a/.gitignore b/.gitignore index 3e7f767..2402478 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ /util-linux-2.20.1.tar.bz2 /util-linux-2.21-rc2.tar.xz /util-linux-2.21.tar.xz +/util-linux-2.21.1.tar.xz +/util-linux-2.21.2.tar.xz diff --git a/hexdump-do-not-segfault-when-iterating-over-an-empty.patch b/hexdump-do-not-segfault-when-iterating-over-an-empty.patch new file mode 100644 index 0000000..9aebed5 --- /dev/null +++ b/hexdump-do-not-segfault-when-iterating-over-an-empty.patch @@ -0,0 +1,30 @@ +diff --git a/text-utils/parse.c b/text-utils/parse.c +index 5f1e2bd..bd96961 100644 +--- a/text-utils/parse.c ++++ b/text-utils/parse.c +@@ -421,13 +421,15 @@ isint2: switch(fu->bcnt) { + !(fu->flags&F_SETREP) && fu->bcnt) + fu->reps += (blocksize - fs->bcnt) / fu->bcnt; + if (fu->reps > 1) { +- for (pr = fu->nextpr;; pr = pr->nextpr) +- if (!pr->nextpr) +- break; +- for (p1 = pr->fmt, p2 = NULL; *p1; ++p1) +- p2 = isspace((unsigned char)*p1) ? p1 : NULL; +- if (p2) +- pr->nospace = p2; ++ if (fu->nextpr) { ++ for (pr = fu->nextpr; ; pr = pr->nextpr) ++ if (!pr->nextpr) ++ break; ++ for (p1 = pr->fmt, p2 = NULL; *p1; ++p1) ++ p2 = isspace((unsigned char)*p1) ? p1 : NULL; ++ if (p2) ++ pr->nospace = p2; ++ } + } + } + } +-- +1.8.1 + diff --git a/mount-add-verbose-messages.patch b/mount-add-verbose-messages.patch new file mode 100644 index 0000000..8cd07f3 --- /dev/null +++ b/mount-add-verbose-messages.patch @@ -0,0 +1,81 @@ +diff -up util-linux-2.21.2/sys-utils/mount.c.orig util-linux-2.21.2/sys-utils/mount.c +--- util-linux-2.21.2/sys-utils/mount.c.orig 2013-02-03 17:33:05.248888432 +0100 ++++ util-linux-2.21.2/sys-utils/mount.c 2013-02-03 17:34:31.856571865 +0100 +@@ -238,6 +238,29 @@ static int mount_all(struct libmnt_conte + return rc; + } + ++static void success_message(struct libmnt_context *cxt) ++{ ++ unsigned long mflags = 0; ++ const char *tgt, *src; ++ ++ if (mnt_context_helper_executed(cxt) ++ || mnt_context_get_status(cxt) != 1) ++ return; ++ ++ mnt_context_get_mflags(cxt, &mflags); ++ tgt = mnt_context_get_target(cxt); ++ src = mnt_context_get_source(cxt); ++ ++ if (mflags & MS_MOVE) ++ warnx(_("%s moved to %s"), src, tgt); ++ else if (mflags & MS_BIND) ++ warnx(_("%s binded on %s"), src, tgt); ++ else if (mflags & MS_PROPAGATION) ++ warnx(_("%s propagation flags changed"), tgt); ++ else ++ warnx(_("%s mounted on %s"), src, tgt); ++} ++ + /* + * Handles generic errors like ENOMEM, ... + * +@@ -913,6 +936,8 @@ int main(int argc, char **argv) + rc = mnt_context_mount(cxt); + rc = mk_exit_code(cxt, rc); + ++ if (rc == MOUNT_EX_SUCCESS && mnt_context_is_verbose(cxt)) ++ success_message(cxt); + done: + free(srcbuf); + mnt_free_context(cxt); +diff -up util-linux-2.21.2/sys-utils/umount.c.orig util-linux-2.21.2/sys-utils/umount.c +--- util-linux-2.21.2/sys-utils/umount.c.orig 2012-05-25 11:44:59.043195664 +0200 ++++ util-linux-2.21.2/sys-utils/umount.c 2013-02-03 17:33:05.266888574 +0100 +@@ -119,6 +119,25 @@ static void __attribute__((__noreturn__) + errx(MOUNT_EX_USAGE, _("only root can do that")); + } + ++static void success_message(struct libmnt_context *cxt) ++{ ++ const char *tgt, *src; ++ ++ if (mnt_context_helper_executed(cxt) ++ || mnt_context_get_status(cxt) != 1) ++ return; ++ ++ tgt = mnt_context_get_target(cxt); ++ if (!tgt) ++ return; ++ ++ src = mnt_context_get_source(cxt); ++ if (src) ++ warnx(_("%s (%s) unmounted"), tgt, src); ++ else ++ warnx(_("%s unmounted"), tgt); ++} ++ + /* + * Handles generic errors like ENOMEM, ... + * +@@ -273,6 +292,9 @@ static int umount_one(struct libmnt_cont + rc = mnt_context_umount(cxt); + rc = mk_exit_code(cxt, rc); + ++ if (rc == MOUNT_EX_SUCCESS && mnt_context_is_verbose(cxt)) ++ success_message(cxt); ++ + mnt_reset_context(cxt); + return rc; + } diff --git a/sources b/sources index 75b605a..dee478b 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ +10d940dec87902bff7e6f9f2adcd0236 util-linux-2.21.2.tar.xz a02aac97c74259ca1b24972c89147ca4 floppy-0.18.tar.bz2 -208aa058f4117759d2939d1be7d662fc util-linux-2.21.tar.xz diff --git a/util-linux-2.21-lscpu-SIGFPE.patch b/util-linux-2.21-lscpu-SIGFPE.patch new file mode 100644 index 0000000..6afbd01 --- /dev/null +++ b/util-linux-2.21-lscpu-SIGFPE.patch @@ -0,0 +1,36 @@ +diff -up util-linux-2.21.2/sys-utils/lscpu.c.kzak util-linux-2.21.2/sys-utils/lscpu.c +--- util-linux-2.21.2/sys-utils/lscpu.c.kzak 2012-05-25 11:44:59.041195655 +0200 ++++ util-linux-2.21.2/sys-utils/lscpu.c 2012-11-16 11:50:59.350150439 +0100 +@@ -605,16 +605,26 @@ read_topology(struct lscpu_desc *desc, i + + /* threads within one core */ + nthreads = CPU_COUNT_S(setsize, thread_siblings); ++ if (!nthreads) ++ nthreads = 1; ++ + /* cores within one socket */ + ncores = CPU_COUNT_S(setsize, core_siblings) / nthreads; +- /* number of sockets within one book. +- * Because of odd / non-present cpu maps and to keep +- * calculation easy we make sure that nsockets and +- * nbooks is at least 1. ++ if (!ncores) ++ ncores = 1; ++ ++ /* number of sockets within one book. Because of odd / ++ * non-present cpu maps and to keep calculation easy we make ++ * sure that nsockets and nbooks is at least 1. + */ +- nsockets = desc->ncpus / nthreads / ncores ?: 1; ++ nsockets = desc->ncpus / nthreads / ncores; ++ if (!nsockets) ++ nsockets = 1; ++ + /* number of books */ +- nbooks = desc->ncpus / nthreads / ncores / nsockets ?: 1; ++ nbooks = desc->ncpus / nthreads / ncores / nsockets; ++ if (!nbooks) ++ nbooks = 1; + + /* all threads, see also read_basicinfo() + * -- fallback for kernels without diff --git a/util-linux-2.21-mount-commas.patch b/util-linux-2.21-mount-commas.patch new file mode 100644 index 0000000..c7a0649 --- /dev/null +++ b/util-linux-2.21-mount-commas.patch @@ -0,0 +1,36 @@ +From 5e7b834002aa0ce97a1b0104e8710664ad954595 Mon Sep 17 00:00:00 2001 +From: Dave Reisner +Date: Sun, 3 Jun 2012 12:25:47 -0400 +Subject: [PATCH] libmount: trim leading commas from each options string + +Fixes a bug in option string parsing wherein a line such as: + + ro,relatime,,nosuid,nodev + +Will be seen as only the tokens "ro" and "relatime" after the parser +encounters a zero length (and erroneously declared NULL) option. + +Signed-off-by: Dave Reisner +--- + libmount/src/optstr.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/libmount/src/optstr.c b/libmount/src/optstr.c +index af5953b..66d2a06 100644 +--- a/libmount/src/optstr.c ++++ b/libmount/src/optstr.c +@@ -62,6 +62,11 @@ static int mnt_optstr_parse_next(char **optstr, char **name, size_t *namesz, + if (valsz) + *valsz = 0; + ++ /* trim leading commas as to not invalidate option ++ * strings with multiple consecutive commas */ ++ while (optstr0 && *optstr0 == ',') ++ optstr0++; ++ + for (p = optstr0; p && *p; p++) { + if (!start) + start = p; /* begin of the option item */ +-- +1.7.11.7 + diff --git a/util-linux-2.21-mount-sloppy.patch b/util-linux-2.21-mount-sloppy.patch new file mode 100644 index 0000000..7b7f9b9 --- /dev/null +++ b/util-linux-2.21-mount-sloppy.patch @@ -0,0 +1,27 @@ +From e26de525e21677c680d87f63e4dafbe4859365bf Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Thu, 14 Jun 2012 14:43:21 +0200 +Subject: [PATCH] mount: (new) allow sloppy for non-root + +Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=825836 +Signed-off-by: Karel Zak +--- + sys-utils/mount.c | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/sys-utils/mount.c b/sys-utils/mount.c +index 2b8843c..9cc2db3 100644 +--- a/sys-utils/mount.c ++++ b/sys-utils/mount.c +@@ -731,7 +731,7 @@ int main(int argc, char **argv) + longopts, NULL)) != -1) { + + /* only few options are allowed for non-root users */ +- if (mnt_context_is_restricted(cxt) && !strchr("hlLUVvpri", c)) ++ if (mnt_context_is_restricted(cxt) && !strchr("hlLUVvpris", c)) + exit_non_root(option_to_longopt(c, longopts)); + + switch(c) { +-- +1.7.7.6 + diff --git a/util-linux-2.21-uuidd-rundir.patch b/util-linux-2.21-uuidd-rundir.patch new file mode 100644 index 0000000..f270b0b --- /dev/null +++ b/util-linux-2.21-uuidd-rundir.patch @@ -0,0 +1,26 @@ +From 1425948c8ceaf128c9cfcf4db680be4144f89314 Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Mon, 18 Jun 2012 15:46:20 +0200 +Subject: [PATCH] uuidd: move from /var/run/uuidd to /run/uuidd + +Signed-off-by: Karel Zak +--- + libuuid/src/uuidd.h | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/libuuid/src/uuidd.h b/libuuid/src/uuidd.h +index 27b79c2..ff7e6d7 100644 +--- a/libuuid/src/uuidd.h ++++ b/libuuid/src/uuidd.h +@@ -35,7 +35,7 @@ + #ifndef _UUID_UUIDD_H + #define _UUID_UUIDD_H + +-#define UUIDD_DIR "/var/run/uuidd" ++#define UUIDD_DIR "/run/uuidd" + #define UUIDD_SOCKET_PATH UUIDD_DIR "/request" + #define UUIDD_PIDFILE_PATH UUIDD_DIR "/uuidd.pid" + #define UUIDD_PATH "/usr/sbin/uuidd" +-- +1.7.7.6 + diff --git a/util-linux.spec b/util-linux.spec index cc2fc64..c567318 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -1,8 +1,8 @@ ### Header Summary: A collection of basic system utilities Name: util-linux -Version: 2.21 -Release: 1%{?dist} +Version: 2.21.2 +Release: 4%{?dist} License: GPLv2 and GPLv2+ and GPLv3+ and LGPLv2+ and BSD with advertising and Public Domain Group: System Environment/Base URL: http://kernel.org/~kzak/util-linux/ @@ -34,6 +34,7 @@ Source8: nologin.c Source9: nologin.8 Source10: uuidd.init Source11: http://downloads.sourceforge.net/floppyutil/floppy-%{floppyver}.tar.bz2 +Source12: uuidd.tmpfiles ### Obsoletes & Conflicts & Provides # old versions of e2fsprogs contain fsck, uuidgen @@ -77,6 +78,21 @@ Patch3: util-linux-ng-2.21-login-lastlog.patch # 231192 - ipcs is not printing correct values on pLinux Patch4: util-linux-2.21-ipcs-32bit.patch +### Upstream patches +### 825836 - Problems with automount map using quota +Patch5: util-linux-2.21-mount-sloppy.patch +# 826122 - uuidd fails to start +Patch6: util-linux-2.21-uuidd-rundir.patch +# 873983 - mount: /dev/mapper/myvg-usrlv is already mounted or /usr busy +Patch7: util-linux-2.21-mount-commas.patch +# 875461 - read_topology: Process /usr/bin/lscpu was killed by signal 8 (SIGFPE) +Patch8: util-linux-2.21-lscpu-SIGFPE.patch +# 885314 - hexdump segfault +Patch9: hexdump-do-not-segfault-when-iterating-over-an-empty.patch +# 864227 - mount option -v or --verbose does not work +Patch10: mount-add-verbose-messages.patch + + %description The util-linux package contains a large variety of low-level system utilities that are necessary for a Linux system to function. Among @@ -187,11 +203,9 @@ SMP systems. %setup -q -a 11 -n %{name}-%{upstream_version} cp %{SOURCE8} %{SOURCE9} . -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 +for p in %{patches}; do + %{__patch} -p1 -F%{_default_patch_fuzz} -s -i "$p" +done %build unset LINGUAS || : @@ -264,8 +278,10 @@ mv ${RPM_BUILD_ROOT}%{_sbindir}/raw ${RPM_BUILD_ROOT}%{_bindir}/raw # Our own initscript for uuidd install -D -m 755 %{SOURCE10} ${RPM_BUILD_ROOT}/etc/rc.d/init.d/uuidd # And a dirs uuidd needs that the makefiles don't create -install -d ${RPM_BUILD_ROOT}/var/run/uuidd +install -d ${RPM_BUILD_ROOT}/run/uuidd install -d ${RPM_BUILD_ROOT}/var/lib/libuuid +install -d ${RPM_BUILD_ROOT}/etc/tmpfiles.d +install -m 0644 %{SOURCE12} ${RPM_BUILD_ROOT}/etc/tmpfiles.d/uuidd.conf # libtool junk rm -rf ${RPM_BUILD_ROOT}%{_libdir}/*.la @@ -651,7 +667,8 @@ fi %{_mandir}/man8/uuidd.8* %attr(-, uuidd, uuidd) %{_sbindir}/uuidd %dir %attr(2775, uuidd, uuidd) /var/lib/libuuid -%dir %attr(2775, uuidd, uuidd) /var/run/uuidd +%dir %attr(0710, uuidd, uuidd) /run/uuidd +%config(noreplace) %{_sysconfdir}/tmpfiles.d/uuidd.conf %files -n libmount @@ -707,6 +724,34 @@ fi %changelog +* Sun Feb 3 2013 Karel Zak 2.21.2-4 +- fix #885314 - hexdump segfault +- fix #864227 - mount option -v or --verbose does not work + +* Fri Nov 16 2012 Karel Zak 2.21.2-3 +- fix #873983 - mount: /dev/mapper/myvg-usrlv is already mounted or /usr busy +- fix #875461 - read_topology: Process /usr/bin/lscpu was killed by signal 8 (SIGFPE) + +* Mon Jun 18 2012 Karel Zak 2.21.2-2 +- fix #825836 - Problems with automount map using quota +- fix #826122 - uuidd fails to start + +* Fri May 25 2012 Karel Zak 2.21.2-1 +- upgrade to bugfix release 2.21.1 +- fix #814699 - namei(1) incorrectly resolves relative symlinks +- fix #820707 - Impossible to unmount nfsv4/krb5 mounts after network disconnect +- fix #816877 - libmount does not close device fd before mount(2) +- fix #822705 - unable to login after installing + +* Fri Mar 30 2012 Karel Zak 2.21.1-1 +- upgrade to bugfix release 2.21.1 + +* Thu Mar 01 2012 Michal Luscon 2.21-2 +- fix #797216 - cannot mount filesystem at boot time systemd refuses +- fix #797438 - systemd always fails systemd-remount-api-vfs.service +- canonicalize targets from fstab on mount -a +- use mount. -s for NFS only + * Fri Feb 24 2012 Karel Zak 2.21-1 - upgrade to release 2.21 diff --git a/uuidd.tmpfiles b/uuidd.tmpfiles new file mode 100644 index 0000000..d1721cb --- /dev/null +++ b/uuidd.tmpfiles @@ -0,0 +1 @@ +d /run/uuidd 0710 uuidd uuidd -