All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Wire up CONFIG_DEVTMPFS_MOUNT to initramfs.
@ 2022-01-16 18:36 Rob Landley
  2022-01-16 22:45   ` kernel test robot
  2022-01-17 10:20   ` kernel test robot
  0 siblings, 2 replies; 5+ messages in thread
From: Rob Landley @ 2022-01-16 18:36 UTC (permalink / raw)
  To: linux-kernel

From: Rob Landley <rob@landley.net>

The kernel has had CONFIG_DEVTMPFS_MOUNT for years, but it only applied to
fallback ROOT= not initramfs/initmpfs. As long as the config option exists, it
might as well work.

I use this for board bringup: populating a chdir and calling cpio as a normal
user often leaves /dev empty (because mknod requires root access), meaning no
/dev/console for init/main.c to open, meaning init runs without
stdin/stdout/stderr and has to mount devtmpfs and redirect the filehandles blind
with no error output if something goes wrong.

Signed-off-by: Rob Landley <rob@landley.net>
---
Previously: https://lkml.org/lkml/2017/9/13/651

 init/main.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/init/main.c b/init/main.c
index bb984ed79de0..288c73db57f4 100644
--- a/init/main.c
+++ b/init/main.c
@@ -1612,7 +1612,6 @@ static noinline void __init kernel_init_freeable(void)
 	kunit_run_all_tests();

 	wait_for_initramfs();
-	console_on_rootfs();

 	/*
 	 * check if there is an early userspace init.  If yes, let it do all
@@ -1621,7 +1620,11 @@ static noinline void __init kernel_init_freeable(void)
 	if (init_eaccess(ramdisk_execute_command) != 0) {
 		ramdisk_execute_command = NULL;
 		prepare_namespace();
+	} else if (IS_ENABLED(CONFIG_DEVTMPFS_MOUNT)) {
+		sys_mkdir("/dev", 0755);
+		devtmpfs_mount();
 	}
+	console_on_rootfs();

 	/*
 	 * Ok, we have completed the initial bootup, and

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] Wire up CONFIG_DEVTMPFS_MOUNT to initramfs.
  2022-01-16 18:36 [PATCH] Wire up CONFIG_DEVTMPFS_MOUNT to initramfs Rob Landley
@ 2022-01-16 22:45   ` kernel test robot
  2022-01-17 10:20   ` kernel test robot
  1 sibling, 0 replies; 5+ messages in thread
From: kernel test robot @ 2022-01-16 22:45 UTC (permalink / raw)
  To: Rob Landley, linux-kernel; +Cc: llvm, kbuild-all

Hi Rob,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linux/master]
[also build test ERROR on linus/master v5.16 next-20220116]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Rob-Landley/Wire-up-CONFIG_DEVTMPFS_MOUNT-to-initramfs/20220117-023610
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git daadb3bd0e8d3e317e36bc2c1542e86c528665e5
config: i386-randconfig-a001-20220117 (https://download.01.org/0day-ci/archive/20220117/202201170603.CXS8HDSz-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c63a3175c2947e8c1a2d3bbe16a8586600705c54)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/c6b7e8ccdf2b0a9620c9dc0b5e5b2a719b223817
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Rob-Landley/Wire-up-CONFIG_DEVTMPFS_MOUNT-to-initramfs/20220117-023610
        git checkout c6b7e8ccdf2b0a9620c9dc0b5e5b2a719b223817
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   init/main.c:780:20: warning: no previous prototype for function 'mem_encrypt_init' [-Wmissing-prototypes]
   void __init __weak mem_encrypt_init(void) { }
                      ^
   init/main.c:780:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void __init __weak mem_encrypt_init(void) { }
   ^
   static 
>> init/main.c:1624:3: error: implicit declaration of function 'sys_mkdir' [-Werror,-Wimplicit-function-declaration]
                   sys_mkdir("/dev", 0755);
                   ^
   init/main.c:1624:3: note: did you mean 'vfs_mkdir'?
   include/linux/fs.h:1867:5: note: 'vfs_mkdir' declared here
   int vfs_mkdir(struct user_namespace *, struct inode *,
       ^
   1 warning and 1 error generated.


vim +/sys_mkdir +1624 init/main.c

  1579	
  1580	static noinline void __init kernel_init_freeable(void)
  1581	{
  1582		/* Now the scheduler is fully set up and can do blocking allocations */
  1583		gfp_allowed_mask = __GFP_BITS_MASK;
  1584	
  1585		/*
  1586		 * init can allocate pages on any node
  1587		 */
  1588		set_mems_allowed(node_states[N_MEMORY]);
  1589	
  1590		cad_pid = get_pid(task_pid(current));
  1591	
  1592		smp_prepare_cpus(setup_max_cpus);
  1593	
  1594		workqueue_init();
  1595	
  1596		init_mm_internals();
  1597	
  1598		rcu_init_tasks_generic();
  1599		do_pre_smp_initcalls();
  1600		lockup_detector_init();
  1601	
  1602		smp_init();
  1603		sched_init_smp();
  1604	
  1605		padata_init();
  1606		page_alloc_init_late();
  1607		/* Initialize page ext after all struct pages are initialized. */
  1608		page_ext_init();
  1609	
  1610		do_basic_setup();
  1611	
  1612		kunit_run_all_tests();
  1613	
  1614		wait_for_initramfs();
  1615	
  1616		/*
  1617		 * check if there is an early userspace init.  If yes, let it do all
  1618		 * the work
  1619		 */
  1620		if (init_eaccess(ramdisk_execute_command) != 0) {
  1621			ramdisk_execute_command = NULL;
  1622			prepare_namespace();
  1623		} else if (IS_ENABLED(CONFIG_DEVTMPFS_MOUNT)) {
> 1624			sys_mkdir("/dev", 0755);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Wire up CONFIG_DEVTMPFS_MOUNT to initramfs.
@ 2022-01-16 22:45   ` kernel test robot
  0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2022-01-16 22:45 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 3975 bytes --]

Hi Rob,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linux/master]
[also build test ERROR on linus/master v5.16 next-20220116]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Rob-Landley/Wire-up-CONFIG_DEVTMPFS_MOUNT-to-initramfs/20220117-023610
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git daadb3bd0e8d3e317e36bc2c1542e86c528665e5
config: i386-randconfig-a001-20220117 (https://download.01.org/0day-ci/archive/20220117/202201170603.CXS8HDSz-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c63a3175c2947e8c1a2d3bbe16a8586600705c54)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/c6b7e8ccdf2b0a9620c9dc0b5e5b2a719b223817
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Rob-Landley/Wire-up-CONFIG_DEVTMPFS_MOUNT-to-initramfs/20220117-023610
        git checkout c6b7e8ccdf2b0a9620c9dc0b5e5b2a719b223817
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   init/main.c:780:20: warning: no previous prototype for function 'mem_encrypt_init' [-Wmissing-prototypes]
   void __init __weak mem_encrypt_init(void) { }
                      ^
   init/main.c:780:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
   void __init __weak mem_encrypt_init(void) { }
   ^
   static 
>> init/main.c:1624:3: error: implicit declaration of function 'sys_mkdir' [-Werror,-Wimplicit-function-declaration]
                   sys_mkdir("/dev", 0755);
                   ^
   init/main.c:1624:3: note: did you mean 'vfs_mkdir'?
   include/linux/fs.h:1867:5: note: 'vfs_mkdir' declared here
   int vfs_mkdir(struct user_namespace *, struct inode *,
       ^
   1 warning and 1 error generated.


vim +/sys_mkdir +1624 init/main.c

  1579	
  1580	static noinline void __init kernel_init_freeable(void)
  1581	{
  1582		/* Now the scheduler is fully set up and can do blocking allocations */
  1583		gfp_allowed_mask = __GFP_BITS_MASK;
  1584	
  1585		/*
  1586		 * init can allocate pages on any node
  1587		 */
  1588		set_mems_allowed(node_states[N_MEMORY]);
  1589	
  1590		cad_pid = get_pid(task_pid(current));
  1591	
  1592		smp_prepare_cpus(setup_max_cpus);
  1593	
  1594		workqueue_init();
  1595	
  1596		init_mm_internals();
  1597	
  1598		rcu_init_tasks_generic();
  1599		do_pre_smp_initcalls();
  1600		lockup_detector_init();
  1601	
  1602		smp_init();
  1603		sched_init_smp();
  1604	
  1605		padata_init();
  1606		page_alloc_init_late();
  1607		/* Initialize page ext after all struct pages are initialized. */
  1608		page_ext_init();
  1609	
  1610		do_basic_setup();
  1611	
  1612		kunit_run_all_tests();
  1613	
  1614		wait_for_initramfs();
  1615	
  1616		/*
  1617		 * check if there is an early userspace init.  If yes, let it do all
  1618		 * the work
  1619		 */
  1620		if (init_eaccess(ramdisk_execute_command) != 0) {
  1621			ramdisk_execute_command = NULL;
  1622			prepare_namespace();
  1623		} else if (IS_ENABLED(CONFIG_DEVTMPFS_MOUNT)) {
> 1624			sys_mkdir("/dev", 0755);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Wire up CONFIG_DEVTMPFS_MOUNT to initramfs.
  2022-01-16 18:36 [PATCH] Wire up CONFIG_DEVTMPFS_MOUNT to initramfs Rob Landley
@ 2022-01-17 10:20   ` kernel test robot
  2022-01-17 10:20   ` kernel test robot
  1 sibling, 0 replies; 5+ messages in thread
From: kernel test robot @ 2022-01-17 10:20 UTC (permalink / raw)
  To: Rob Landley, linux-kernel; +Cc: kbuild-all

Hi Rob,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linux/master]
[also build test WARNING on linus/master v5.16 next-20220117]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Rob-Landley/Wire-up-CONFIG_DEVTMPFS_MOUNT-to-initramfs/20220117-023610
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git daadb3bd0e8d3e317e36bc2c1542e86c528665e5
config: h8300-randconfig-s032-20220116 (https://download.01.org/0day-ci/archive/20220117/202201171822.FDXweWsH-lkp@intel.com/config)
compiler: h8300-linux-gcc (GCC) 11.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/0day-ci/linux/commit/c6b7e8ccdf2b0a9620c9dc0b5e5b2a719b223817
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Rob-Landley/Wire-up-CONFIG_DEVTMPFS_MOUNT-to-initramfs/20220117-023610
        git checkout c6b7e8ccdf2b0a9620c9dc0b5e5b2a719b223817
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=h8300 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)
>> init/main.c:1624:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected char const [noderef] __user *pathname @@     got char * @@
   init/main.c:1624:27: sparse:     expected char const [noderef] __user *pathname
   init/main.c:1624:27: sparse:     got char *

vim +1624 init/main.c

  1579	
  1580	static noinline void __init kernel_init_freeable(void)
  1581	{
  1582		/* Now the scheduler is fully set up and can do blocking allocations */
  1583		gfp_allowed_mask = __GFP_BITS_MASK;
  1584	
  1585		/*
  1586		 * init can allocate pages on any node
  1587		 */
  1588		set_mems_allowed(node_states[N_MEMORY]);
  1589	
  1590		cad_pid = get_pid(task_pid(current));
  1591	
  1592		smp_prepare_cpus(setup_max_cpus);
  1593	
  1594		workqueue_init();
  1595	
  1596		init_mm_internals();
  1597	
  1598		rcu_init_tasks_generic();
  1599		do_pre_smp_initcalls();
  1600		lockup_detector_init();
  1601	
  1602		smp_init();
  1603		sched_init_smp();
  1604	
  1605		padata_init();
  1606		page_alloc_init_late();
  1607		/* Initialize page ext after all struct pages are initialized. */
  1608		page_ext_init();
  1609	
  1610		do_basic_setup();
  1611	
  1612		kunit_run_all_tests();
  1613	
  1614		wait_for_initramfs();
  1615	
  1616		/*
  1617		 * check if there is an early userspace init.  If yes, let it do all
  1618		 * the work
  1619		 */
  1620		if (init_eaccess(ramdisk_execute_command) != 0) {
  1621			ramdisk_execute_command = NULL;
  1622			prepare_namespace();
  1623		} else if (IS_ENABLED(CONFIG_DEVTMPFS_MOUNT)) {
> 1624			sys_mkdir("/dev", 0755);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] Wire up CONFIG_DEVTMPFS_MOUNT to initramfs.
@ 2022-01-17 10:20   ` kernel test robot
  0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2022-01-17 10:20 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 3524 bytes --]

Hi Rob,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on linux/master]
[also build test WARNING on linus/master v5.16 next-20220117]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Rob-Landley/Wire-up-CONFIG_DEVTMPFS_MOUNT-to-initramfs/20220117-023610
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git daadb3bd0e8d3e317e36bc2c1542e86c528665e5
config: h8300-randconfig-s032-20220116 (https://download.01.org/0day-ci/archive/20220117/202201171822.FDXweWsH-lkp(a)intel.com/config)
compiler: h8300-linux-gcc (GCC) 11.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/0day-ci/linux/commit/c6b7e8ccdf2b0a9620c9dc0b5e5b2a719b223817
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Rob-Landley/Wire-up-CONFIG_DEVTMPFS_MOUNT-to-initramfs/20220117-023610
        git checkout c6b7e8ccdf2b0a9620c9dc0b5e5b2a719b223817
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=h8300 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)
>> init/main.c:1624:27: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected char const [noderef] __user *pathname @@     got char * @@
   init/main.c:1624:27: sparse:     expected char const [noderef] __user *pathname
   init/main.c:1624:27: sparse:     got char *

vim +1624 init/main.c

  1579	
  1580	static noinline void __init kernel_init_freeable(void)
  1581	{
  1582		/* Now the scheduler is fully set up and can do blocking allocations */
  1583		gfp_allowed_mask = __GFP_BITS_MASK;
  1584	
  1585		/*
  1586		 * init can allocate pages on any node
  1587		 */
  1588		set_mems_allowed(node_states[N_MEMORY]);
  1589	
  1590		cad_pid = get_pid(task_pid(current));
  1591	
  1592		smp_prepare_cpus(setup_max_cpus);
  1593	
  1594		workqueue_init();
  1595	
  1596		init_mm_internals();
  1597	
  1598		rcu_init_tasks_generic();
  1599		do_pre_smp_initcalls();
  1600		lockup_detector_init();
  1601	
  1602		smp_init();
  1603		sched_init_smp();
  1604	
  1605		padata_init();
  1606		page_alloc_init_late();
  1607		/* Initialize page ext after all struct pages are initialized. */
  1608		page_ext_init();
  1609	
  1610		do_basic_setup();
  1611	
  1612		kunit_run_all_tests();
  1613	
  1614		wait_for_initramfs();
  1615	
  1616		/*
  1617		 * check if there is an early userspace init.  If yes, let it do all
  1618		 * the work
  1619		 */
  1620		if (init_eaccess(ramdisk_execute_command) != 0) {
  1621			ramdisk_execute_command = NULL;
  1622			prepare_namespace();
  1623		} else if (IS_ENABLED(CONFIG_DEVTMPFS_MOUNT)) {
> 1624			sys_mkdir("/dev", 0755);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2022-01-17 10:20 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-16 18:36 [PATCH] Wire up CONFIG_DEVTMPFS_MOUNT to initramfs Rob Landley
2022-01-16 22:45 ` kernel test robot
2022-01-16 22:45   ` kernel test robot
2022-01-17 10:20 ` kernel test robot
2022-01-17 10:20   ` kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.