Re: [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

Previous thread: [PATCH] virtualization of sysv msg queues is incomplete by Kirill Korotaev on Monday, October 8, 2007 - 7:05 am. (1 message)

Next thread: [PATCH 1/3] V4L: w9968cf, remove bad usage of ERESTARTSYS by Jiri Slaby on Monday, October 8, 2007 - 8:33 am. (16 messages)
To: <linux-fsdevel@...>, <linux-kernel@...>, <akpm@...>
Date: Monday, October 8, 2007 - 7:45 am

Hi all

The test for VM_CAN_NONLINEAR always fails

Signed-off-by: Yan Zheng<yanzheng@21cn.com>
----
diff -ur linux-2.6.23-rc9/mm/fremap.c linux/mm/fremap.c
--- linux-2.6.23-rc9/mm/fremap.c 2007-10-07 15:03:33.000000000 +0800
+++ linux/mm/fremap.c 2007-10-08 19:33:44.000000000 +0800
@@ -160,7 +160,7 @@
if (vma->vm_private_data && !(vma->vm_flags & VM_NONLINEAR))
goto out;

- if (!vma->vm_flags & VM_CAN_NONLINEAR)
+ if (!(vma->vm_flags & VM_CAN_NONLINEAR))
goto out;

if (end <= start || start < vma->vm_start || end > vma->vm_end)
-

To: Yan Zheng <yanzheng@...>
Cc: Nick Piggin <nickpiggin@...>, Miklos Szeredi <miklos@...>, <linux-fsdevel@...>, <linux-kernel@...>, <akpm@...>
Date: Monday, October 8, 2007 - 9:37 am

Good catch indeed. Though I was puzzled how we do nonlinear at all,
until I realized it's "The test for not VM_CAN_NONLINEAR always fails".

It's not as serious as it appears, since code further down has been
added more recently to simulate nonlinear on non-RAM-backed filesystems,
instead of going the real nonlinear way; so most filesystems are now not
required to do what VM_CAN_NONLINEAR was put in to ensure they could do.

I'm confused as to where that leaves us: is this actually a fix that
needs to go into 2.6.23? or will it suddenly disable a system call
which has been silently working fine on various filesystems which did
not add VM_CAN_NONLINEAR? could we just rip out VM_CAN_NONLINEAR?
I hope Nick or Miklos is clearer on what the risks are.

(Apologies for all the "not"s and "non"s here, I'm embarrassed
after just criticizing Ingo's SCHED_NO_NO_OMIT_FRAME_POINTER!)

-

To: Hugh Dickins <hugh@...>
Cc: Yan Zheng <yanzheng@...>, Miklos Szeredi <miklos@...>, <linux-fsdevel@...>, <linux-kernel@...>, <akpm@...>
Date: Monday, October 8, 2007 - 2:47 am

Well, I think all filesystems can do VM_CAN_NONLINEAR anyway. Device

We probably should keep VM_CAN_NONLINEAR for the moment, I think.
But now that we have the fallback path, we _could_ use that instead of
failing. I doubt anybody will be using nonlinear mappings on anything but
regular files for the time being, but as a trivial fix, I think this probably
should go into 2.6.23.

Thanks for spotting this problem
-

To: Hugh Dickins <hugh@...>
Cc: Nick Piggin <nickpiggin@...>, Miklos Szeredi <miklos@...>, <linux-fsdevel@...>, <linux-kernel@...>, <akpm@...>
Date: Monday, October 8, 2007 - 6:50 pm

Yes, I mean "The test for not VM_CAN_NONLINEAR always fails". please
forgive my poor English.
-

To: Yan Zheng <yanzheng@...>
Cc: <linux-fsdevel@...>, <linux-kernel@...>, <linux-mm@...>
Date: Monday, October 8, 2007 - 1:04 pm

Lovely. From this we can deduce that nobody has run remap_file_pages() since
2.6.23-rc1 and that nobody (including the developer who made that change) ran it
while that change was in -mm.

I'm surprise that LTP doesn't have any remap_file_pages() tests.

Have you runtime tested this change?

Thanks.
-

To: Andrew Morton <akpm@...>
Cc: Yan Zheng <yanzheng@...>, <linux-fsdevel@...>, <linux-kernel@...>, <linux-mm@...>
Date: Monday, October 8, 2007 - 3:02 am

But you'd be wrong. remap_file_pages was tested both with my own tester
and Ingo's test program.

vm_flags != 0, !vm_flags = 0, 0 & x = 0, so the test always falls
through. Of course, what I _should_ have done is also test a driver which
does not have VM_CAN_NONLINEAR... but even I wouldn't rewrite half
the nonlinear mapping code without once testing it ;)

FWIW, Oracle (maybe the sole real user of this) has been testing it, which
I'm very happy about (rather than testing after 2.6.23 is released).
-

To: Andrew Morton <akpm@...>
Cc: Yan Zheng <yanzheng@...>, <linux-fsdevel@...>, <linux-kernel@...>, <linux-mm@...>
Date: Monday, October 8, 2007 - 1:28 pm

I've run rmap-test with -M (use remap_file_pages) and
remap-test from ext3-tools, but not remap_file_pages for some reason.

I'll now add remap_file_pages soon.
Maybe those other 2 tests aren't strong enough (?).
Or maybe they don't return a non-0 exit status even when they fail...

---
~Randy
-

To: Randy Dunlap <randy.dunlap@...>
Cc: <yanzheng@...>, <linux-fsdevel@...>, <linux-kernel@...>, <linux-mm@...>, <ltp-list@...>
Date: Monday, October 8, 2007 - 1:51 pm

On Mon, 8 Oct 2007 10:28:43 -0700

Me either. There are a few lying around the place which could be
integrated.

It would be good if LTP were to have some remap_file_pages() tests
(please). As we see here, it is something which we can easily break, and
leave broken for some time.

-

To: Andrew Morton <akpm@...>
Cc: Randy Dunlap <randy.dunlap@...>, <linux-fsdevel@...>, <linux-kernel@...>, <linux-mm@...>, <ltp-list@...>
Date: Monday, October 8, 2007 - 9:43 pm

I found it by review, only do test to check remap_file_pages works
when VM_CAN_NONLINEAR flags is set.
-

To: Andrew Morton <akpm@...>, Ingo Molnar <mingo@...>
Cc: Randy Dunlap <randy.dunlap@...>, <yanzheng@...>, <linux-fsdevel@...>, <linux-kernel@...>, <linux-mm@...>, <ltp-list@...>
Date: Monday, October 8, 2007 - 3:45 am

Was probably found by review. Otherwise, you could probably reproduce
it by mmaping, say, drm device node, running remap_file_pages() on it
to create a nonlinear mapping, and then finding that you get the wrong

Here is Ingo's old test, since cleaned up and fixed a bit by me....
I'm sure he would distribute it GPL, but I've cc'ed him because I didn't
find an explicit statement about that.

To: Yan Zheng <yanzheng@...>
Cc: <linux-fsdevel@...>, <linux-kernel@...>, <akpm@...>
Date: Monday, October 8, 2007 - 7:52 am

Good catch!

! operator has higher priority than & operator.

-

Previous thread: [PATCH] virtualization of sysv msg queues is incomplete by Kirill Korotaev on Monday, October 8, 2007 - 7:05 am. (1 message)

Next thread: [PATCH 1/3] V4L: w9968cf, remove bad usage of ERESTARTSYS by Jiri Slaby on Monday, October 8, 2007 - 8:33 am. (16 messages)