Lines Matching refs:info

17 static int module_extend_max_pages(struct load_info *info, unsigned int extent)  in module_extend_max_pages()  argument
21 new_pages = kvmalloc_array(info->max_pages + extent, in module_extend_max_pages()
22 sizeof(info->pages), GFP_KERNEL); in module_extend_max_pages()
26 memcpy(new_pages, info->pages, info->max_pages * sizeof(info->pages)); in module_extend_max_pages()
27 kvfree(info->pages); in module_extend_max_pages()
28 info->pages = new_pages; in module_extend_max_pages()
29 info->max_pages += extent; in module_extend_max_pages()
34 static struct page *module_get_next_page(struct load_info *info) in module_get_next_page() argument
39 if (info->max_pages == info->used_pages) { in module_get_next_page()
40 error = module_extend_max_pages(info, info->used_pages); in module_get_next_page()
49 info->pages[info->used_pages++] = page; in module_get_next_page()
85 static ssize_t module_gzip_decompress(struct load_info *info, in module_gzip_decompress() argument
115 struct page *page = module_get_next_page(info); in module_gzip_decompress()
149 static ssize_t module_xz_decompress(struct load_info *info, in module_xz_decompress() argument
174 struct page *page = module_get_next_page(info); in module_xz_decompress()
207 static ssize_t module_zstd_decompress(struct load_info *info, in module_zstd_decompress() argument
258 struct page *page = module_get_next_page(info); in module_zstd_decompress()
294 int module_decompress(struct load_info *info, const void *buf, size_t size) in module_decompress() argument
301 info->compressed_len = size; in module_decompress()
309 error = module_extend_max_pages(info, n_pages); in module_decompress()
311 data_size = MODULE_DECOMPRESS_FN(info, buf, size); in module_decompress()
317 info->hdr = vmap(info->pages, info->used_pages, VM_MAP, PAGE_KERNEL); in module_decompress()
318 if (!info->hdr) { in module_decompress()
323 info->len = data_size; in module_decompress()
327 module_decompress_cleanup(info); in module_decompress()
331 void module_decompress_cleanup(struct load_info *info) in module_decompress_cleanup() argument
335 if (info->hdr) in module_decompress_cleanup()
336 vunmap(info->hdr); in module_decompress_cleanup()
338 for (i = 0; i < info->used_pages; i++) in module_decompress_cleanup()
339 __free_page(info->pages[i]); in module_decompress_cleanup()
341 kvfree(info->pages); in module_decompress_cleanup()
343 info->pages = NULL; in module_decompress_cleanup()
344 info->max_pages = info->used_pages = 0; in module_decompress_cleanup()