Messages in this thread | | | Date | Mon, 8 Dec 2014 17:58:05 +0000 | From | Al Viro <> | Subject | Re: [RFC][PATCHES] iov_iter.c rewrite |
| |
On Mon, Dec 08, 2014 at 06:46:50PM +0200, Kirill A. Shutemov wrote:
> I guess this crash is related to the patchset.
Might be. Do you have a reproducer for it?
It looks like the second VIRTUAL_BUG_ON() in __phys_addr(), most likely from __pa(), from virt_to_page(), from unsigned long addr = (unsigned long)v.iov_base, end; size_t len = v.iov_len + (*start = addr & (PAGE_SIZE - 1));
if (len > maxpages * PAGE_SIZE) len = maxpages * PAGE_SIZE; addr &= ~(PAGE_SIZE - 1); for (end = addr + len; addr < end; addr += PAGE_SIZE) get_page(*pages++ = virt_to_page(addr)); return len - *start; in iov_iter_get_pages(). And that's ITER_KVEC case there... Further call chain looks like dio_refill_pages(), from dio_get_page(), from do_direct_io(), eventually from kernel_read() and finit_module(), Presumably called on O_DIRECT descriptor...
I'll try to reproduce it here, but if you have any reliable reproducer, it would be very welcome (and would make a useful addition to LTP and/or xfstests).
| |