[PATCH v2] init/main.c: add warning when file specified in rdinit is inaccessible

Lillian Berry posted 1 patch 3 months ago
There is a newer version of this series
init/main.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
[PATCH v2] init/main.c: add warning when file specified in rdinit is inaccessible
Posted by Lillian Berry 3 months ago
Avoid silently ignoring the initramfs when the file specified in rdinit
is not usable. This prints an error that clearly explains the issue
(file was not found, vs initramfs was not found).

Signed-off-by: Lillian Berry <lillian@star-ark.net>
---
 init/main.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/init/main.c b/init/main.c
index 225a58279acd..84090c2099ff 100644
--- a/init/main.c
+++ b/init/main.c
@@ -1592,7 +1592,10 @@ static noinline void __init kernel_init_freeable(void)
 	 * check if there is an early userspace init.  If yes, let it do all
 	 * the work
 	 */
-	if (init_eaccess(ramdisk_execute_command) != 0) {
+	int ramdisk_command_access = init_eaccess(ramdisk_execute_command);
+	if (ramdisk_command_access != 0) {
+		pr_warn("rdinit=%s is inaccessible or does not exist (errno %i), ignoring\n",
+			ramdisk_execute_command, ramdisk_command_access);
 		ramdisk_execute_command = NULL;
 		prepare_namespace();
 	}
-- 
2.48.1
Re: [PATCH v2] init/main.c: add warning when file specified in rdinit is inaccessible
Posted by Andrew Morton 3 months ago
On Sun,  6 Jul 2025 20:57:38 +0000 Lillian Berry <lillian@star-ark.net> wrote:

> Avoid silently ignoring the initramfs when the file specified in rdinit
> is not usable. This prints an error that clearly explains the issue
> (file was not found, vs initramfs was not found).
> 
> ...
>
> --- a/init/main.c
> +++ b/init/main.c
> @@ -1592,7 +1592,10 @@ static noinline void __init kernel_init_freeable(void)
>  	 * check if there is an early userspace init.  If yes, let it do all
>  	 * the work
>  	 */
> -	if (init_eaccess(ramdisk_execute_command) != 0) {
> +	int ramdisk_command_access = init_eaccess(ramdisk_execute_command);

hm, the C99-style definition is acceptable nowadays, but is rarely used.

> +	if (ramdisk_command_access != 0) {
> +		pr_warn("rdinit=%s is inaccessible or does not exist (errno %i), ignoring\n",
> +			ramdisk_execute_command, ramdisk_command_access);

Again, I don't think we should assume (or say) "inaccessible or does not
exist".  After all, init_eaccess() could have returned -ENOMEM. 
Something like "access(%s) failed: %d", maybe.
Re: [PATCH v2] init/main.c: add warning when file specified in rdinit is inaccessible
Posted by Lillian Berry 3 months ago
On Sun, Jul 6, 2025, at 6:32 PM, Andrew Morton wrote:
>> +	if (ramdisk_command_access != 0) {
>> +		pr_warn("rdinit=%s is inaccessible or does not exist (errno %i), ignoring\n",
>> +			ramdisk_execute_command, ramdisk_command_access);
>
> Again, I don't think we should assume (or say) "inaccessible or does not
> exist".  After all, init_eaccess() could have returned -ENOMEM. 
> Something like "access(%s) failed: %d", maybe.

Sorry, I must've misunderstood your previous mail. I'll change the
message to be more generic.

Kindly,
Lillian