s390/kexec_file: move kernel image size check
In preparation of adding support for command lines with variable sizes on s390, the check whether the new kernel image is at least HEAD_END bytes long isn't correct. Move the check to kexec_file_add_components() so we can get the size of the parm area and check the size there. The '.org HEAD_END' directive can now also be removed from head.S. This was used in the past to reserve space for the early sccb buffer, but with commit 9a5131b87cac1 ("s390/boot: move sclp early buffer from fixed address in asm to C") this is no longer required. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Reviewed-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
This commit is contained in:
parent
6aefbf1cdf
commit
277c838938
|
@ -400,5 +400,3 @@ SYM_DATA_START(parmarea)
|
|||
.byte 0
|
||||
.org PARMAREA+__PARMAREA_SIZE
|
||||
SYM_DATA_END(parmarea)
|
||||
|
||||
.org HEAD_END
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#include <linux/build_bug.h>
|
||||
|
||||
#define PARMAREA 0x10400
|
||||
#define HEAD_END 0x11000
|
||||
|
||||
/*
|
||||
* Machine features detected in early.c
|
||||
|
|
|
@ -227,7 +227,8 @@ void *kexec_file_add_components(struct kimage *image,
|
|||
if (ret)
|
||||
goto out;
|
||||
|
||||
if (image->cmdline_buf_len >= ARCH_COMMAND_LINE_SIZE) {
|
||||
if (image->kernel_buf_len < PARMAREA + sizeof(struct parmarea) ||
|
||||
image->cmdline_buf_len >= ARCH_COMMAND_LINE_SIZE) {
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
@ -307,17 +308,3 @@ int arch_kexec_apply_relocations_add(struct purgatory_info *pi,
|
|||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int arch_kexec_kernel_image_probe(struct kimage *image, void *buf,
|
||||
unsigned long buf_len)
|
||||
{
|
||||
/* A kernel must be at least large enough to contain head.S. During
|
||||
* load memory in head.S will be accessed, e.g. to register the next
|
||||
* command line. If the next kernel were smaller the current kernel
|
||||
* will panic at load.
|
||||
*/
|
||||
if (buf_len < HEAD_END)
|
||||
return -ENOEXEC;
|
||||
|
||||
return kexec_image_probe_default(image, buf, buf_len);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue