[PATCH 05/28] sunrpc: don't call flush_dcache_page() with NULL page pointer

Kevin Coffman kwc at citi.umich.edu
Mon Mar 31 16:20:25 EDT 2008


On Mon, Mar 31, 2008 at 4:10 PM, J. Bruce Fields <bfields at fieldses.org> wrote:
> On Mon, Mar 31, 2008 at 10:31:18AM -0400, Kevin Coffman wrote:
>  > For architectures that implement flush_dcache_page(), the struct
>  > page pointer is not expected to be NULL.  In _copy_to_pages(),
>  > if the last bytes being copied are the exact last bytes of a
>  > complete page, then the final call to flush_dcache_page() has
>  > a null pointer.  Skip the call in that case.
>
>  A fix for this should actually go upstream now, right?

Perhaps.  My use of write_bytes_to_xdr() exercises this function in
ways it wasn't being exercised before.

>  >
>  > Signed-off-by: Kevin Coffman <kwc at citi.umich.edu>
>  > ---
>  >
>  >  net/sunrpc/xdr.c |    3 ++-
>  >  1 files changed, 2 insertions(+), 1 deletions(-)
>  >
>  > diff --git a/net/sunrpc/xdr.c b/net/sunrpc/xdr.c
>  > index de2c986..26991c6 100644
>  > --- a/net/sunrpc/xdr.c
>  > +++ b/net/sunrpc/xdr.c
>  > @@ -262,7 +262,8 @@ _copy_to_pages(struct page **pages, size_t pgbase, const char *p, size_t len)
>  >               p += copy;
>  >
>  >       } while ((len -= copy) != 0);
>  > -     flush_dcache_page(*pgto);
>  > +     if (*pgto != NULL)
>  > +             flush_dcache_page(*pgto);
>  >  }
>
>  Can you necessarily count on the next entry in the page array being NULL?
>  Maybe better would be:
>
>         if (pgbase != 0)
>                 flush_dcache_page(*pgto);

OK.  I'll change and re-test.


More information about the NFSv4 mailing list