diff options
| author | Rob Clark <robdclark@chromium.org> | 2021-12-06 09:13:49 -0800 |
|---|---|---|
| committer | Rob Clark <robdclark@chromium.org> | 2021-12-06 09:14:28 -0800 |
| commit | 83b965d118cbab1dbdfffdff8cabc8c1cfd183c6 (patch) | |
| tree | f46a8f6d854b05a47311125f6fd6b6081e79557a /arch/s390/kernel/machine_kexec_file.c | |
| parent | fee32807633395e666f0951d6b7b6546e9b76c3d (diff) | |
| parent | c305ae99dfd4d0fe70c7fdf13ef5f7650a804ea7 (diff) | |
| download | linux-83b965d118cbab1dbdfffdff8cabc8c1cfd183c6.tar.gz linux-83b965d118cbab1dbdfffdff8cabc8c1cfd183c6.tar.bz2 linux-83b965d118cbab1dbdfffdff8cabc8c1cfd183c6.zip | |
Merge remote-tracking branch 'drm/drm-next' into msm-next-staging
Backmerge drm-next to pull in:
8f59ee9a570c ("drm/msm/dsi: Adjust probe order")
Signed-off-by: Rob Clark <robdclark@chromium.org>
Diffstat (limited to 'arch/s390/kernel/machine_kexec_file.c')
| -rw-r--r-- | arch/s390/kernel/machine_kexec_file.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/arch/s390/kernel/machine_kexec_file.c b/arch/s390/kernel/machine_kexec_file.c index 528edff085d9..9975ad200d74 100644 --- a/arch/s390/kernel/machine_kexec_file.c +++ b/arch/s390/kernel/machine_kexec_file.c @@ -12,6 +12,7 @@ #include <linux/kexec.h> #include <linux/module_signature.h> #include <linux/verification.h> +#include <linux/vmalloc.h> #include <asm/boot_data.h> #include <asm/ipl.h> #include <asm/setup.h> @@ -170,6 +171,7 @@ static int kexec_file_add_ipl_report(struct kimage *image, struct kexec_buf buf; unsigned long addr; void *ptr, *end; + int ret; buf.image = image; @@ -199,9 +201,13 @@ static int kexec_file_add_ipl_report(struct kimage *image, ptr += len; } + ret = -ENOMEM; buf.buffer = ipl_report_finish(data->report); + if (!buf.buffer) + goto out; buf.bufsz = data->report->size; buf.memsz = buf.bufsz; + image->arch.ipl_buf = buf.buffer; data->memsz += buf.memsz; @@ -209,7 +215,9 @@ static int kexec_file_add_ipl_report(struct kimage *image, data->kernel_buf + offsetof(struct lowcore, ipl_parmblock_ptr); *lc_ipl_parmblock_ptr = (__u32)buf.mem; - return kexec_add_buffer(&buf); + ret = kexec_add_buffer(&buf); +out: + return ret; } void *kexec_file_add_components(struct kimage *image, @@ -322,3 +330,11 @@ int arch_kexec_apply_relocations_add(struct purgatory_info *pi, } return 0; } + +int arch_kimage_file_post_load_cleanup(struct kimage *image) +{ + vfree(image->arch.ipl_buf); + image->arch.ipl_buf = NULL; + + return kexec_image_post_load_cleanup_default(image); +} |
