Files
i2som-imx-linux/include/linux
Kirill A. Shutemov 610c361866 mm: Fix false-positive VM_BUG_ON() in page_cache_{get,add}_speculative()
[ Upstream commit 591a3d7c09 ]

0day testing by Fengguang Wu triggered this crash while running Trinity:

  kernel BUG at include/linux/pagemap.h:151!
  ...
  CPU: 0 PID: 458 Comm: trinity-c0 Not tainted 4.11.0-rc2-00251-g2947ba0 #1
  ...
  Call Trace:
   __get_user_pages_fast()
   get_user_pages_fast()
   get_futex_key()
   futex_requeue()
   do_futex()
   SyS_futex()
   do_syscall_64()
   entry_SYSCALL64_slow_path()

It' VM_BUG_ON() due to false-negative in_atomic(). We call
page_cache_get_speculative() with disabled local interrupts.
It should be atomic enough.

So let's check for disabled interrupts in the VM_BUG_ON() condition
too, to resolve this.

( This got triggered by the conversion of the x86 GUP code to the
  generic GUP code. )

Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Cc: Kirill A. Shutemov <kirill@shutemov.name>
Cc: LKP <lkp@01.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-mm@kvack.org
Link: http://lkml.kernel.org/r/20170324114709.pcytvyb3d6ajux33@black.fi.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-03-22 09:23:22 +01:00
..
2015-10-17 21:22:08 -07:00
2016-08-20 18:09:25 +02:00
2016-03-09 15:34:52 -08:00
2017-10-08 10:14:18 +02:00
2015-11-07 10:40:47 -07:00
2017-06-14 13:16:23 +02:00
2018-01-17 09:35:33 +01:00
2017-08-06 19:19:42 -07:00
2015-10-18 10:14:39 -07:00
2017-05-14 13:32:59 +02:00
2017-07-15 11:57:44 +02:00
2015-10-30 01:47:27 -04:00
2018-01-17 09:35:30 +01:00
2017-08-06 19:19:42 -07:00
2016-04-20 15:42:02 +09:00
2015-10-23 05:44:28 -07:00
2016-10-28 03:01:30 -04:00
2015-11-23 09:44:58 +01:00
2015-10-27 18:55:31 -07:00
2017-06-26 07:13:11 +02:00
2015-10-20 22:10:45 +08:00
2016-03-03 15:07:28 -08:00
2015-11-06 17:50:42 -08:00
2016-12-08 07:15:24 +01:00
2017-08-24 17:02:36 -07:00
2015-10-22 08:59:18 -07:00
2016-09-30 10:18:37 +02:00
2018-01-31 12:06:13 +01:00
2016-04-12 09:08:35 -07:00
2015-10-19 01:01:21 +02:00
2016-06-01 12:15:52 -07:00
2015-11-23 09:44:58 +01:00
2015-12-13 14:30:59 -08:00
2015-11-13 20:34:33 -05:00