On Fri, May 26, 2023 at 10:15:26AM +0100, David Howells wrote: > Lorenzo Stoakes <lstoakes@xxxxxxxxx> wrote: > > > > iov_iter_extract_pages(), on the other hand, is only used in two places > > > with these patches and the pins are always released with > > > unpin_user_page*() so it's a lot easier to audit. > > > > Thanks for the clarification. I guess these are the cases where you're > > likely to see zero page usage, but since this is changing all PUP*() callers > > don't you need to audit all of those too? > > I don't think it should be necessary. This only affects pages obtained from > gup with FOLL_PIN - and, so far as I know, those always have to be released > with unpin_user_page*() which is part of the gup API and thus it should be > transparent to the users. > Right, I was only saying so in relation to you stating the need to audit, for precisely this reason I wondered why you felt the need to :) > Pages obtained FOLL_GET, on the other hand, aren't freed through the gup API - > and there are a bunch of ways of releasing them - and getting additional refs > too. Yes that's a very good point! Sorry, in my enthusiasm for GUP reform this thorny aspect slipped my mind... As Christoph said though hopefully over time we can limit the use of FOLL_GET so this becomes easier perhaps. Larger discussion on this area in [0] :) [0]:https://lore.kernel.org/all/ZGWnq%2FdAYELyKpTy@xxxxxxxxxxxxx/ > > David >