Lines Matching refs:image
34 static int kexec_calculate_store_digests(struct kimage *image);
96 int __weak arch_kexec_kernel_image_probe(struct kimage *image, void *buf, in arch_kexec_kernel_image_probe() argument
102 void * __weak arch_kexec_kernel_image_load(struct kimage *image) in arch_kexec_kernel_image_load() argument
107 int __weak arch_kimage_file_post_load_cleanup(struct kimage *image) in arch_kimage_file_post_load_cleanup() argument
112 int __weak arch_kexec_kernel_verify_sig(struct kimage *image, void *buf, in arch_kexec_kernel_verify_sig() argument
141 void kimage_file_post_load_cleanup(struct kimage *image) in kimage_file_post_load_cleanup() argument
143 struct purgatory_info *pi = &image->purgatory_info; in kimage_file_post_load_cleanup()
145 vfree(image->kernel_buf); in kimage_file_post_load_cleanup()
146 image->kernel_buf = NULL; in kimage_file_post_load_cleanup()
148 vfree(image->initrd_buf); in kimage_file_post_load_cleanup()
149 image->initrd_buf = NULL; in kimage_file_post_load_cleanup()
151 kfree(image->cmdline_buf); in kimage_file_post_load_cleanup()
152 image->cmdline_buf = NULL; in kimage_file_post_load_cleanup()
161 arch_kimage_file_post_load_cleanup(image); in kimage_file_post_load_cleanup()
168 kfree(image->image_loader_data); in kimage_file_post_load_cleanup()
169 image->image_loader_data = NULL; in kimage_file_post_load_cleanup()
177 kimage_file_prepare_segments(struct kimage *image, int kernel_fd, int initrd_fd, in kimage_file_prepare_segments() argument
184 ret = copy_file_from_fd(kernel_fd, &image->kernel_buf, in kimage_file_prepare_segments()
185 &image->kernel_buf_len); in kimage_file_prepare_segments()
190 ret = arch_kexec_kernel_image_probe(image, image->kernel_buf, in kimage_file_prepare_segments()
191 image->kernel_buf_len); in kimage_file_prepare_segments()
197 ret = arch_kexec_kernel_verify_sig(image, image->kernel_buf, in kimage_file_prepare_segments()
198 image->kernel_buf_len); in kimage_file_prepare_segments()
207 ret = copy_file_from_fd(initrd_fd, &image->initrd_buf, in kimage_file_prepare_segments()
208 &image->initrd_buf_len); in kimage_file_prepare_segments()
214 image->cmdline_buf = kzalloc(cmdline_len, GFP_KERNEL); in kimage_file_prepare_segments()
215 if (!image->cmdline_buf) { in kimage_file_prepare_segments()
220 ret = copy_from_user(image->cmdline_buf, cmdline_ptr, in kimage_file_prepare_segments()
227 image->cmdline_buf_len = cmdline_len; in kimage_file_prepare_segments()
230 if (image->cmdline_buf[cmdline_len - 1] != '\0') { in kimage_file_prepare_segments()
237 ldata = arch_kexec_kernel_image_load(image); in kimage_file_prepare_segments()
244 image->image_loader_data = ldata; in kimage_file_prepare_segments()
248 kimage_file_post_load_cleanup(image); in kimage_file_prepare_segments()
258 struct kimage *image; in kimage_file_alloc_init() local
261 image = do_kimage_alloc_init(); in kimage_file_alloc_init()
262 if (!image) in kimage_file_alloc_init()
265 image->file_mode = 1; in kimage_file_alloc_init()
269 image->control_page = crashk_res.start; in kimage_file_alloc_init()
270 image->type = KEXEC_TYPE_CRASH; in kimage_file_alloc_init()
273 ret = kimage_file_prepare_segments(image, kernel_fd, initrd_fd, in kimage_file_alloc_init()
278 ret = sanity_check_segment_list(image); in kimage_file_alloc_init()
283 image->control_code_page = kimage_alloc_control_pages(image, in kimage_file_alloc_init()
285 if (!image->control_code_page) { in kimage_file_alloc_init()
291 image->swap_page = kimage_alloc_control_pages(image, 0); in kimage_file_alloc_init()
292 if (!image->swap_page) { in kimage_file_alloc_init()
298 *rimage = image; in kimage_file_alloc_init()
301 kimage_free_page_list(&image->control_pages); in kimage_file_alloc_init()
303 kimage_file_post_load_cleanup(image); in kimage_file_alloc_init()
305 kfree(image); in kimage_file_alloc_init()
314 struct kimage **dest_image, *image; in SYSCALL_DEFINE5() local
324 image = NULL; in SYSCALL_DEFINE5()
344 ret = kimage_file_alloc_init(&image, kernel_fd, initrd_fd, cmdline_ptr, in SYSCALL_DEFINE5()
349 ret = machine_kexec_prepare(image); in SYSCALL_DEFINE5()
353 ret = kexec_calculate_store_digests(image); in SYSCALL_DEFINE5()
357 for (i = 0; i < image->nr_segments; i++) { in SYSCALL_DEFINE5()
360 ksegment = &image->segment[i]; in SYSCALL_DEFINE5()
365 ret = kimage_load_segment(image, &image->segment[i]); in SYSCALL_DEFINE5()
370 kimage_terminate(image); in SYSCALL_DEFINE5()
376 kimage_file_post_load_cleanup(image); in SYSCALL_DEFINE5()
378 image = xchg(dest_image, image); in SYSCALL_DEFINE5()
381 kimage_free(image); in SYSCALL_DEFINE5()
388 struct kimage *image = kbuf->image; in locate_mem_hole_top_down() local
407 if (kimage_is_destination_range(image, temp_start, temp_end)) { in locate_mem_hole_top_down()
426 struct kimage *image = kbuf->image; in locate_mem_hole_bottom_up() local
441 if (kimage_is_destination_range(image, temp_start, temp_end)) { in locate_mem_hole_bottom_up()
482 int kexec_add_buffer(struct kimage *image, char *buffer, unsigned long bufsz, in kexec_add_buffer() argument
493 if (!image->file_mode) in kexec_add_buffer()
496 if (image->nr_segments >= KEXEC_SEGMENT_MAX) in kexec_add_buffer()
506 if (!list_empty(&image->control_pages)) { in kexec_add_buffer()
513 kbuf->image = image; in kexec_add_buffer()
524 if (image->type == KEXEC_TYPE_CRASH) in kexec_add_buffer()
538 ksegment = &image->segment[image->nr_segments]; in kexec_add_buffer()
543 image->nr_segments++; in kexec_add_buffer()
549 static int kexec_calculate_store_digests(struct kimage *image) in kexec_calculate_store_digests() argument
558 struct purgatory_info *pi = &image->purgatory_info; in kexec_calculate_store_digests()
594 for (j = i = 0; i < image->nr_segments; i++) { in kexec_calculate_store_digests()
597 ksegment = &image->segment[i]; in kexec_calculate_store_digests()
638 ret = kexec_purgatory_get_set_symbol(image, "sha_regions", in kexec_calculate_store_digests()
643 ret = kexec_purgatory_get_set_symbol(image, "sha256_digest", in kexec_calculate_store_digests()
662 static int __kexec_load_purgatory(struct kimage *image, unsigned long min, in __kexec_load_purgatory() argument
665 struct purgatory_info *pi = &image->purgatory_info; in __kexec_load_purgatory()
780 ret = kexec_add_buffer(image, purgatory_buf, buf_sz, memsz, in __kexec_load_purgatory()
826 image->start = entry; in __kexec_load_purgatory()
843 static int kexec_apply_relocations(struct kimage *image) in kexec_apply_relocations() argument
846 struct purgatory_info *pi = &image->purgatory_info; in kexec_apply_relocations()
899 int kexec_load_purgatory(struct kimage *image, unsigned long min, in kexec_load_purgatory() argument
903 struct purgatory_info *pi = &image->purgatory_info; in kexec_load_purgatory()
925 ret = __kexec_load_purgatory(image, min, max, top_down); in kexec_load_purgatory()
929 ret = kexec_apply_relocations(image); in kexec_load_purgatory()
989 void *kexec_purgatory_get_symbol_addr(struct kimage *image, const char *name) in kexec_purgatory_get_symbol_addr() argument
991 struct purgatory_info *pi = &image->purgatory_info; in kexec_purgatory_get_symbol_addr()
1012 int kexec_purgatory_get_set_symbol(struct kimage *image, const char *name, in kexec_purgatory_get_set_symbol() argument
1017 struct purgatory_info *pi = &image->purgatory_info; in kexec_purgatory_get_set_symbol()