Messages in this thread Patch in this message | | | From | Claudio Imbrenda <> | Subject | [RFC v1 1/2] mm/gup: fixup for 9947ea2c1e608e32 "mm/gup: track FOLL_PIN pages" | Date | Fri, 28 Feb 2020 16:43:21 +0100 |
| |
In case pin fails, we need to unpin, a simple put_page will not be enough
Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com> --- mm/gup.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/mm/gup.c b/mm/gup.c index f589299b0d4a..0b9a806898f3 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -2134,7 +2134,10 @@ static int gup_pte_range(pmd_t pmd, unsigned long addr, unsigned long end, goto pte_unmap; if (unlikely(pte_val(pte) != pte_val(*ptep))) { - put_page(head); + if (flags & FOLL_GET) + put_page(head); + else if (flags & FOLL_PIN) + unpin_user_page(head); goto pte_unmap; } -- 2.24.1
| |