On Tue 19 May, 2020, 1:47 AM Matthew Wilcox, <willy@xxxxxxxxxxxxx> wrote: > > On Tue, May 19, 2020 at 01:28:23AM +0530, Souptick Joarder wrote: > > The idea is to get rid of write parameter. Instead caller will pass > > FOLL_WRITE to __get_user_pages_fast(). This will not change any > > functionality of the API. Once it is upstream all the callers will > > be changed to pass FOLL_WRITE. > > Uhh ... until you change all the callers, haven't you just broken all > the callers? All the callers have called the API with either 1 or 0. I think, it's not going to break any of the callers. > > > -int __get_user_pages_fast(unsigned long start, int nr_pages, int write, > > - struct page **pages) > > +int __get_user_pages_fast(unsigned long start, int nr_pages, > > + unsigned int gup_flags, struct page **pages) > > { > > unsigned long len, end; > > unsigned long flags; > > @@ -2685,10 +2692,7 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write, > > * Internally (within mm/gup.c), gup fast variants must set FOLL_GET, > > * because gup fast is always a "pin with a +1 page refcount" request. > > */ > > - unsigned int gup_flags = FOLL_GET; > > - > > - if (write) > > - gup_flags |= FOLL_WRITE; > > + gup_flags |= FOLL_GET;