lkml.org 
[lkml]   [2024]   [Apr]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v1 2/5] s390/uv: convert gmap_make_secure() to work on folios
From
On 05.04.24 05:29, Matthew Wilcox wrote:
> On Thu, Apr 04, 2024 at 06:36:39PM +0200, David Hildenbrand wrote:
>> + /* We might get PTE-mapped large folios; split them first. */
>> + if (folio_test_large(folio)) {
>> + rc = -E2BIG;
>
> We agree to this point. I just turned this into -EINVAL.
>
>>
>> + if (rc == -E2BIG) {
>> + /*
>> + * Splitting might fail with -EBUSY due to unexpected folio
>> + * references, just like make_folio_secure(). So handle it
>> + * ahead of time without the PTL being held.
>> + */
>> + folio_lock(folio);
>> + rc = split_folio(folio);
>> + folio_unlock(folio);
>> + folio_put(folio);
>> + }
>
> Ummm ... if split_folio() succeeds, aren't we going to return 0 from
> this function, which will be interpreted as make_folio_secure() having
> succeeded?

I assume the code would have to handle that, because it must deal with
possible races that would try to convert the folio page.

But the right thing to do is

if (!rc)
goto again;

after the put.

--
Cheers,

David / dhildenb


\
 
 \ /
  Last update: 2024-05-27 16:24    [W:0.065 / U:1.452 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site