summaryrefslogtreecommitdiff
path: root/mm/failslab.c
diff options
context:
space:
mode:
authorRich Felker <dalias@libc.org>2016-03-30 00:53:03 +0300
committerRich Felker <dalias@libc.org>2016-03-30 00:53:03 +0300
commit16b02d711f4059b8338ef967064195b47cae65ea (patch)
tree6d3e0b7629210b56f8d6cfa39184c878d8a15367 /mm/failslab.c
parentb15d53d009558d14c4f394a6d1fa2039c7f45c43 (diff)
parentf55532a0c0b8bb6148f4e07853b876ef73bc69ca (diff)
downloadlinux-16b02d711f4059b8338ef967064195b47cae65ea.tar.xz
Merge tag 'v4.6-rc1'
Linux 4.6-rc1
Diffstat (limited to 'mm/failslab.c')
-rw-r--r--mm/failslab.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/mm/failslab.c b/mm/failslab.c
index 79171b4a5826..b0fac98cd938 100644
--- a/mm/failslab.c
+++ b/mm/failslab.c
@@ -1,5 +1,7 @@
#include <linux/fault-inject.h>
#include <linux/slab.h>
+#include <linux/mm.h>
+#include "slab.h"
static struct {
struct fault_attr attr;
@@ -11,18 +13,22 @@ static struct {
.cache_filter = false,
};
-bool should_failslab(size_t size, gfp_t gfpflags, unsigned long cache_flags)
+bool should_failslab(struct kmem_cache *s, gfp_t gfpflags)
{
+ /* No fault-injection for bootstrap cache */
+ if (unlikely(s == kmem_cache))
+ return false;
+
if (gfpflags & __GFP_NOFAIL)
return false;
if (failslab.ignore_gfp_reclaim && (gfpflags & __GFP_RECLAIM))
return false;
- if (failslab.cache_filter && !(cache_flags & SLAB_FAILSLAB))
+ if (failslab.cache_filter && !(s->flags & SLAB_FAILSLAB))
return false;
- return should_fail(&failslab.attr, size);
+ return should_fail(&failslab.attr, s->object_size);
}
static int __init setup_failslab(char *str)