diff options
author | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-05-27 03:40:36 +0000 |
---|---|---|
committer | Nicolás Reynolds <fauno@endefensadelsl.org> | 2014-05-27 03:40:36 +0000 |
commit | 266ddb4aa9aed9a6a66b5eb9e17da710e66c4987 (patch) | |
tree | c0d32fb7dc90ad7e6763780b1196adf05f972fe3 /core | |
parent | cda3f380f74d60573c1202f7f34a79c8182e341a (diff) |
Tue May 27 03:35:23 UTC 2014
Diffstat (limited to 'core')
4 files changed, 6 insertions, 223 deletions
diff --git a/core/util-linux/0001-libmount-FS-id-and-parent-ID-could-be-zero.patch b/core/util-linux/0001-libmount-FS-id-and-parent-ID-could-be-zero.patch deleted file mode 100644 index 01a8d441b..000000000 --- a/core/util-linux/0001-libmount-FS-id-and-parent-ID-could-be-zero.patch +++ /dev/null @@ -1,98 +0,0 @@ -From 6c373810f5b1d32824371e9dff6ee5a006388f98 Mon Sep 17 00:00:00 2001 -From: Karel Zak <kzak@redhat.com> -Date: Thu, 20 Feb 2014 16:59:11 +0100 -Subject: [PATCH] libmount: FS id and parent ID could be zero -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -It seems that linux 3.14 is able to produce things like: - - 19 0 8:3 / / rw,relatime - ext4 /dev/sda3 rw,data=ordered - ^ - -Reported-by: Mantas Mikulėnas <grawity@gmail.com> -Signed-off-by: Karel Zak <kzak@redhat.com> ---- - libmount/src/tab.c | 12 ++++-------- - misc-utils/findmnt.c | 5 +++-- - 2 files changed, 7 insertions(+), 10 deletions(-) - -diff --git a/libmount/src/tab.c b/libmount/src/tab.c -index 4c2f8a4..332312b 100644 ---- a/libmount/src/tab.c -+++ b/libmount/src/tab.c -@@ -505,7 +505,7 @@ int mnt_table_get_root_fs(struct libmnt_table *tb, struct libmnt_fs **root) - assert(tb); - assert(root); - -- if (!tb || !root) -+ if (!tb || !root || !is_mountinfo(tb)) - return -EINVAL; - - DBG(TAB, mnt_debug_h(tb, "lookup root fs")); -@@ -515,8 +515,6 @@ int mnt_table_get_root_fs(struct libmnt_table *tb, struct libmnt_fs **root) - mnt_reset_iter(&itr, MNT_ITER_FORWARD); - while(mnt_table_next_fs(tb, &itr, &fs) == 0) { - int id = mnt_fs_get_parent_id(fs); -- if (!id) -- break; /* @tab is not a mountinfo file? */ - - if (!*root || id < root_id) { - *root = fs; -@@ -524,7 +522,7 @@ int mnt_table_get_root_fs(struct libmnt_table *tb, struct libmnt_fs **root) - } - } - -- return root_id ? 0 : -EINVAL; -+ return *root ? 0 : -EINVAL; - } - - /** -@@ -545,15 +543,13 @@ int mnt_table_next_child_fs(struct libmnt_table *tb, struct libmnt_iter *itr, - struct libmnt_fs *fs; - int parent_id, lastchld_id = 0, chld_id = 0; - -- if (!tb || !itr || !parent) -+ if (!tb || !itr || !parent || !is_mountinfo(tb)) - return -EINVAL; - - DBG(TAB, mnt_debug_h(tb, "lookup next child of '%s'", - mnt_fs_get_target(parent))); - - parent_id = mnt_fs_get_id(parent); -- if (!parent_id) -- return -EINVAL; - - /* get ID of the previously returned child */ - if (itr->head && itr->p != itr->head) { -@@ -584,7 +580,7 @@ int mnt_table_next_child_fs(struct libmnt_table *tb, struct libmnt_iter *itr, - } - } - -- if (!chld_id) -+ if (!*chld) - return 1; /* end of iterator */ - - /* set the iterator to the @chld for the next call */ -diff --git a/misc-utils/findmnt.c b/misc-utils/findmnt.c -index fb21174..988cd73 100644 ---- a/misc-utils/findmnt.c -+++ b/misc-utils/findmnt.c -@@ -822,8 +822,9 @@ static int tab_is_tree(struct libmnt_table *tb) - if (!itr) - return 0; - -- if (mnt_table_next_fs(tb, itr, &fs) == 0) -- rc = mnt_fs_get_id(fs) > 0 && mnt_fs_get_parent_id(fs) > 0; -+ rc = (mnt_table_next_fs(tb, itr, &fs) == 0 && -+ mnt_fs_is_kernel(fs) && -+ mnt_fs_get_root(fs)); - - mnt_free_iter(itr); - return rc; --- -1.9.1 - diff --git a/core/util-linux/0001-switch_root-verify-initramfs-by-f_type-not-devno.patch b/core/util-linux/0001-switch_root-verify-initramfs-by-f_type-not-devno.patch deleted file mode 100644 index 56191a30e..000000000 --- a/core/util-linux/0001-switch_root-verify-initramfs-by-f_type-not-devno.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 751c39383adaf5ff5a860516238d524b0e20f835 Mon Sep 17 00:00:00 2001 -From: Dave Reisner <dreisner@archlinux.org> -Date: Wed, 2 Apr 2014 10:41:30 -0400 -Subject: [PATCH] switch_root: verify initramfs by f_type, not devno - -As of linux 3.14, the initramfs device will have both major and -minor 0, causing our paranoia check to fail. Make this version agnostic -by checking the filesystem type, rather than a device number. - -[adopted from master for backport into 2.24.x branch] - -Signed-off-by: Dave Reisner <dreisner@archlinux.org> ---- - sys-utils/switch_root.c | 15 +++++++++------ - 1 file changed, 9 insertions(+), 6 deletions(-) - -diff --git a/sys-utils/switch_root.c b/sys-utils/switch_root.c -index f26f7da..40e222d 100644 ---- a/sys-utils/switch_root.c -+++ b/sys-utils/switch_root.c -@@ -23,6 +23,7 @@ - #include <sys/mount.h> - #include <sys/types.h> - #include <sys/stat.h> -+#include <sys/statfs.h> - #include <sys/param.h> - #include <fcntl.h> - #include <stdio.h> -@@ -33,6 +34,8 @@ - #include <ctype.h> - #include <dirent.h> - -+#include <linux/magic.h> -+ - #include "c.h" - #include "nls.h" - #include "closestream.h" -@@ -174,12 +177,12 @@ static int switchroot(const char *newroot) - if (cfd >= 0) { - pid = fork(); - if (pid <= 0) { -- if (fstat(cfd, &sb) == 0) { -- if (sb.st_dev == makedev(0, 1)) -- recursiveRemove(cfd); -- else -- warn(_("old root filesystem is not an initramfs")); -- } -+ struct statfs stfs; -+ if (fstatfs(cfd, &stfs) == 0 && -+ (stfs.f_type == RAMFS_MAGIC || stfs.f_type == TMPFS_MAGIC)) -+ recursiveRemove(cfd); -+ else -+ warn(_("old root filesystem is not an initramfs")); - - if (pid == 0) - exit(EXIT_SUCCESS); --- -1.9.1 - diff --git a/core/util-linux/PKGBUILD b/core/util-linux/PKGBUILD index 64d725582..3b641f13e 100644 --- a/core/util-linux/PKGBUILD +++ b/core/util-linux/PKGBUILD @@ -1,12 +1,12 @@ -# $Id: PKGBUILD 210105 2014-04-09 22:22:03Z thomas $ +# $Id: PKGBUILD 213600 2014-05-26 15:24:06Z dreisner $ # Maintainer: Tom Gundersen <teg@jklm.no> # Maintainer: Dave Reisner <dreisner@archlinux.org> # Contributor: judd <jvinet@zeroflux.org> pkgbase=util-linux pkgname=(util-linux libutil-linux) -pkgver=2.24.1 -pkgrel=6 +pkgver=2.24.2 +pkgrel=1 pkgdesc="Miscellaneous system utilities for Linux" url="http://www.kernel.org/pub/linux/utils/util-linux/" arch=('i686' 'x86_64') @@ -19,26 +19,12 @@ source=("ftp://ftp.kernel.org/pub/linux/utils/$pkgname/v2.24/$pkgname-$pkgver.ta uuidd.tmpfiles pam-login pam-common - pam-su - move_is_mountinfo.patch - 0001-switch_root-verify-initramfs-by-f_type-not-devno.patch - 0001-libmount-FS-id-and-parent-ID-could-be-zero.patch) -md5sums=('88d46ae23ca599ac5af9cf96b531590f' + pam-su) +md5sums=('3f191727a0d28f7204b755cf1b6ea0aa' 'a39554bfd65cccfd8254bb46922f4a67' '4368b3f98abd8a32662e094c54e7f9b1' 'a31374fef2cba0ca34dfc7078e2969e4' - 'fa85e5cce5d723275b14365ba71a8aad' - '4cdc5f9a6e51b032274761a82937d438' - 'b7ca79a0d5318b7cd813bb2573a3f9a9' - '2f4bc305bd11d6bfaa81e6c1eb0c6f1b') - -prepare() { - cd "$pkgname-$pkgver" - - patch -p1 -i "${srcdir}/move_is_mountinfo.patch" - patch -p1 -i "${srcdir}/0001-libmount-FS-id-and-parent-ID-could-be-zero.patch" - patch -p1 -i "${srcdir}/0001-switch_root-verify-initramfs-by-f_type-not-devno.patch" -} + 'fa85e5cce5d723275b14365ba71a8aad') build() { cd "$pkgname-$pkgver" diff --git a/core/util-linux/move_is_mountinfo.patch b/core/util-linux/move_is_mountinfo.patch deleted file mode 100644 index ad9387efc..000000000 --- a/core/util-linux/move_is_mountinfo.patch +++ /dev/null @@ -1,46 +0,0 @@ -diff --git a/libmount/src/tab.c b/libmount/src/tab.c -index 3633b6a..8ae49c8 100644 ---- a/libmount/src/tab.c -+++ b/libmount/src/tab.c -@@ -47,6 +47,20 @@ - #include "strutils.h" - #include "loopdev.h" - -+static int is_mountinfo(struct libmnt_table *tb) -+{ -+ struct libmnt_fs *fs; -+ -+ if (!tb) -+ return 0; -+ -+ fs = list_first_entry(&tb->ents, struct libmnt_fs, ents); -+ if (fs && mnt_fs_is_kernel(fs) && mnt_fs_get_root(fs)) -+ return 1; -+ -+ return 0; -+} -+ - /** - * mnt_new_table: - * -@@ -1229,20 +1335,6 @@ err: - return NULL; - } - --static int is_mountinfo(struct libmnt_table *tb) --{ -- struct libmnt_fs *fs; -- -- if (!tb) -- return 0; -- -- fs = list_first_entry(&tb->ents, struct libmnt_fs, ents); -- if (fs && mnt_fs_is_kernel(fs) && mnt_fs_get_root(fs)) -- return 1; -- -- return 0; --} -- - /** - * mnt_table_is_fs__mounted: - * @tb: /proc/self/mountinfo file |