]> git.dujemihanovic.xyz Git - linux.git/commitdiff
arch/kmap: remove BUG_ON()
authorIra Weiny <ira.weiny@intel.com>
Thu, 4 Jun 2020 23:47:22 +0000 (16:47 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 5 Jun 2020 02:06:22 +0000 (19:06 -0700)
Patch series "Remove duplicated kmap code", v3.

The kmap infrastructure has been copied almost verbatim to every
architecture.  This series consolidates obvious duplicated code by
defining core functions which call into the architectures only when
needed.

Some of the k[un]map_atomic() implementations have some similarities but
the similarities were not sufficient to warrant further changes.

In addition we remove a duplicate implementation of kmap() in DRM.

This patch (of 15):

Replace the use of BUG_ON(in_interrupt()) in the kmap() and kunmap() in
favor of might_sleep().

Besides the benefits of might_sleep(), this normalizes the implementations
such that they can be made generic in subsequent patches.

Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Christian König <christian.koenig@amd.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com>
Cc: Helge Deller <deller@gmx.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Chris Zankel <chris@zankel.net>
Cc: Max Filippov <jcmvbkbc@gmail.com>
Link: http://lkml.kernel.org/r/20200507150004.1423069-1-ira.weiny@intel.com
Link: http://lkml.kernel.org/r/20200507150004.1423069-2-ira.weiny@intel.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/arc/include/asm/highmem.h
arch/arc/mm/highmem.c
arch/arm/mm/highmem.c
arch/csky/mm/highmem.c
arch/microblaze/include/asm/highmem.h
arch/mips/mm/highmem.c
arch/nds32/mm/highmem.c
arch/powerpc/include/asm/highmem.h
arch/sparc/include/asm/highmem.h
arch/x86/mm/highmem_32.c
arch/xtensa/include/asm/highmem.h

index 1af00accb37f60f587c15e1d852da8bedd381e23..042e92921c4c1aa8fe52e17850d933d14d0df162 100644 (file)
@@ -45,7 +45,7 @@ static inline void flush_cache_kmaps(void)
 
 static inline void kunmap(struct page *page)
 {
-       BUG_ON(in_interrupt());
+       might_sleep();
        if (!PageHighMem(page))
                return;
        kunmap_high(page);
index fc8849e4f72ee32c1b8aff5e2f7178929b1b4c26..39ef7b9a3aa9cc7520b816d630ca65302b5dda75 100644 (file)
@@ -51,7 +51,7 @@ static pte_t * fixmap_page_table;
 
 void *kmap(struct page *page)
 {
-       BUG_ON(in_interrupt());
+       might_sleep();
        if (!PageHighMem(page))
                return page_address(page);
 
index a76f8ace9ce664972acdb1d03a2f78fecde86b56..cc6eb79ef20c51818b8bfca668fbb138a356dfa8 100644 (file)
@@ -42,7 +42,7 @@ EXPORT_SYMBOL(kmap);
 
 void kunmap(struct page *page)
 {
-       BUG_ON(in_interrupt());
+       might_sleep();
        if (!PageHighMem(page))
                return;
        kunmap_high(page);
index 813129145f3da77c87a516f2f33bf48d8592ed18..690d678649d13f0764e0dd0a07c65c96644e671f 100644 (file)
@@ -29,7 +29,7 @@ EXPORT_SYMBOL(kmap);
 
 void kunmap(struct page *page)
 {
-       BUG_ON(in_interrupt());
+       might_sleep();
        if (!PageHighMem(page))
                return;
        kunmap_high(page);
index 332c78e15198ec919bb6c3eb1a9a287cf1e91941..99ced7278b5c7f1dd41f4bdda70575135a9b4d58 100644 (file)
@@ -66,7 +66,7 @@ static inline void *kmap(struct page *page)
 
 static inline void kunmap(struct page *page)
 {
-       BUG_ON(in_interrupt());
+       might_sleep();
        if (!PageHighMem(page))
                return;
        kunmap_high(page);
index d08e6d7d533b049a607fbce4513c903acdc73472..edd889f6cede404d719e16ac3a7ff599fb987de8 100644 (file)
@@ -28,7 +28,7 @@ EXPORT_SYMBOL(kmap);
 
 void kunmap(struct page *page)
 {
-       BUG_ON(in_interrupt());
+       might_sleep();
        if (!PageHighMem(page))
                return;
        kunmap_high(page);
index 022779af6148ca671f32f8d080c57540ed0d4ee0..4c7c28e994ea766a507ef53fedee5f3e65bb1df5 100644 (file)
@@ -24,7 +24,7 @@ EXPORT_SYMBOL(kmap);
 
 void kunmap(struct page *page)
 {
-       BUG_ON(in_interrupt());
+       might_sleep();
        if (!PageHighMem(page))
                return;
        kunmap_high(page);
index a4b65b186ec67cb1ea328a1f192ce648fcf6ffd1..529512f6d65a6085a97164c012d7a71c30e54dac 100644 (file)
@@ -74,7 +74,7 @@ static inline void *kmap(struct page *page)
 
 static inline void kunmap(struct page *page)
 {
-       BUG_ON(in_interrupt());
+       might_sleep();
        if (!PageHighMem(page))
                return;
        kunmap_high(page);
index 18d776925c45a4a8a2ddbc099d6517704b83e8e6..7dd2d4b3f9800cfe5e0fb84b983ee073c859b397 100644 (file)
@@ -55,7 +55,7 @@ void kunmap_high(struct page *page);
 
 static inline void *kmap(struct page *page)
 {
-       BUG_ON(in_interrupt());
+       might_sleep();
        if (!PageHighMem(page))
                return page_address(page);
        return kmap_high(page);
@@ -63,7 +63,7 @@ static inline void *kmap(struct page *page)
 
 static inline void kunmap(struct page *page)
 {
-       BUG_ON(in_interrupt());
+       might_sleep();
        if (!PageHighMem(page))
                return;
        kunmap_high(page);
index 0a1898b8552e23c6f6e1a2fd2bb8b44cd294749a..8af66382672b4f59af08fec978417ed0da788fb3 100644 (file)
@@ -15,8 +15,7 @@ EXPORT_SYMBOL(kmap);
 
 void kunmap(struct page *page)
 {
-       if (in_interrupt())
-               BUG();
+       might_sleep();
        if (!PageHighMem(page))
                return;
        kunmap_high(page);
index 04e9340eac4b50e0d3fc903652eb086cd5f7d59a..413848cc1e5654a2b42c87d256ff28732fe29f72 100644 (file)
@@ -73,7 +73,7 @@ static inline void *kmap(struct page *page)
         */
        BUILD_BUG_ON(PKMAP_BASE <
                     TLBTEMP_BASE_1 + TLBTEMP_SIZE);
-       BUG_ON(in_interrupt());
+       might_sleep();
        if (!PageHighMem(page))
                return page_address(page);
        return kmap_high(page);
@@ -81,7 +81,7 @@ static inline void *kmap(struct page *page)
 
 static inline void kunmap(struct page *page)
 {
-       BUG_ON(in_interrupt());
+       might_sleep();
        if (!PageHighMem(page))
                return;
        kunmap_high(page);