lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 22 Sep 2008 19:58:39 -0700 From: Arjan van de Ven <arjan@...radead.org> To: Arjan van de Ven <arjan@...radead.org> Cc: linux-kernel@...r.kernel.org, mingo@...e.hu, Hugh Dickins <hugh@...itas.com>, Jeremy Fitzhardinge <jeremy.fitzhardinge@...rix.com>, "Randy.Dunlap" <rdunlap@...otime.net> Subject: [PATCH 2/2] corruption check: run the corruption checks from a work queue >From adf881d00dc1b5a0e9961ecb08dc37ee4973a900 Mon Sep 17 00:00:00 2001 From: Arjan van de Ven <arjan@...ux.intel.com> Date: Mon, 22 Sep 2008 13:42:15 -0700 Subject: [PATCH] corruption check: run the corruption checks from a work queue the corruption checks are better off run from a work queue; there's nothing time critical about them and this way the amount of interrupt-context work is reduced. Signed-off-by: Arjan van de Ven <arjan@...ux.intel.com> --- arch/x86/kernel/corruptioncheck.c | 22 ++++++++++++++++++---- arch/x86/mm/init_32.c | 2 -- arch/x86/mm/init_64.c | 2 -- include/linux/kernel.h | 2 +- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/arch/x86/kernel/corruptioncheck.c b/arch/x86/kernel/corruptioncheck.c index ce491b6..1b63f56 100644 --- a/arch/x86/kernel/corruptioncheck.c +++ b/arch/x86/kernel/corruptioncheck.c @@ -1,5 +1,6 @@ #include <linux/module.h> #include <linux/sched.h> +#include <linux/kthread.h> #include <asm/e820.h> #include <asm/proto.h> @@ -135,23 +136,36 @@ void check_for_bios_corruption(void) WARN(corruption, KERN_ERR "Memory corruption detected in low memory\n"); } -static void periodic_check_for_corruption(unsigned long data) +static void check_corruption(struct work_struct *dummy) { check_for_bios_corruption(); +} + +static void periodic_check_for_corruption(unsigned long data) +{ + static DECLARE_WORK(corruptioncheck_work, check_corruption); + schedule_work(&corruptioncheck_work); mod_timer(&periodic_check_timer, round_jiffies(jiffies + corruption_check_period*HZ)); } -void start_periodic_check_for_corruption(void) + + +int start_periodic_check_for_corruption(void) { if (!memory_corruption_check || corruption_check_period == 0) - return; + return 0; printk(KERN_INFO "Scanning for low memory corruption every %d seconds\n", corruption_check_period); init_timer(&periodic_check_timer); periodic_check_timer.function = &periodic_check_for_corruption; - periodic_check_for_corruption(0); + mod_timer(&periodic_check_timer, + round_jiffies(jiffies + corruption_check_period*HZ)); + + return 0; } + +module_init(start_periodic_check_for_corruption); #endif diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index b4c3a92..16ea9d0 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c @@ -905,8 +905,6 @@ void __init mem_init(void) int codesize, reservedpages, datasize, initsize; int tmp; - start_periodic_check_for_corruption(); - #ifdef CONFIG_FLATMEM BUG_ON(!mem_map); #endif diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index b565721..b65492e 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c @@ -822,8 +822,6 @@ void __init mem_init(void) { long codesize, reservedpages, datasize, initsize; - start_periodic_check_for_corruption(); - pci_iommu_alloc(); /* clear_bss() already clear the empty_zero_page */ diff --git a/include/linux/kernel.h b/include/linux/kernel.h index a5afee2..01085d2 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -260,7 +260,7 @@ extern int root_mountflags; * able to scatter it around anywhere in the kernel. */ void check_for_bios_corruption(void); -void start_periodic_check_for_corruption(void); +int start_periodic_check_for_corruption(void); #else static inline void check_for_bios_corruption(void) { -- 1.5.5.1 -- Arjan van de Ven Intel Open Source Technology Centre For development, discussion and tips for power savings, visit http://www.lesswatts.org -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists