Pull EFI fixes from Ard Biesheuvel: "A couple of fixes for EFI regressions introduced this cycle: - Make EDID handling in the EFI stub mixed mode safe - Ensure that efi_mm.user_ns has a sane value - this is needed now that EFI runtime calls are preemptible on arm64" * tag 'efi-fixes-for-v6.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi: kthread: Warn if mm_struct lacks user_ns in kthread_use_mm() arm64: efi: Fix NULL pointer dereference by initializing user_ns efi/libstub: gop: Fix EDID support in mixed-mode
Unified · Split
| @@ -73,6 +73,7 @@ struct mm_struct efi_mm = { · 72 unmodified lines | |||
| 73 | MMAP_LOCK_INITIALIZER(efi_mm) | 73 | MMAP_LOCK_INITIALIZER(efi_mm) |
| 74 | .page_table_lock = __SPIN_LOCK_UNLOCKED(efi_mm.page_table_lock), | 74 | .page_table_lock = __SPIN_LOCK_UNLOCKED(efi_mm.page_table_lock), |
| 75 | .mmlist = LIST_HEAD_INIT(efi_mm.mmlist), | 75 | .mmlist = LIST_HEAD_INIT(efi_mm.mmlist), |
| 76 | .user_ns = &init_user_ns, | ||
| 76 | .cpu_bitmap = { [BITS_TO_LONGS(NR_CPUS)] = 0}, | 77 | .cpu_bitmap = { [BITS_TO_LONGS(NR_CPUS)] = 0}, |
| 77 | #ifdef CONFIG_SCHED_MM_CID | 78 | #ifdef CONFIG_SCHED_MM_CID |
| 78 | .mm_cid.lock = __RAW_SPIN_LOCK_UNLOCKED(efi_mm.mm_cid.lock), | 79 | .mm_cid.lock = __RAW_SPIN_LOCK_UNLOCKED(efi_mm.mm_cid.lock), |
| @@ -513,15 +513,15 @@ efi_status_t efi_setup_graphics(struct screen_info *si, struct edid_info *edid) · 512 unmodified lines | |||
| 513 | status = efi_bs_call(handle_protocol, handle, &EFI_EDID_ACTIVE_PROTOCOL_GUID, | 513 | status = efi_bs_call(handle_protocol, handle, &EFI_EDID_ACTIVE_PROTOCOL_GUID, |
| 514 | (void **)&active_edid); | 514 | (void **)&active_edid); |
| 515 | if (status == EFI_SUCCESS) { | 515 | if (status == EFI_SUCCESS) { |
| 516 | gop_size_of_edid = active_edid->size_of_edid; | 516 | gop_size_of_edid = efi_table_attr(active_edid, size_of_edid); |
| 517 | gop_edid = active_edid->edid; | 517 | gop_edid = efi_table_attr(active_edid, edid); |
| 518 | } else { | 518 | } else { |
| 519 | status = efi_bs_call(handle_protocol, handle, | 519 | status = efi_bs_call(handle_protocol, handle, |
| 520 | &EFI_EDID_DISCOVERED_PROTOCOL_GUID, | 520 | &EFI_EDID_DISCOVERED_PROTOCOL_GUID, |
| 521 | (void **)&discovered_edid); | 521 | (void **)&discovered_edid); |
| 522 | if (status == EFI_SUCCESS) { | 522 | if (status == EFI_SUCCESS) { |
| 523 | gop_size_of_edid = discovered_edid->size_of_edid; | 523 | gop_size_of_edid = efi_table_attr(discovered_edid, size_of_edid); |
| 524 | gop_edid = discovered_edid->edid; | 524 | gop_edid = efi_table_attr(discovered_edid, edid); |
| 525 | } | 525 | } |
| 526 | } | 526 | } |
| 527 | 527 | ||
| @@ -1599,6 +1599,7 @@ void kthread_use_mm(struct mm_struct *mm) · 1598 unmodified lines | |||
| 1599 | 1599 | ||
| 1600 | WARN_ON_ONCE(!(tsk->flags & PF_KTHREAD)); | 1600 | WARN_ON_ONCE(!(tsk->flags & PF_KTHREAD)); |
| 1601 | WARN_ON_ONCE(tsk->mm); | 1601 | WARN_ON_ONCE(tsk->mm); |
| 1602 | WARN_ON_ONCE(!mm->user_ns); | ||
| 1602 | 1603 | ||
| 1603 | /* | 1604 | /* |
| 1604 | * It is possible for mm to be the same as tsk->active_mm, but | 1605 | * It is possible for mm to be the same as tsk->active_mm, but |