diff options
author | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2012-11-12 15:28:39 +0100 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2012-11-12 15:28:39 +0100 |
commit | f987e832a9e79d2ce8009a5ea9c7b677624b3b30 (patch) | |
tree | 0dd09a5e6b4c60ee0a9916907dfc2cda83f3e496 /mm/failslab.c | |
parent | f737b7f46a72c099cf8ac88baff02fbf61b1a47c (diff) | |
parent | fc993d9bc48f772133d8cd156c67c296477db070 (diff) |
Merge branch 'l4t/l4t-r16-r2' into colibri
Conflicts:
arch/arm/mach-tegra/tegra3_usb_phy.c
arch/arm/mach-tegra/usb_phy.c
drivers/usb/gadget/tegra_udc.c
drivers/usb/otg/Makefile
drivers/video/tegra/fb.c
sound/soc/tegra/tegra_pcm.c
Diffstat (limited to 'mm/failslab.c')
-rw-r--r-- | mm/failslab.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/mm/failslab.c b/mm/failslab.c index 0dd7b8fec71c..49598688c44f 100644 --- a/mm/failslab.c +++ b/mm/failslab.c @@ -5,14 +5,29 @@ static struct { struct fault_attr attr; u32 ignore_gfp_wait; int cache_filter; + u32 size; } failslab = { .attr = FAULT_ATTR_INITIALIZER, .ignore_gfp_wait = 1, .cache_filter = 0, + .size = 0, }; +static void fail_dump(struct fault_attr *attr) +{ + if (attr->verbose > 0) + printk(KERN_NOTICE "FAULT_INJECTION: forcing a failure\n"); + if (attr->verbose > 1) + dump_stack(); +} + bool should_failslab(size_t size, gfp_t gfpflags, unsigned long cache_flags) { + if (failslab.size && size > failslab.size) { + fail_dump(&failslab.attr); + return true; + } + if (gfpflags & __GFP_NOFAIL) return false; @@ -48,6 +63,10 @@ static int __init failslab_debugfs_init(void) &failslab.cache_filter)) goto fail; + if (!debugfs_create_u32("size", mode, dir, + &failslab.size)) + goto fail; + return 0; fail: debugfs_remove_recursive(dir); |