[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230515130958.32471-1-lrh2000@pku.edu.cn>
Date: Mon, 15 May 2023 21:09:54 +0800
From: Ruihan Li <lrh2000@....edu.cn>
To: linux-mm@...ck.org, linux-usb@...r.kernel.org
Cc: linux-kernel@...r.kernel.org,
Pasha Tatashin <pasha.tatashin@...een.com>,
David Hildenbrand <david@...hat.com>,
Matthew Wilcox <willy@...radead.org>,
Andrew Morton <akpm@...ux-foundation.org>,
Christoph Hellwig <hch@...radead.org>,
Alan Stern <stern@...land.harvard.edu>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Ruihan Li <lrh2000@....edu.cn>
Subject: [PATCH v2 0/4] Fix type confusion in page_table_check
Recently, syzbot reported [1] ("kernel BUG in page_table_check_clear").
The root cause is that usbdev_mmap calls remap_pfn_range on kmalloc'ed
memory, which leads to type confusion between struct page and slab in
page_table_check. This series of patches fixes the usb side by avoiding
mapping slab pages into userspace, and fixes the mm side by enforcing
that all user-accessible pages are not slab pages. A more detailed
analysis and some discussion of how to fix the problem can also be found
in [1].
[1] https://lore.kernel.org/lkml/20230507135844.1231056-1-lrh2000@pku.edu.cn/T/
Changes since v1:
* Fix inconsistent coding styles. (Alan Stern)
* Relax !DEVMEM requirements to EXCLUSIVE_SYSTEM_RAM, which is
equivalent to !DEVMEM || STRICT_DEVMEM. (David Hildenbrand)
* A few random tweaks in commit messages and code comments, none of
them major.
Link to v1:
https://lore.kernel.org/lkml/20230510085527.57953-1-lrh2000@pku.edu.cn/T/
Cc: Matthew Wilcox <willy@...radead.org>
Cc: David Hildenbrand <david@...hat.com>
Cc: Pasha Tatashin <pasha.tatashin@...een.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>
Cc: Alan Stern <stern@...land.harvard.edu>
Cc: Christoph Hellwig <hch@...radead.org>
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Ruihan Li (4):
usb: usbfs: Enforce page requirements for mmap
usb: usbfs: Use consistent mmap functions
mm: page_table_check: Make it dependent on EXCLUSIVE_SYSTEM_RAM
mm: page_table_check: Ensure user pages are not slab pages
Documentation/mm/page_table_check.rst | 18 ++++++++++++
drivers/usb/core/buffer.c | 41 +++++++++++++++++++++++++++
drivers/usb/core/devio.c | 20 +++++++++----
include/linux/page-flags.h | 6 ++++
include/linux/usb/hcd.h | 5 ++++
mm/Kconfig.debug | 2 +-
mm/page_table_check.c | 6 ++++
7 files changed, 91 insertions(+), 7 deletions(-)
--
2.40.1
Powered by blists - more mailing lists