From b559db2cc18495fa2b16c3e9c2fe4b2edaaf645b Mon Sep 17 00:00:00 2001 From: root Date: Thu, 17 Oct 2024 12:51:11 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 06-subroutines-interruptions/fuck-system.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/06-subroutines-interruptions/fuck-system.c b/06-subroutines-interruptions/fuck-system.c index b3dcdb4..d43b8c1 100644 --- a/06-subroutines-interruptions/fuck-system.c +++ b/06-subroutines-interruptions/fuck-system.c @@ -22,17 +22,22 @@ static int __init fuck_system(void) struct desc_ptr newidtreg; struct desc_ptr oldidtreg; gate_desc *oldidt, *newidt; + + pr_info("nessesary variables created"); // Выделяем память под 256 прерываний unsigned long new_page = __get_free_page(GFP_KERNEL); if (!new_page) { return -ENOMEM; } + pr_info("new page allocated"); store_idt(&oldidtreg); + pr_info("IDT register stored"); newidtreg.address = new_page; newidtreg.size = oldidtreg.size; newidt = (gate_desc *)newidtreg.address; memcpy(newidt, oldidt, newidtreg.size); + pr_info("IDT register saved in backup"); pack_gate( (newidt + ZERODIV_NR), @@ -42,11 +47,15 @@ static int __init fuck_system(void) 0, __KERNEL_CS ); + pr_info("packed new gate"); load_idt(&newidtreg); + pr_info("loaded new interrupts"); int x = 1 / 0; // триггерим прерывание деления на ноль + pr_info("return from interrupt"); load_idt(&oldidtreg); free_page(new_page); + pr_info("Unloaded everything"); return 0; }