diff options
| author | Dmitry Torokhov <[email protected]> | 2023-05-01 15:20:08 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2023-05-01 15:20:08 -0700 | 
| commit | 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e (patch) | |
| tree | d57f3a63479a07b4e0cece029886e76e04feb984 /kernel/kexec_file.c | |
| parent | 5dc63e56a9cf8df0b59c234a505a1653f1bdf885 (diff) | |
| parent | 53bea86b5712c7491bb3dae12e271666df0a308c (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.4 merge window.
Diffstat (limited to 'kernel/kexec_file.c')
| -rw-r--r-- | kernel/kexec_file.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c index dd5983010b7b..f1a0e4e3fb5c 100644 --- a/kernel/kexec_file.c +++ b/kernel/kexec_file.c @@ -326,11 +326,13 @@ SYSCALL_DEFINE5(kexec_file_load, int, kernel_fd, int, initrd_fd,  		unsigned long, cmdline_len, const char __user *, cmdline_ptr,  		unsigned long, flags)  { -	int ret = 0, i; +	int image_type = (flags & KEXEC_FILE_ON_CRASH) ? +			 KEXEC_TYPE_CRASH : KEXEC_TYPE_DEFAULT;  	struct kimage **dest_image, *image; +	int ret = 0, i;  	/* We only trust the superuser with rebooting the system. */ -	if (!capable(CAP_SYS_BOOT) || kexec_load_disabled) +	if (!kexec_load_permitted(image_type))  		return -EPERM;  	/* Make sure we have a legal set of flags */ @@ -342,11 +344,12 @@ SYSCALL_DEFINE5(kexec_file_load, int, kernel_fd, int, initrd_fd,  	if (!kexec_trylock())  		return -EBUSY; -	dest_image = &kexec_image; -	if (flags & KEXEC_FILE_ON_CRASH) { +	if (image_type == KEXEC_TYPE_CRASH) {  		dest_image = &kexec_crash_image;  		if (kexec_crash_image)  			arch_kexec_unprotect_crashkres(); +	} else { +		dest_image = &kexec_image;  	}  	if (flags & KEXEC_FILE_UNLOAD)  |