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>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220117134352.866706-1-zhang.yunkai@zte.com.cn>
Date:   Mon, 17 Jan 2022 13:43:50 +0000
From:   cgel.zte@...il.com
To:     mhiramat@...nel.org
Cc:     viro@...iv.linux.org.uk, keescook@...omium.org,
        samitolvanen@...gle.com, ojeda@...nel.org, johan@...nel.org,
        bhelgaas@...gle.com, elver@...gle.com, masahiroy@...nel.org,
        zhang.yunkai@....com.cn, axboe@...nel.dk, vgoyal@...hat.com,
        jack@...e.cz, leon@...nel.org, akpm@...ux-foundation.org,
        rppt@...nel.org, linux@...musvillemoes.dk,
        palmerdabbelt@...gle.com, f.fainelli@...il.com,
        wangkefeng.wang@...wei.com, rostedt@...dmis.org,
        ahalaney@...hat.com, valentin.schneider@....com,
        peterz@...radead.org, geert@...ux-m68k.org,
        linux-fsdevel@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH v7 0/2] init/initramfs.c: make initramfs support pivot_root

From: Zhang Yunkai <zhang.yunkai@....com.cn>

As Luis Chamberlain suggested, I split the patch:
[init/initramfs.c: make initramfs support pivot_root]
(https://lore.kernel.org/linux-fsdevel/20210520154244.20209-1-dong.menglong@zte.com.cn/)
into three.

The goal of the series patches is to make pivot_root() support initramfs.

In the first patch, I introduce the function ramdisk_exec_exist(), which
is used to check the exist of 'ramdisk_execute_command' in LOOKUP_DOWN
lookup mode.

In the second patch, I create a second mount, which is called
'user root', and make it become the root. Therefore, the root has a
parent mount, and it can be umounted or pivot_root.

In the third patch, I fix rootfs_fs_type with ramfs, as it is not used
directly any more, and it make no sense to switch it between ramfs and
tmpfs, just fix it with ramfs to simplify the code.

Changes since V6:

Fix some bugs by Zhang Yunkai.


Changes since V5:

Remove the third patch and make it combined with the second one.


Changes since V4:                                                                                                                                                     
                                                                                                                                                                      
Do some more code cleanup for the second patch, include:                                                                                                              
- move 'ramdisk_exec_exist()' to 'init.h'                                                                                                                             
- remove unnecessary struct 'fs_rootfs_root'                                                                                                                          
- introduce 'revert_mount_rootfs()'                                                                                                                                   
- [...]                                                                                                                                                               


Changes since V3:

Do a code cleanup for the second patch, as Christian Brauner suggested:
- remove the concept 'user root', which seems not suitable.
- introduce inline function 'check_tmpfs_enabled()' to avoid duplicated
  code.
- rename function 'mount_user_root' to 'prepare_mount_rootfs'
- rename function 'end_mount_user_root' to 'finish_mount_rootfs'
- join 'init_user_rootfs()' with 'prepare_mount_rootfs()'

Changes since V2:

In the first patch, I use vfs_path_lookup() in init_eaccess() to make the
path lookup follow the mount on '/'. After this, the problem reported by
Masami Hiramatsu is solved. Thanks for your report :/


Changes since V1:

In the first patch, I add the flag LOOKUP_DOWN to init_eaccess(), to make
it support the check of filesystem mounted on '/'.

In the second patch, I control 'user root' with kconfig option
'CONFIG_INITRAMFS_USER_ROOT', and add some comments, as Luis Chamberlain
suggested.

In the third patch, I make 'rootfs_fs_type' in control of
'CONFIG_INITRAMFS_USER_ROOT'.


Zhang Yunkai (2):
  init/main.c: introduce function ramdisk_exec_exist()
  init/do_mounts.c: create second mount for initramfs

 fs/init.c            | 11 +++++++++--
 include/linux/init.h |  1 +
 init/do_mounts.c     | 45 ++++++++++++++++++++++++++++++++++++++++++++
 init/do_mounts.h     | 17 ++++++++++++++++-
 init/initramfs.c     | 12 +++++++++++-
 init/main.c          |  7 ++++++-
 usr/Kconfig          | 10 ++++++++++
 7 files changed, 98 insertions(+), 5 deletions(-)

-- 
2.25.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ