diff options
author | Chintan Pandya <cpandya@codeaurora.org> | 2014-08-06 16:08:18 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-06 18:01:22 -0700 |
commit | 1d352bfd41e8219cdf9bebe79677700bdc38b540 (patch) | |
tree | d2e3e21f7dd702ddd65f0d57ce931d6162303960 | |
parent | 61e02c745721a361ba238e70bfa1c84a4df1a4b7 (diff) | |
download | lwn-1d352bfd41e8219cdf9bebe79677700bdc38b540.tar.gz lwn-1d352bfd41e8219cdf9bebe79677700bdc38b540.zip |
mm: BUG when __kmap_atomic_idx equals KM_TYPE_NR
__kmap_atomic_idx is per_cpu variable. Each CPU can use KM_TYPE_NR
entries from FIXMAP i.e. from 0 to KM_TYPE_NR - 1. Allowing
__kmap_atomic_idx to over- shoot to KM_TYPE_NR can mess up with next
CPU's 0th entry which is a bug. Hence BUG_ON if __kmap_atomic_idx >=
KM_TYPE_NR.
Fix the off-by-on in this test.
Signed-off-by: Chintan Pandya <cpandya@codeaurora.org>
Cc: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | include/linux/highmem.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 7fb31da45d03..9286a46b7d69 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -93,7 +93,7 @@ static inline int kmap_atomic_idx_push(void) #ifdef CONFIG_DEBUG_HIGHMEM WARN_ON_ONCE(in_irq() && !irqs_disabled()); - BUG_ON(idx > KM_TYPE_NR); + BUG_ON(idx >= KM_TYPE_NR); #endif return idx; } |