Skip to contentSkip to conversation

Use .fixup instead of .text.fixup on __kvm_handle_fault_on_reboot

PATCH Applied Eduardo Habkost 2 participants 2 messages Aug 19, 2008 – Aug 21, 2008 KVM

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Use .fixup instead of .text.fixup on __kvm_handle_fault_on_reboot

[oops. sent it to the old kvm-devel list. sending to the right list, now]

vmlinux.lds expects the fixup code to be on a section named .fixup. The .text.fixup section is not mentioned on vmlinux.lds, and is included on the resulting vmlinux (just after .text) only because of ld heuristics on placing orphan sections.

However, placing .text.fixup outside .text breaks the definition of _etext, making it exclude the .text.fixup contents. That makes .text.fixup be ignored by the kernel initialization code that needs to know about section locations, such as the code setting page protection bits.

---
 include/asm-x86/kvm_host.h |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
include/asm-x86/kvm_host.h +1 -1
index 1e28880..982b6b2 100644
@@ -743,7 +743,7 @@ asmlinkage void kvm_handle_fault_on_reboot(void);
 
 #define __kvm_handle_fault_on_reboot(insn) \
 	"666: " insn "\n\t" \
-	".pushsection .text.fixup, \"ax\" \n" \
+	".pushsection .fixup, \"ax\" \n" \
 	"667: \n\t" \
 	__ASM_SIZE(push) " $666b \n\t"	      \
 	"jmp kvm_handle_fault_on_reboot \n\t" \
Signature · 4 lines
1.5.5.GIT

-- 
Eduardo
Applied
#1 lore raw
Quoted 7 lines · Eduardo Habkost

[oops. sent it to the old kvm-devel list. sending to the right list, now]

vmlinux.lds expects the fixup code to be on a section named .fixup. The .text.fixup section is not mentioned on vmlinux.lds, and is included on the resulting vmlinux (just after .text) only because of ld heuristics on placing orphan sections.

Quoted 6 lines

However, placing .text.fixup outside .text breaks the definition of _etext, making it exclude the .text.fixup contents. That makes .text.fixup be ignored by the kernel initialization code that needs to know about section locations, such as the code setting page protection bits.

Applied, thanks.

Signature · 1 line
error compiling committee.c: too many arguments to function