On 17.10.24 23:28, Alistair Popple wrote:...
David Hildenbrand <david@xxxxxxxxxx> writes:
On 16.10.24 22:22, John Hubbard wrote:
+ if (rc != -EAGAIN && rc != 0)
+ unpin_user_pages(pages, nr_pinned_pages);
+
} while (rc == -EAGAIN);
Wouldn't it be cleaner to simply have here after the loop (possibly
even after the memalloc_pin_restore())
if (rc)
unpin_user_pages(pages, nr_pinned_pages);
But maybe I am missing something.
I initially thought the same thing but I'm not sure it is
correct. Consider what happens when __get_user_pages_locked() fails
earlier in the loop. In this case it will have bailed out of the loop
with rc <= 0 but we shouldn't call unpin_user_pages().
Ah, I see what you mean, I primarily only stared at the diff.
We should likely avoid using nr_pinned_pages as a temporary variable that
can hold an error value.