On Sat, May 09, 2020 at 12:00:57PM +0200, Thomas Gleixner wrote: > Greg KH <gre...@linuxfoundation.org> writes: > > On Sat, May 09, 2020 at 12:20:14AM -0700, syzbot wrote: > >> memtype_reserve failed: [mem 0xffffffffff000-0x00008fff], req write-back > >> WARNING: CPU: 1 PID: 7025 at arch/x86/mm/pat/memtype.c:589 > >> memtype_reserve+0x69f/0x820 arch/x86/mm/pat/memtype.c:589 > > > > So should memtype_reserve() not do a WARN if given invalid parameters as > > it can be triggered by userspace requests? > > > > A normal "invalid request" debug line is probably all that is needed, > > right? > > I disagree. The callsite espcially if user space triggerable should not > attempt to ask for a reservation where start > end: > > >> memtype_reserve failed: [mem 0xffffffffff000-0x00008fff], req write-back > > The real question is which part of the call chain is responsible for > this. That needs to be fixed.
This is caused by 2bef9aed6f0e ("usb: usbfs: correct kernel->user page attribute mismatch") which changed a call to remap_pfn_range() to dma_mmap_coherent(). Looks like the error checking in remap_pfn_range() handled the invalid options better than dma_mma_coherent() when odd values are passed in. We can add the check to dma_mmap_coherent(), again, but really, this type of check should probably only be needed in one place to ensure we always get it correct, right? thanks, greg k-h