[lkml]   [2018]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH v4 2/3] mm: introduce put_user_page*(), placeholder versions
On 10/9/18 4:20 PM, Andrew Morton wrote:
> On Tue, 9 Oct 2018 10:30:25 +0200 Jan Kara <> wrote:
>>> Also, maintainability. What happens if someone now uses put_page() by
>>> mistake? Kernel fails in some mysterious fashion? How can we prevent
>>> this from occurring as code evolves? Is there a cheap way of detecting
>>> this bug at runtime?
>> The same will happen as with any other reference counting bug - the special
>> user reference will leak. It will be pretty hard to debug I agree. I was
>> thinking about whether we could provide some type safety against such bugs
>> such as get_user_pages() not returning struct page pointers but rather some
>> other special type but it would result in a big amount of additional churn
>> as we'd have to propagate this different type e.g. through the IO path so
>> that IO completion routines could properly call put_user_pages(). So I'm
>> not sure it's really worth it.
> I'm not really understanding. Patch 3/3 changes just one infiniband
> driver to use put_user_page(). But the changelogs here imply (to me)
> that every user of get_user_pages() needs to be converted to
> s/put_page/put_user_page/.
> Methinks a bit more explanation is needed in these changelogs?

OK, yes, it does sound like the explanation is falling short. I'll work on something
clearer. Did the proposed steps in the changelogs, such as:

Proposed steps for fixing get_user_pages() + DMA problems.

help at all, or is it just too many references, and I should write the words
directly in the changelog?

Anyway, patch 3/3 is a just a working example (which we do want to submit, though), and
many more conversions will follow. But they don't have to be done all upfront--they
can be done in follow up patchsets.

The put_user_page*() routines are, at this point, not going to significantly change

I'm working on an RFC that will show what the long-term fix to get_user_pages and
put_user_pages will look like. But meanwhile it's good to get started on converting
all of the call sites.

John Hubbard

 \ /
  Last update: 2018-10-10 02:33    [W:0.113 / U:1.632 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site