* RE: 2.5.55-rmk1: user space lossage [not found] <3E2F2354.7060508@intrinsyc.com> @ 2003-01-23 2:34 ` Christopher Hoover 2003-01-23 9:48 ` David Woodhouse 0 siblings, 1 reply; 5+ messages in thread From: Christopher Hoover @ 2003-01-23 2:34 UTC (permalink / raw) To: 'Frank Becker'; +Cc: linux-arm-kernel, 'linux-mtd' Aha! This is the problem: [ch@friction src]$ diff -B -w -Naurp linux-2.5.{52,53}/fs/jffs2 diff -B -w -Naurp linux-2.5.52/fs/jffs2/file.c linux-2.5.53/fs/jffs2/file.c --- linux-2.5.52/fs/jffs2/file.c 2002-12-15 18:08:24.000000000 -0800 +++ linux-2.5.53/fs/jffs2/file.c 2002-12-23 21:21:34.000000000 -0800 @@ -58,7 +58,7 @@ struct file_operations jffs2_file_operat .read = generic_file_read, .write = generic_file_write, .ioctl = jffs2_ioctl, - .mmap = generic_file_mmap, + .mmap = generic_file_readonly_mmap, .fsync = jffs2_fsync, #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,29) .sendfile = generic_file_sendfile [ch@friction src]$ If you reverese this change, 2.5.55-rmk1 behaves. -ch ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: 2.5.55-rmk1: user space lossage 2003-01-23 2:34 ` 2.5.55-rmk1: user space lossage Christopher Hoover @ 2003-01-23 9:48 ` David Woodhouse 2003-01-23 9:56 ` Andrew Morton 0 siblings, 1 reply; 5+ messages in thread From: David Woodhouse @ 2003-01-23 9:48 UTC (permalink / raw) To: Christopher Hoover Cc: 'Frank Becker', linux-arm-kernel, 'linux-mtd', akpm, linux-kernel < Snip long thread about init segfaulting immediately at boot on 2.5.55 > ch@murgatroid.com said: > I just dropped jffs2 from 2.5.52 into 2.5.55 and it works, too. ch@murgatroid.com said: > Aha! This is the problem: > - .mmap = generic_file_mmap, > + .mmap = generic_file_readonly_mmap, > If you reverese this change, 2.5.55-rmk1 behaves. Er, yes. generic_file_readonly_mmap() silently removed the VM_MAYWRITE bit from vma->vm_flags when init made a _PRIVATE_ writable mapping, apparently on the basis that we have no writepage(). Then we return success anyway. Then init segfaults when it touches something in that mapping. /me blames akpm. :) -- dwmw2 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: 2.5.55-rmk1: user space lossage 2003-01-23 9:48 ` David Woodhouse @ 2003-01-23 9:56 ` Andrew Morton 2003-01-23 10:01 ` David Woodhouse 0 siblings, 1 reply; 5+ messages in thread From: Andrew Morton @ 2003-01-23 9:56 UTC (permalink / raw) To: David Woodhouse; +Cc: ch, fbecker, linux-arm-kernel, linux-mtd, linux-kernel David Woodhouse <dwmw2@infradead.org> wrote: > > /me blames akpm. :) Linus did it! diff -puN mm/filemap.c~generic_file_readonly_mmap-fix mm/filemap.c --- 25/mm/filemap.c~generic_file_readonly_mmap-fix 2003-01-23 01:55:41.000000000 -0800 +++ 25-akpm/mm/filemap.c 2003-01-23 01:55:45.000000000 -0800 @@ -1312,7 +1312,6 @@ int generic_file_readonly_mmap(struct fi { if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_WRITE)) return -EINVAL; - vma->vm_flags &= ~VM_MAYWRITE; return generic_file_mmap(file, vma); } #else _ ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: 2.5.55-rmk1: user space lossage 2003-01-23 9:56 ` Andrew Morton @ 2003-01-23 10:01 ` David Woodhouse 2003-01-23 10:06 ` Andrew Morton 0 siblings, 1 reply; 5+ messages in thread From: David Woodhouse @ 2003-01-23 10:01 UTC (permalink / raw) To: Andrew Morton; +Cc: ch, fbecker, linux-arm-kernel, linux-mtd, linux-kernel akpm@digeo.com said: > Linus did it! > diff -puN mm/filemap.c~generic_file_readonly_mmap-fix mm/filemap.c > --- 25/mm/filemap.c~generic_file_readonly_mmap-fix 2003-01-23 01:55:41 -0800 > +++ 25-akpm/mm/filemap.c 2003-01-23 01:55:45 -0800 > @@ -1312,7 +1312,6 @@ int generic_file_readonly_mmap(struct fi > { > if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_WRITE)) > return -EINVAL; > - vma->vm_flags &= ~VM_MAYWRITE; > return generic_file_mmap(file, vma); > } > #else - if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_WRITE)) +- if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_WRITE)) ++ if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_MAYWRITE)) ...? -- dwmw2 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: 2.5.55-rmk1: user space lossage 2003-01-23 10:01 ` David Woodhouse @ 2003-01-23 10:06 ` Andrew Morton 0 siblings, 0 replies; 5+ messages in thread From: Andrew Morton @ 2003-01-23 10:06 UTC (permalink / raw) To: David Woodhouse; +Cc: ch, fbecker, linux-arm-kernel, linux-mtd, linux-kernel David Woodhouse <dwmw2@infradead.org> wrote: > > > > - if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_WRITE)) > +- if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_WRITE)) > ++ if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_MAYWRITE)) Yup. We cannot clear VM_MAYWRITE in there - it turns writeable MAP_PRIVATE mappings into readonly ones. So change it back to the 2.4 form - disallow a writeable MAP_SHARED mapping against filesystems which do no implement ->writepage(). filemap.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff -puN mm/filemap.c~generic_file_readonly_mmap-fix mm/filemap.c --- 25/mm/filemap.c~generic_file_readonly_mmap-fix 2003-01-23 01:55:41.000000000 -0800 +++ 25-akpm/mm/filemap.c 2003-01-23 02:04:05.000000000 -0800 @@ -1308,11 +1308,13 @@ int generic_file_mmap(struct file * file return 0; } +/* + * This is for filesystems which do not implement ->writepage. + */ int generic_file_readonly_mmap(struct file *file, struct vm_area_struct *vma) { - if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_WRITE)) + if ((vma->vm_flags & VM_SHARED) && (vma->vm_flags & VM_MAYWRITE)) return -EINVAL; - vma->vm_flags &= ~VM_MAYWRITE; return generic_file_mmap(file, vma); } #else _ ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2003-01-23 9:35 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <3E2F2354.7060508@intrinsyc.com>
2003-01-23 2:34 ` 2.5.55-rmk1: user space lossage Christopher Hoover
2003-01-23 9:48 ` David Woodhouse
2003-01-23 9:56 ` Andrew Morton
2003-01-23 10:01 ` David Woodhouse
2003-01-23 10:06 ` Andrew Morton
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox