aboutsummaryrefslogtreecommitdiffstats
path: root/mm/slub.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/slub.c')
-rw-r--r--mm/slub.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/mm/slub.c b/mm/slub.c
index 3e8afcc07a76..fa86e5845093 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -4604,6 +4604,14 @@ static ssize_t trace_show(struct kmem_cache *s, char *buf)
4604static ssize_t trace_store(struct kmem_cache *s, const char *buf, 4604static ssize_t trace_store(struct kmem_cache *s, const char *buf,
4605 size_t length) 4605 size_t length)
4606{ 4606{
4607 /*
4608 * Tracing a merged cache is going to give confusing results
4609 * as well as cause other issues like converting a mergeable
4610 * cache into an umergeable one.
4611 */
4612 if (s->refcount > 1)
4613 return -EINVAL;
4614
4607 s->flags &= ~SLAB_TRACE; 4615 s->flags &= ~SLAB_TRACE;
4608 if (buf[0] == '1') { 4616 if (buf[0] == '1') {
4609 s->flags &= ~__CMPXCHG_DOUBLE; 4617 s->flags &= ~__CMPXCHG_DOUBLE;
@@ -4721,6 +4729,9 @@ static ssize_t failslab_show(struct kmem_cache *s, char *buf)
4721static ssize_t failslab_store(struct kmem_cache *s, const char *buf, 4729static ssize_t failslab_store(struct kmem_cache *s, const char *buf,
4722 size_t length) 4730 size_t length)
4723{ 4731{
4732 if (s->refcount > 1)
4733 return -EINVAL;
4734
4724 s->flags &= ~SLAB_FAILSLAB; 4735 s->flags &= ~SLAB_FAILSLAB;
4725 if (buf[0] == '1') 4736 if (buf[0] == '1')
4726 s->flags |= SLAB_FAILSLAB; 4737 s->flags |= SLAB_FAILSLAB;