Messages in this thread | | | Date | Tue, 10 Aug 1999 09:03:58 +0100 | From | Steve Dodd <> | Subject | filemap_nopage() tries to copy to page 0, eek. |
| |
Hi,
(Apologies in advance if you already know about this)
I've just been chasing down the problem with writes to mmap()d areas hanging, and it turns out that filemap_nopage() will try to clobber page 0 if the page isn't found in the page cache and no_share is true:
no_cached_page: . . . /* * Now it's ours and locked, we can do initial IO to it: */ new_page = 0;
page_not_uptodate: error = inode->i_op->readpage(file, page); if (!error) { wait_on_page(page); if (PageError(page)) goto page_read_error; goto success; }
success: old_page = page_address(page); if (!no_share) { ... }
/* * No sharing ... copy to the new page. */ if (!new_page) printk(KERN_CRIT "filemap_nopage(): erk, new_page == 0\n"); copy_page(new_page, old_page);
I don't claim to understand (yet) what the fix is; I'm also not on clear why the page fault handler just tries to re-enter itself, ultimately deadlocking on current->mm->mmap_sem -- does it show that I'm /way/ out of my depth here? ;-)
-- If breastfeeding a pig is sickening to you, what the hell are you doing on usenet? -- Aimee, on rec.music.tori-amos
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |