From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 43B73C32772 for ; Tue, 23 Aug 2022 09:05:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D1A036B0073; Tue, 23 Aug 2022 05:05:43 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CC9D28D0002; Tue, 23 Aug 2022 05:05:43 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B91C28D0001; Tue, 23 Aug 2022 05:05:43 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id A6F906B0073 for ; Tue, 23 Aug 2022 05:05:43 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 793DF1A0F5A for ; Tue, 23 Aug 2022 09:05:43 +0000 (UTC) X-FDA: 79830274566.09.F164246 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf31.hostedemail.com (Postfix) with ESMTP id 2380120044 for ; Tue, 23 Aug 2022 09:05:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1661245542; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=INN7PIgXiadwGovRAjy42jqyjlBtEC4HF54Zz7onxbw=; b=IFc86N1f2W8pjVwRS7c3cr/1U/mywN3OuCmUkUt1ed0TO9+6BsqoJ6qJLMzZtp4rR0ls9R yIaUf5AT4URqeYNJat17gR+JTewLrT+ZiIy6AYz+LDhbWQSOo/MBye6PIzvxllceBk3TnQ l3g13tLW/7MipGttYswWoUDJo18Fx2Q= Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-517-28lrmgmpPByCCcX4k62SLw-1; Tue, 23 Aug 2022 05:05:41 -0400 X-MC-Unique: 28lrmgmpPByCCcX4k62SLw-1 Received: by mail-pg1-f197.google.com with SMTP id 15-20020a63020f000000b0041b578f43f9so5943127pgc.11 for ; Tue, 23 Aug 2022 02:05:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to:from :subject:cc:to:message-id:date:x-gm-message-state:from:to:cc; bh=INN7PIgXiadwGovRAjy42jqyjlBtEC4HF54Zz7onxbw=; b=jcd2hTllE6q8jzqIZwbBrajurDIOrjmKi9q6BhOWM6DxkRdNz8vmh/JoV/+lGLUeu9 G4pUkgMVj6Vr9qN0JsRYqtNXnL7m+OJTttAaJ1FgomMy/EAVCkJ4ej0Pm96weg0JjWM6 3k7kzUNfeoBRJSPypY3+a34Tw9ce7EgXcjZXhmj3qM7O+b270udOO0HSl1xrOGYM0yUE 5gCk3o5nRB1Vc8rDQDVAKUMssYgYrWO+2z8k4KUTQy9kSVEp2qf0+ti7YYbJ8cLdlZzu vfbYDEnaSaHqCYwJhWkj2L/Asrwb/rcow567FTOhtB9pjLEF4CB1BT4CDh660XLh7htD LQyg== X-Gm-Message-State: ACgBeo1y90okrITz2P7wczcuOROY81cfXK9TtNQY4svLGEvJk9bPB9QR ZRZDr9LkqKaR6mMl2zWXB4hhad4Lop83c9K9j699OF7zP7Vb6qrUGvIPdewivs4Nxk5IZii/I9n 5bm6AvIWndq4= X-Received: by 2002:a63:82c8:0:b0:42a:498e:93ae with SMTP id w191-20020a6382c8000000b0042a498e93aemr14683684pgd.607.1661245540297; Tue, 23 Aug 2022 02:05:40 -0700 (PDT) X-Google-Smtp-Source: AA6agR4DHhQSi/HHjksiZl3epz+OBvTIZi3etnh1KD+p/SnaECEwWLyrQSv5Xeq/sqgreQqQSPBTMg== X-Received: by 2002:a63:82c8:0:b0:42a:498e:93ae with SMTP id w191-20020a6382c8000000b0042a498e93aemr14683666pgd.607.1661245540056; Tue, 23 Aug 2022 02:05:40 -0700 (PDT) Received: from localhost ([240d:1a:c0d:9f00:4f2f:926a:23dd:8588]) by smtp.gmail.com with ESMTPSA id l8-20020a170903244800b0016bea74d11esm6167062pls.267.2022.08.23.02.05.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Aug 2022 02:05:39 -0700 (PDT) Date: Tue, 23 Aug 2022 18:05:36 +0900 (JST) Message-Id: <20220823.180536.902316146510887788.syoshida@redhat.com> To: apopple@nvidia.com Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, syzbot+616ff0452fec30f4dcfd@syzkaller.appspotmail.com, jhubbard@nvidia.com Subject: Re: [PATCH v2] mm/gup.c: Fix return value for __gup_longterm_locked() From: Shigeru Yoshida In-Reply-To: <8735dnu53w.fsf@nvdebian.thelocal> References: <20220822153713.962904-1-syoshida@redhat.com> <8735dnu53w.fsf@nvdebian.thelocal> X-Mailer: Mew version 6.8 on Emacs 28.1 Mime-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit ARC-Authentication-Results: i=1; imf31.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=IFc86N1f; spf=pass (imf31.hostedemail.com: domain of syoshida@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=syoshida@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1661245543; a=rsa-sha256; cv=none; b=eYow38MeQkhJ+la1S+14dgDMGHH6VXEjywF4pCiTeEc2/uLRM95XTVULZXEuuEMe0p5EIP 705qFCZxpMFIprsutDtZ2M73qsnu/qlZ3Of/fCEC3ZDGY3xQCnmS+1TXY+3L3xsCNBncNa 83S4wx0AOR7bsg3XVzcZT4v0i/q1c1w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1661245543; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=INN7PIgXiadwGovRAjy42jqyjlBtEC4HF54Zz7onxbw=; b=m5dmGYGZ+kDpsHBErsivtgWF9KQVufzf7VXWZV3P6cXe/eGZLZlwLPCkwFboIvfcXNwVb3 8h9S0xRBPhwesnXjyX2BDneScsJXZzetYnsUZ5mNrtKm1AcwY+pfgSHGSkbU/u7cFjtagJ HhutkmC3ykmHKQO4KufoyI3Lbnh6CQA= Authentication-Results: imf31.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=IFc86N1f; spf=pass (imf31.hostedemail.com: domain of syoshida@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=syoshida@redhat.com; dmarc=pass (policy=none) header.from=redhat.com X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 2380120044 X-Stat-Signature: ekt4yyienatx686hk71mr6ip3wahofit X-HE-Tag: 1661245542-768540 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, 23 Aug 2022 11:15:29 +1000, Alistair Popple wrote: > > Shigeru Yoshida writes: > >> __get_user_pages_locked() may return the number of pages less than >> nr_pages. So __gup_longterm_locked() have to return the number of >> pages __get_user_pages_locked() returns if it succeeded, not nr_pages >> requested. > > Thanks for fixing this, I've been out the last few days so just catching > up. I think I missed that 'rc' was passed as nr_pages into > check_and_migrate_movable_pages(). Will double check that I don't make > the same mistake in my latest series. Thank you so much for your review. Andrew has already applied the patch. >> Fixes: 61c63c2076d9 (mm/gup.c: simplify and fix check_and_migrate_movable_pages() return codes) > > I couldn't find that SHA1, I'm guessing due to rebasing, etc. of > mm-unstable? Not sure how that is dealt with, but feel free to also add: Yes, actually this hash is from from linux-next tree. Thanks, Shigeru > Reviewed-by: Alistair Popple > >> CC: Alistair Popple >> Reported-by: syzbot+616ff0452fec30f4dcfd@syzkaller.appspotmail.com >> Reviewed-by: John Hubbard >> Signed-off-by: Shigeru Yoshida >> --- >> mm/gup.c | 14 ++++++++------ >> 1 file changed, 8 insertions(+), 6 deletions(-) >> >> diff --git a/mm/gup.c b/mm/gup.c >> index 5aa7531a703b..66582203220a 100644 >> --- a/mm/gup.c >> +++ b/mm/gup.c >> @@ -2068,22 +2068,24 @@ static long __gup_longterm_locked(struct mm_struct *mm, >> unsigned int gup_flags) >> { >> unsigned int flags; >> - long rc; >> + long rc, nr_pinned_pages; >> >> if (!(gup_flags & FOLL_LONGTERM)) >> return __get_user_pages_locked(mm, start, nr_pages, pages, vmas, >> NULL, gup_flags); >> flags = memalloc_pin_save(); >> do { >> - rc = __get_user_pages_locked(mm, start, nr_pages, pages, vmas, >> - NULL, gup_flags); >> - if (rc <= 0) >> + nr_pinned_pages = >> + __get_user_pages_locked(mm, start, nr_pages, pages, >> + vmas, NULL, gup_flags); >> + if (nr_pinned_pages <= 0) >> break; >> - rc = check_and_migrate_movable_pages(rc, pages, gup_flags); >> + rc = check_and_migrate_movable_pages(nr_pinned_pages, pages, >> + gup_flags); >> } while (rc == -EAGAIN); >> memalloc_pin_restore(flags); >> >> - return rc ? rc : nr_pages; >> + return rc ? rc : nr_pinned_pages; >> } >> >> static bool is_valid_gup_flags(unsigned int gup_flags) >