From: Mike Rapoport <rppt@kernel•org>
To: Andrew Morton <akpm@linux-foundation•org>
Cc: David Hildenbrand <david@redhat•com>,
Peter Zijlstra <peterz@infradead•org>,
Dave Hansen <dave.hansen@linux•intel.com>,
linux-mm@kvack•org, Paul Mackerras <paulus@samba•org>,
Pavel Machek <pavel@ucw•cz>, "H. Peter Anvin" <hpa@zytor•com>,
sparclinux@vger•kernel.org, Christoph Lameter <cl@linux•com>,
Will Deacon <will@kernel•org>,
linux-riscv@lists•infradead.org, linux-s390@vger•kernel.org,
x86@kernel•org, Mike Rapoport <rppt@linux•ibm.com>,
Christian Borntraeger <borntraeger@de•ibm.com>,
Ingo Molnar <mingo@redhat•com>,
linux-arm-kernel@lists•infradead.org,
Catalin Marinas <catalin.marinas@arm•com>,
Len Brown <len.brown@intel•com>,
Albert Ou <aou@eecs•berkeley.edu>,
Vasily Gorbik <gor@linux•ibm.com>,
linux-pm@vger•kernel.org, Heiko Carstens <hca@linux•ibm.com>,
David Rientjes <rientjes@google•com>,
Borislav Petkov <bp@alien8•de>, Andy Lutomirski <luto@kernel•org>,
Paul Walmsley <paul.walmsley@sifive•com>,
"Kirill A. Shutemov" <kirill@shutemov•name>,
Thomas Gleixner <tglx@linutronix•de>,
Vlastimil Babka <vbabka@suse•cz>,
"Rafael J. Wysocki" <rjw@rjwysocki•net>,
linux-kernel@vger•kernel.org, Pekka Enberg <penberg@kernel•org>,
Palmer Dabbelt <palmer@dabbelt•com>,
"Kirill A . Shutemov" <kirill.shutemov@linux•intel.com>,
Joonsoo Kim <iamjoonsoo.kim@lge•com>,
"Edgecombe, Rick P" <rick.p.edgecombe@intel•com>,
linuxppc-dev@lists•ozlabs.org,
"David S. Miller" <davem@davemloft•net>,
Mike Rapoport <rppt@kernel•org>
Subject: [PATCH v5 2/5] slab: debug: split slab_kernel_map() to map and unmap variants
Date: Sun, 8 Nov 2020 08:57:55 +0200 [thread overview]
Message-ID: <20201108065758.1815-3-rppt@kernel.org> (raw)
In-Reply-To: <20201108065758.1815-1-rppt@kernel.org>
From: Mike Rapoport <rppt@linux•ibm.com>
Instead of using slab_kernel_map() with 'map' parameter to remap pages when
DEBUG_PAGEALLOC is enabled, use dedicated helpers slab_kernel_map() and
slab_kernel_unmap().
Signed-off-by: Mike Rapoport <rppt@linux•ibm.com>
---
mm/slab.c | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/mm/slab.c b/mm/slab.c
index 07317386e150..0719421d69f7 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -1428,17 +1428,21 @@ static bool is_debug_pagealloc_cache(struct kmem_cache *cachep)
return false;
}
-static void slab_kernel_map(struct kmem_cache *cachep, void *objp, int map)
+static void slab_kernel_map(struct kmem_cache *cachep, void *objp)
{
if (!is_debug_pagealloc_cache(cachep))
return;
- if (map)
- debug_pagealloc_map_pages(virt_to_page(objp),
- cachep->size / PAGE_SIZE);
- else
- debug_pagealloc_unmap_pages(virt_to_page(objp),
- cachep->size / PAGE_SIZE);
+ debug_pagealloc_map_pages(virt_to_page(objp), cachep->size / PAGE_SIZE);
+}
+
+static void slab_kernel_unmap(struct kmem_cache *cachep, void *objp)
+{
+ if (!is_debug_pagealloc_cache(cachep))
+ return;
+
+ debug_pagealloc_unmap_pages(virt_to_page(objp),
+ cachep->size / PAGE_SIZE);
}
static void poison_obj(struct kmem_cache *cachep, void *addr, unsigned char val)
@@ -1585,7 +1589,7 @@ static void slab_destroy_debugcheck(struct kmem_cache *cachep,
if (cachep->flags & SLAB_POISON) {
check_poison_obj(cachep, objp);
- slab_kernel_map(cachep, objp, 1);
+ slab_kernel_map(cachep, objp);
}
if (cachep->flags & SLAB_RED_ZONE) {
if (*dbg_redzone1(cachep, objp) != RED_INACTIVE)
@@ -2360,7 +2364,7 @@ static void cache_init_objs_debug(struct kmem_cache *cachep, struct page *page)
/* need to poison the objs? */
if (cachep->flags & SLAB_POISON) {
poison_obj(cachep, objp, POISON_FREE);
- slab_kernel_map(cachep, objp, 0);
+ slab_kernel_unmap(cachep, objp);
}
}
#endif
@@ -2728,7 +2732,7 @@ static void *cache_free_debugcheck(struct kmem_cache *cachep, void *objp,
if (cachep->flags & SLAB_POISON) {
poison_obj(cachep, objp, POISON_FREE);
- slab_kernel_map(cachep, objp, 0);
+ slab_kernel_unmap(cachep, objp);
}
return objp;
}
@@ -2993,7 +2997,7 @@ static void *cache_alloc_debugcheck_after(struct kmem_cache *cachep,
return objp;
if (cachep->flags & SLAB_POISON) {
check_poison_obj(cachep, objp);
- slab_kernel_map(cachep, objp, 1);
+ slab_kernel_map(cachep, objp);
poison_obj(cachep, objp, POISON_INUSE);
}
if (cachep->flags & SLAB_STORE_USER)
--
2.28.0
next prev parent reply other threads:[~2020-11-08 7:04 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-08 6:57 [PATCH v5 0/5] arch, mm: improve robustness of direct map manipulation Mike Rapoport
2020-11-08 6:57 ` [PATCH v5 1/5] mm: introduce debug_pagealloc_{map, unmap}_pages() helpers Mike Rapoport
2020-11-09 11:33 ` Vlastimil Babka
2020-11-09 14:41 ` Mike Rapoport
2020-11-08 6:57 ` Mike Rapoport [this message]
2020-11-08 6:57 ` [PATCH v5 3/5] PM: hibernate: make direct map manipulations more explicit Mike Rapoport
2020-11-08 6:57 ` [PATCH v5 4/5] arch, mm: restore dependency of __kernel_map_pages() on DEBUG_PAGEALLOC Mike Rapoport
2020-11-08 6:57 ` [PATCH v5 5/5] arch, mm: make kernel_page_present() always available Mike Rapoport
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201108065758.1815-3-rppt@kernel.org \
--to=rppt@kernel$(echo .)org \
--cc=akpm@linux-foundation$(echo .)org \
--cc=aou@eecs$(echo .)berkeley.edu \
--cc=borntraeger@de$(echo .)ibm.com \
--cc=bp@alien8$(echo .)de \
--cc=catalin.marinas@arm$(echo .)com \
--cc=cl@linux$(echo .)com \
--cc=dave.hansen@linux$(echo .)intel.com \
--cc=davem@davemloft$(echo .)net \
--cc=david@redhat$(echo .)com \
--cc=gor@linux$(echo .)ibm.com \
--cc=hca@linux$(echo .)ibm.com \
--cc=hpa@zytor$(echo .)com \
--cc=iamjoonsoo.kim@lge$(echo .)com \
--cc=kirill.shutemov@linux$(echo .)intel.com \
--cc=kirill@shutemov$(echo .)name \
--cc=len.brown@intel$(echo .)com \
--cc=linux-arm-kernel@lists$(echo .)infradead.org \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=linux-mm@kvack$(echo .)org \
--cc=linux-pm@vger$(echo .)kernel.org \
--cc=linux-riscv@lists$(echo .)infradead.org \
--cc=linux-s390@vger$(echo .)kernel.org \
--cc=linuxppc-dev@lists$(echo .)ozlabs.org \
--cc=luto@kernel$(echo .)org \
--cc=mingo@redhat$(echo .)com \
--cc=palmer@dabbelt$(echo .)com \
--cc=paul.walmsley@sifive$(echo .)com \
--cc=paulus@samba$(echo .)org \
--cc=pavel@ucw$(echo .)cz \
--cc=penberg@kernel$(echo .)org \
--cc=peterz@infradead$(echo .)org \
--cc=rick.p.edgecombe@intel$(echo .)com \
--cc=rientjes@google$(echo .)com \
--cc=rjw@rjwysocki$(echo .)net \
--cc=rppt@linux$(echo .)ibm.com \
--cc=sparclinux@vger$(echo .)kernel.org \
--cc=tglx@linutronix$(echo .)de \
--cc=vbabka@suse$(echo .)cz \
--cc=will@kernel$(echo .)org \
--cc=x86@kernel$(echo .)org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox