git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'linus' into cont_syslog
[safe/jmp/linux-2.6]
/
mm
/
hwpoison-inject.c
diff --git
a/mm/hwpoison-inject.c
b/mm/hwpoison-inject.c
index
c838735
..
10ea719
100644
(file)
--- a/
mm/hwpoison-inject.c
+++ b/
mm/hwpoison-inject.c
@@
-18,6
+18,8
@@
static int hwpoison_inject(void *data, u64 val)
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
+ if (!hwpoison_filter_enable)
+ goto inject;
if (!pfn_valid(pfn))
return -ENXIO;
if (!pfn_valid(pfn))
return -ENXIO;
@@
-29,7
+31,7
@@
static int hwpoison_inject(void *data, u64 val)
return 0;
if (!PageLRU(p))
return 0;
if (!PageLRU(p))
- shake_page(p);
+ shake_page(p
, 0
);
/*
* This implies unable to support non-LRU pages.
*/
/*
* This implies unable to support non-LRU pages.
*/
@@
-48,6
+50,7
@@
static int hwpoison_inject(void *data, u64 val)
if (err)
return 0;
if (err)
return 0;
+inject:
printk(KERN_INFO "Injecting memory failure at pfn %lx\n", pfn);
return __memory_failure(pfn, 18, MF_COUNT_INCREASED);
}
printk(KERN_INFO "Injecting memory failure at pfn %lx\n", pfn);
return __memory_failure(pfn, 18, MF_COUNT_INCREASED);
}
@@
-92,6
+95,11
@@
static int pfn_inject_init(void)
if (!dentry)
goto fail;
if (!dentry)
goto fail;
+ dentry = debugfs_create_u32("corrupt-filter-enable", 0600,
+ hwpoison_dir, &hwpoison_filter_enable);
+ if (!dentry)
+ goto fail;
+
dentry = debugfs_create_u32("corrupt-filter-dev-major", 0600,
hwpoison_dir, &hwpoison_filter_dev_major);
if (!dentry)
dentry = debugfs_create_u32("corrupt-filter-dev-major", 0600,
hwpoison_dir, &hwpoison_filter_dev_major);
if (!dentry)