lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-Id: <201411062246.sA6Mkggp010153@blau.mirbsd.org>
Date:	Sun, 4 May 2014 01:37:54 +0200
From:	Thorsten Glaser <tg@...bsd.org>
To:	linux-kernel@...r.kernel.org
Subject: [PATCH] mount tmpfs-as-rootfs (initramfs) with -o
 nr_blocks=0,nr_inodes=0

I would have preferred to write this patch to be able to pass
rootflags=nr_blocks=0,nr_inodes=0 on the kernel command line,
and then hand these rootflags over to the initramfs (tmpfs)
mount in the same way the kernel hands them over to the block
device rootfs mount. But at least the Debian/m68k initrd also
parses $rootflags from the environment and adds it to the call
to the user-space mount for the eventual root device, which
would make the kernel command line rootflags option be used in
both places (tmpfs and e.g. ext4) which is guaranteed to error
out in at least one of them.

This change is intended to aid people in a setup where the
initrd is the final root filesystem, i.e. not mounted over.
This is especially useful in automated tests running on qemu
for boards with constrained memory (e.g. 64 MiB on sh4).

Considering that the initramfs is normally emptied out then
overmounted, this change is probably safe for setups where
initramfs just hosts early userspace, too, since the tmpfs
backing it is not accessible any more later on, AFAICT.

Signed-off-by: Thorsten Glaser <tg@...bsd.org>
---
 init/do_mounts.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/init/do_mounts.c b/init/do_mounts.c
index 82f2288..55a4cfe 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -594,6 +594,7 @@ out:
 }
 
 static bool is_tmpfs;
+static char tmpfs_rootflags[] = "nr_blocks=0,nr_inodes=0";
 static struct dentry *rootfs_mount(struct file_system_type *fs_type,
 	int flags, const char *dev_name, void *data)
 {
@@ -606,6 +607,9 @@ static struct dentry *rootfs_mount(struct file_system_type *fs_type,
 	if (IS_ENABLED(CONFIG_TMPFS) && is_tmpfs)
 		fill = shmem_fill_super;
 
+	if (is_tmpfs)
+		data = tmpfs_rootflags;
+
 	return mount_nodev(fs_type, flags, data, fill);
 }
 
-- 
2.0.0.rc0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ