[PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages - Kernel

This is a discussion on [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages - Kernel ; Hi all The test for VM_CAN_NONLINEAR always fails Signed-off-by: Yan Zheng ---- 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 ...

+ Reply to Thread
Results 1 to 11 of 11

Thread: [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

  1. [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

    Hi all

    The test for VM_CAN_NONLINEAR always fails

    Signed-off-by: Yan Zheng
    ----
    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 unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. Re: [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

    On Mon, Oct 08, 2007 at 07:45:08PM +0800, Yan Zheng wrote:
    >Hi all
    >
    >The test for VM_CAN_NONLINEAR always fails
    >
    >Signed-off-by: Yan Zheng
    >----
    >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))


    Good catch!

    ! operator has higher priority than & operator.

    Acked by me. ;-)


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



    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  3. Re: [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

    On Mon, 8 Oct 2007 19:45:08 +0800 "Yan Zheng" wrote:

    > Hi all
    >
    > The test for VM_CAN_NONLINEAR always fails
    >
    > Signed-off-by: Yan Zheng
    > ----
    > 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)


    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 unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  4. Re: [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

    On Mon, 8 Oct 2007 10:04:56 -0700 Andrew Morton wrote:

    > On Mon, 8 Oct 2007 19:45:08 +0800 "Yan Zheng" wrote:
    >
    > > Hi all
    > >
    > > The test for VM_CAN_NONLINEAR always fails
    > >
    > > Signed-off-by: Yan Zheng
    > > ----
    > > 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)

    >
    > 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'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...
    (I'll check.)


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


    quick grep didn't find any for me.

    > Have you runtime tested this change?
    >
    > Thanks.



    ---
    ~Randy
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  5. Re: [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

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

    > On Mon, 8 Oct 2007 10:04:56 -0700 Andrew Morton wrote:
    >
    > > On Mon, 8 Oct 2007 19:45:08 +0800 "Yan Zheng" wrote:
    > >
    > > > Hi all
    > > >
    > > > The test for VM_CAN_NONLINEAR always fails
    > > >
    > > > Signed-off-by: Yan Zheng
    > > > ----
    > > > 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)

    > >
    > > 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'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...
    > (I'll check.)


    Perhaps Yan Zheng can tell us what test was used to demonstrate this?

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

    >
    > quick grep didn't find any for me.


    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 unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  6. Re: [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

    On Mon, 8 Oct 2007, Yan Zheng wrote:
    >
    > The test for VM_CAN_NONLINEAR always fails


    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!)

    Hugh

    >
    > Signed-off-by: Yan Zheng
    > ----
    > 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 unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    > the body of a message to majordomo@vger.kernel.org
    > More majordomo info at http://vger.kernel.org/majordomo-info.html
    > Please read the FAQ at http://www.tux.org/lkml/
    >

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  7. Re: [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

    2007/10/8, Hugh Dickins :
    > On Mon, 8 Oct 2007, Yan Zheng wrote:
    > >
    > > The test for VM_CAN_NONLINEAR always fails

    > 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!)
    > Hugh


    Yes, I mean "The test for not VM_CAN_NONLINEAR always fails". please
    forgive my poor English.
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  8. Re: [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

    On Monday 08 October 2007 23:37, Hugh Dickins wrote:
    > On Mon, 8 Oct 2007, Yan Zheng wrote:
    > > The test for VM_CAN_NONLINEAR always fails

    >
    > 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.


    Well, I think all filesystems can do VM_CAN_NONLINEAR anyway. Device
    drivers and "weird" things tend to have trouble...


    > 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?


    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
    Acked-by: Nick Piggin

    > 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!)
    >
    > Hugh
    >
    > > Signed-off-by: Yan Zheng
    > > ----
    > > 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 unsubscribe from this list: send the line "unsubscribe linux-kernel"
    > > in the body of a message to majordomo@vger.kernel.org
    > > More majordomo info at http://vger.kernel.org/majordomo-info.html
    > > Please read the FAQ at http://www.tux.org/lkml/

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  9. Re: [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

    On Tuesday 09 October 2007 03:04, Andrew Morton wrote:
    > On Mon, 8 Oct 2007 19:45:08 +0800 "Yan Zheng" wrote:
    > > Hi all
    > >
    > > The test for VM_CAN_NONLINEAR always fails
    > >
    > > Signed-off-by: Yan Zheng
    > > ----
    > > 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)

    >
    > 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.


    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 unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  10. Re: [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

    On Tuesday 09 October 2007 03:51, Andrew Morton wrote:
    > On Mon, 8 Oct 2007 10:28:43 -0700


    > > 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...
    > > (I'll check.)

    >
    > Perhaps Yan Zheng can tell us what test was used to demonstrate this?


    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
    data.

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

    > >
    > > quick grep didn't find any for me.

    >
    > 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.


    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.



  11. Re: [PATCH]fix VM_CAN_NONLINEAR check in sys_remap_file_pages

    2007/10/9, Andrew Morton :
    > Perhaps Yan Zheng can tell us what test was used to demonstrate this?


    I found it by review, only do test to check remap_file_pages works
    when VM_CAN_NONLINEAR flags is set.
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread