mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
highmem: Enhance is_kmap_addr() to check kmap_local_page() mappings
is_kmap_addr() is only looking at the kmap() address range which may cause check_heap_object() to miss checking an overflow on a kmap_local_page() page. Add a check for the kmap_local_page() address range to is_kmap_addr(). Cc: Matthew Wilcox <willy@infradead.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: "Fabio M. De Francesco" <fmdefrancesco@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Christoph Hellwig <hch@lst.de> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Ira Weiny <ira.weiny@intel.com> Acked-by: Andrew Morton <akpm@linux-foudation.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
This commit is contained in:
parent
ceaa837f96
commit
f3837ab7ad
@ -152,7 +152,10 @@ static inline void totalhigh_pages_add(long count)
|
||||
static inline bool is_kmap_addr(const void *x)
|
||||
{
|
||||
unsigned long addr = (unsigned long)x;
|
||||
return addr >= PKMAP_ADDR(0) && addr < PKMAP_ADDR(LAST_PKMAP);
|
||||
|
||||
return (addr >= PKMAP_ADDR(0) && addr < PKMAP_ADDR(LAST_PKMAP)) ||
|
||||
(addr >= __fix_to_virt(FIX_KMAP_END) &&
|
||||
addr < __fix_to_virt(FIX_KMAP_BEGIN));
|
||||
}
|
||||
#else /* CONFIG_HIGHMEM */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user