|
@@ -619,18 +619,16 @@ void __init efi_dump_pagetable(void)
|
|
|
|
|
|
/*
|
|
/*
|
|
* Makes the calling thread switch to/from efi_mm context. Can be used
|
|
* Makes the calling thread switch to/from efi_mm context. Can be used
|
|
- * for SetVirtualAddressMap() i.e. current->active_mm == init_mm as well
|
|
|
|
- * as during efi runtime calls i.e current->active_mm == current_mm.
|
|
|
|
- * We are not mm_dropping()/mm_grabbing() any mm, because we are not
|
|
|
|
- * losing/creating any references.
|
|
|
|
|
|
+ * in a kernel thread and user context. Preemption needs to remain disabled
|
|
|
|
+ * while the EFI-mm is borrowed. mmgrab()/mmdrop() is not used because the mm
|
|
|
|
+ * can not change under us.
|
|
|
|
+ * It should be ensured that there are no concurent calls to this function.
|
|
*/
|
|
*/
|
|
void efi_switch_mm(struct mm_struct *mm)
|
|
void efi_switch_mm(struct mm_struct *mm)
|
|
{
|
|
{
|
|
- task_lock(current);
|
|
|
|
efi_scratch.prev_mm = current->active_mm;
|
|
efi_scratch.prev_mm = current->active_mm;
|
|
current->active_mm = mm;
|
|
current->active_mm = mm;
|
|
switch_mm(efi_scratch.prev_mm, mm, NULL);
|
|
switch_mm(efi_scratch.prev_mm, mm, NULL);
|
|
- task_unlock(current);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_EFI_MIXED
|
|
#ifdef CONFIG_EFI_MIXED
|