提交 e85f2051 编写于 作者: T Thomas Gleixner 提交者: Ingo Molnar

x86: EFI: fix use of unitialized variable and the cache logic

Andi Kleen pointed out that the cache attribute logic is reverse in
efi_enter_virtual_mode(). This problem alone is harmless as we do not
(yet) do cache attribute conflict resolution. (This bug was not present
in the original EFI submission - I introduced it while fixing up rejects.)

While reviewing this code I noticed a second, worse problem: the use of
uninitialized md->virt_addr.

Fix both problems.
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
Signed-off-by: NIngo Molnar <mingo@elte.hu>
上级 5d3c8b21
......@@ -428,9 +428,6 @@ void __init efi_enter_virtual_mode(void)
else
va = efi_ioremap(md->phys_addr, size);
if (md->attribute & EFI_MEMORY_WB)
set_memory_uc(md->virt_addr, size);
md->virt_addr = (u64) (unsigned long) va;
if (!va) {
......@@ -439,6 +436,9 @@ void __init efi_enter_virtual_mode(void)
continue;
}
if (!(md->attribute & EFI_MEMORY_WB))
set_memory_uc(md->virt_addr, size);
systab = (u64) (unsigned long) efi_phys.systab;
if (md->phys_addr <= systab && systab < end) {
systab += md->virt_addr - md->phys_addr;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册