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 X-Spam-Level: X-Spam-Status: No, score=-6.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 04E69C43603 for ; Fri, 13 Dec 2019 22:39:31 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id BF480214D8 for ; Fri, 13 Dec 2019 22:39:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FyMlv/TF" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org BF480214D8 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 62AB28E0005; Fri, 13 Dec 2019 17:39:30 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 602F68E0001; Fri, 13 Dec 2019 17:39:30 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 540218E0005; Fri, 13 Dec 2019 17:39:30 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0193.hostedemail.com [216.40.44.193]) by kanga.kvack.org (Postfix) with ESMTP id 3FB928E0001 for ; Fri, 13 Dec 2019 17:39:30 -0500 (EST) Received: from smtpin01.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id F35EA180AD81F for ; Fri, 13 Dec 2019 22:39:29 +0000 (UTC) X-FDA: 76261586058.01.hope42_6ffb3e24c470e X-HE-Tag: hope42_6ffb3e24c470e X-Filterd-Recvd-Size: 5343 Received: from mail-io1-f67.google.com (mail-io1-f67.google.com [209.85.166.67]) by imf23.hostedemail.com (Postfix) with ESMTP for ; Fri, 13 Dec 2019 22:39:29 +0000 (UTC) Received: by mail-io1-f67.google.com with SMTP id z193so1064934iof.1 for ; Fri, 13 Dec 2019 14:39:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=74v7HiGgbBAHeNKMpHqgEqCmBPHFoyU/JV2AnPu0Ks4=; b=FyMlv/TFQVgFTyUG/KC5Ts/sLnkjnrivcYQS/lYuenlqWbDQMh9abPLIksU7zHBfog Kyr3qaDPHv35G8ouO/au7hPkIZkCDzv9Z8DvJTFjz47EI2p+rtJ00H+AOLsDyZgDw1+8 ey8mfhj7+zXm74Yt54z2vlM33gn4kiyJohwGL6J8dV53Kh4aLFjJqtHQv2IbRAKh/Nlf amn3d90/Gs1qXATP/z5TSRDTx1AOoqE71/AoFBvuRljl4ufz18VkVubN/tLyYMngSuq2 QVRMZ/4Ezxj04h36tvgYK3XZvLu07Nrenabo/HzZo/ODrnpbSkbC0cuUXmWtp9kzu3mV BCbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=74v7HiGgbBAHeNKMpHqgEqCmBPHFoyU/JV2AnPu0Ks4=; b=o2jCJm482VTTkD4plgLlBptnnW+s1LgL+dtF494EMilAAPuvFXyrYbP+aqi3bXKiUh erShje5vey95RbdXz0fIkTbjeoV7JNXKrLSdKEQLYUbqoVlYUy+unMAVoIB+tSUX8F3C 6qmzmzKyXDuCKsHM2jDmnGOKyoMl3N1/bxug4O1/+Bw88rdyZgfHAQ8Xb571OEIzpsHo ld+6xUF3KmB3c/FxcVi+xacirgzh2WaOIN/oRj3CrxBwjMSp79vk44FwxG/bveJknbYp iFS7U7KSmgwu4jdbg7mhWzoORCY2udbM2zdaN5YUeQIMm/dUN7W1PCceZlDdSeqUXHMI Zz5A== X-Gm-Message-State: APjAAAX4Ae5o+XN/Lo4W49XputgRSo+dUtcVWtQiApCn3C0Q6ploUFKG 1oKugHBxXBFm8lnXOKkC1LVp/JEu5OgrV9snMs4= X-Google-Smtp-Source: APXvYqz110abgkf5DuKNPQRJsYOsoXz79z+Ilra9uwCaSXuv4YUYfvIOpGNBA/WzyiRVAf+mofqVDym14bQQW2cwJtg= X-Received: by 2002:a5d:8744:: with SMTP id k4mr9894528iol.227.1576276768696; Fri, 13 Dec 2019 14:39:28 -0800 (PST) MIME-Version: 1.0 References: <20191211174653.4102-1-navid.emamdoost@gmail.com> <9a692d27-4654-f1fc-d4c5-c6efba02c8a9@nvidia.com> <20191213142332.d7fafc243291eac302375c32@linux-foundation.org> In-Reply-To: <20191213142332.d7fafc243291eac302375c32@linux-foundation.org> From: Navid Emamdoost Date: Fri, 13 Dec 2019 16:39:17 -0600 Message-ID: Subject: Re: [PATCH] mm/gup: Fix memory leak in __gup_benchmark_ioctl To: Andrew Morton Cc: John Hubbard , "Kirill A. Shutemov" , Keith Busch , linux-mm@kvack.org, LKML , Navid Emamdoost Content-Type: text/plain; charset="UTF-8" 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 Fri, Dec 13, 2019 at 4:23 PM Andrew Morton wrote: > > On Fri, 13 Dec 2019 13:40:15 -0800 John Hubbard wrote: > > > On 12/11/19 9:46 AM, Navid Emamdoost wrote: > > > In the implementation of __gup_benchmark_ioctl() the allocated pages > > > should be released before returning in case of an invalid cmd. Release > > > pages via kvfree(). > > > > > > Fixes: 714a3a1ebafe ("mm/gup_benchmark.c: add additional pinning methods") > > > Signed-off-by: Navid Emamdoost > > > --- > > > mm/gup_benchmark.c | 1 + > > > 1 file changed, 1 insertion(+) > > > > > > diff --git a/mm/gup_benchmark.c b/mm/gup_benchmark.c > > > index 7dd602d7f8db..b160638f647e 100644 > > > --- a/mm/gup_benchmark.c > > > +++ b/mm/gup_benchmark.c > > > @@ -63,6 +63,7 @@ static int __gup_benchmark_ioctl(unsigned int cmd, > > > NULL); > > > break; > > > default: > > > + kvfree(pages); > > > return -1; > > > } > > > > > > > Hi, > > > > The patch is correct, but I would like to second Ira's request for a ret value, > > and a "goto done" to use a single place to kvfree, if you don't mind. > > > > Fair enough. > > And let's make it return -EINVAL rather than -1, which appears to be > -EPERM. Sure! patch v2 has been sent. > > --- a/mm/gup_benchmark.c~mm-gup-fix-memory-leak-in-__gup_benchmark_ioctl-fix > +++ a/mm/gup_benchmark.c > @@ -26,6 +26,7 @@ static int __gup_benchmark_ioctl(unsigne > unsigned long i, nr_pages, addr, next; > int nr; > struct page **pages; > + int ret = 0; > > if (gup->size > ULONG_MAX) > return -EINVAL; > @@ -64,7 +65,8 @@ static int __gup_benchmark_ioctl(unsigne > break; > default: > kvfree(pages); > - return -1; > + ret = -EINVAL; > + goto out; > } > > if (nr <= 0) > @@ -86,7 +88,8 @@ static int __gup_benchmark_ioctl(unsigne > gup->put_delta_usec = ktime_us_delta(end_time, start_time); > > kvfree(pages); > - return 0; > +out: > + return ret; > } > > static long gup_benchmark_ioctl(struct file *filep, unsigned int cmd, > _ > -- Navid.