Messages in this thread Patch in this message | | | Date | Thu, 28 May 2020 16:53:18 +0200 | From | Thomas Gleixner <> | Subject | [patch 3/5] x86/idt: Use proper constants for table sizes |
| |
Use the actual struct size to calculate the IDT table sizes instead of two different hardcoded values.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- arch/x86/kernel/idt.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)
--- a/arch/x86/kernel/idt.c +++ b/arch/x86/kernel/idt.c @@ -51,6 +51,8 @@ struct idt_data { #define TSKG(_vector, _gdt) \ G(_vector, NULL, DEFAULT_STACK, GATE_TASK, DPL0, _gdt << 3) +#define IDT_TABLE_SIZE (IDT_ENTRIES * sizeof(gate_desc)) +#define IDT_DEBUG_TABLE_SIZE (16 * sizeof(gate_desc)) static bool idt_setup_done __initdata; @@ -176,7 +178,7 @@ static const __initconst struct idt_data gate_desc idt_table[IDT_ENTRIES] __page_aligned_bss; struct desc_ptr idt_descr __ro_after_init = { - .size = (IDT_ENTRIES * 2 * sizeof(unsigned long)) - 1, + .size = IDT_TABLE_SIZE - 1, .address = (unsigned long) idt_table, }; @@ -202,7 +204,7 @@ static const __initconst struct idt_data * stack set to DEFAULT_STACK (0). Required for NMI trap handling. */ const struct desc_ptr debug_idt_descr = { - .size = IDT_ENTRIES * 16 - 1, + .size = IDT_DEBUG_TABLE_SIZE - 1, .address = (unsigned long) debug_idt_table, }; #endif @@ -304,9 +306,10 @@ void __init idt_setup_ist_traps(void) */ void __init idt_setup_debugidt_traps(void) { - memcpy(&debug_idt_table, &idt_table, IDT_ENTRIES * 16); + memcpy(&debug_idt_table, &idt_table, IDT_DEBUG_TABLE_SIZE); - idt_setup_from_table(debug_idt_table, dbg_idts, ARRAY_SIZE(dbg_idts), false); + idt_setup_from_table(debug_idt_table, dbg_idts, ARRAY_SIZE(dbg_idts), + false); } #endif
| |