Lines Matching refs:ldt
109 if (mm->context.ldt) { in do_sanity_check()
159 if (boot_cpu_has(X86_FEATURE_PTI) && !mm->context.ldt) in map_ldt_struct_to_user()
184 if (boot_cpu_has(X86_FEATURE_PTI) && !mm->context.ldt) in map_ldt_struct_to_user()
204 map_ldt_struct(struct mm_struct *mm, struct ldt_struct *ldt, int slot) in map_ldt_struct() argument
218 WARN_ON(ldt->slot != -1); in map_ldt_struct()
223 is_vmalloc = is_vmalloc_addr(ldt->entries); in map_ldt_struct()
225 nr_pages = DIV_ROUND_UP(ldt->nr_entries * LDT_ENTRY_SIZE, PAGE_SIZE); in map_ldt_struct()
229 const void *src = (char *)ldt->entries + offset; in map_ldt_struct()
261 ldt->slot = slot; in map_ldt_struct()
265 static void unmap_ldt_struct(struct mm_struct *mm, struct ldt_struct *ldt) in unmap_ldt_struct() argument
270 if (!ldt) in unmap_ldt_struct()
277 nr_pages = DIV_ROUND_UP(ldt->nr_entries * LDT_ENTRY_SIZE, PAGE_SIZE); in unmap_ldt_struct()
284 va = (unsigned long)ldt_slot_va(ldt->slot) + offset; in unmap_ldt_struct()
290 va = (unsigned long)ldt_slot_va(ldt->slot); in unmap_ldt_struct()
297 map_ldt_struct(struct mm_struct *mm, struct ldt_struct *ldt, int slot) in map_ldt_struct() argument
302 static void unmap_ldt_struct(struct mm_struct *mm, struct ldt_struct *ldt) in unmap_ldt_struct() argument
324 static void finalize_ldt_struct(struct ldt_struct *ldt) in finalize_ldt_struct() argument
326 paravirt_alloc_ldt(ldt->entries, ldt->nr_entries); in finalize_ldt_struct()
329 static void install_ldt(struct mm_struct *mm, struct ldt_struct *ldt) in install_ldt() argument
334 smp_store_release(&mm->context.ldt, ldt); in install_ldt()
342 static void free_ldt_struct(struct ldt_struct *ldt) in free_ldt_struct() argument
344 if (likely(!ldt)) in free_ldt_struct()
347 paravirt_free_ldt(ldt->entries, ldt->nr_entries); in free_ldt_struct()
348 if (ldt->nr_entries * LDT_ENTRY_SIZE > PAGE_SIZE) in free_ldt_struct()
349 vfree_atomic(ldt->entries); in free_ldt_struct()
351 free_page((unsigned long)ldt->entries); in free_ldt_struct()
352 kfree(ldt); in free_ldt_struct()
368 if (!old_mm->context.ldt) in ldt_dup_context()
371 new_ldt = alloc_ldt_struct(old_mm->context.ldt->nr_entries); in ldt_dup_context()
377 memcpy(new_ldt->entries, old_mm->context.ldt->entries, in ldt_dup_context()
387 mm->context.ldt = new_ldt; in ldt_dup_context()
401 free_ldt_struct(mm->context.ldt); in destroy_context_ldt()
402 mm->context.ldt = NULL; in destroy_context_ldt()
418 if (!mm->context.ldt) { in read_ldt()
426 entries_size = mm->context.ldt->nr_entries * LDT_ENTRY_SIZE; in read_ldt()
430 if (copy_to_user(ptr, mm->context.ldt->entries, entries_size)) { in read_ldt()
470 struct desc_struct ldt; in write_ldt() local
493 memset(&ldt, 0, sizeof(ldt)); in write_ldt()
500 fill_ldt(&ldt, &ldt_info); in write_ldt()
502 ldt.avl = 0; in write_ldt()
508 old_ldt = mm->context.ldt; in write_ldt()
520 new_ldt->entries[ldt_info.entry_number] = ldt; in write_ldt()