diff options
author | Matthew Wilcox (Oracle) <willy@infradead.org> | 2021-10-04 15:45:56 +0200 |
---|---|---|
committer | Vlastimil Babka <vbabka@suse.cz> | 2022-01-06 12:25:51 +0100 |
commit | 0b3eb091d5759479d44cb793fad2c51ea06bdcec (patch) | |
tree | 00a317cba0a53dc099678ebb16dcec3a4be41539 /mm/slab.h | |
parent | mm: Use struct slab in kmem_obj_info() (diff) | |
download | linux-0b3eb091d5759479d44cb793fad2c51ea06bdcec.tar.xz linux-0b3eb091d5759479d44cb793fad2c51ea06bdcec.zip |
mm: Convert check_heap_object() to use struct slab
Ensure that we're not seeing a tail page inside __check_heap_object() by
converting to a slab instead of a page. Take the opportunity to mark
the slab as const since we're not modifying it. Also move the
declaration of __check_heap_object() to mm/slab.h so it's not available
to the wider kernel.
[ vbabka@suse.cz: in check_heap_object() only convert to struct slab for
actual PageSlab pages; use folio as intermediate step instead of page ]
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
Reviewed-by: Roman Gushchin <guro@fb.com>
Diffstat (limited to 'mm/slab.h')
-rw-r--r-- | mm/slab.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/mm/slab.h b/mm/slab.h index 9ae9f6c3d1cb..039babfde2fe 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -812,4 +812,15 @@ struct kmem_obj_info { void kmem_obj_info(struct kmem_obj_info *kpp, void *object, struct slab *slab); #endif +#ifdef CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR +void __check_heap_object(const void *ptr, unsigned long n, + const struct slab *slab, bool to_user); +#else +static inline +void __check_heap_object(const void *ptr, unsigned long n, + const struct slab *slab, bool to_user) +{ +} +#endif + #endif /* MM_SLAB_H */ |