Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1392889ybl; Fri, 13 Dec 2019 14:41:20 -0800 (PST) X-Google-Smtp-Source: APXvYqzzGmgIGgJOdmYu4ELOZW0La9FKEmijaURmygkv5X8jZp7QnXmOoOgv+NMOcxXJMS/NQ81T X-Received: by 2002:a9d:ea6:: with SMTP id 35mr16784553otj.106.1576276880107; Fri, 13 Dec 2019 14:41:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1576276880; cv=none; d=google.com; s=arc-20160816; b=xvERWk+htC08/yZgtJy3lpj0GKpTEvoQDhgD7GT7V7mKc3b7SknRAXFRe0WJRVnUy7 V1m2gIW0couQJaaVs8/PDl/agHzv3i1EV6xTsSoH4omAWmNoyILjNc91P+Kx7KtId3g7 R5n24JLXDwNnZ8H34jVpk5XFoNE8s0s18SRZSXmFggBVU9V/xV9ocnNhWiX8gzz4BnBH yU/jpnCIz6GADurEH2aXbguh63mg4Y8oyP8/7inNSHIUsEYO2iXCUH6OOCsRfUHraO3w WSU3jO0mjFmBUZJbSqvMIO9K35XdWNbKgsZmStZs3WgEs7/n6klIFqryUREfFadk90jB EP+w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=74v7HiGgbBAHeNKMpHqgEqCmBPHFoyU/JV2AnPu0Ks4=; b=uL9ECJOrngKvb4/PQuWo5PAYwWWh28NSDuqw+UpjkA/Nc9qPpJDEfdUboy+eYZjARA P+iNkiAjxpO4J5nI3+xWNOq5QLGHZ7vHoPfevbsG2tOY5UYkacGXol0WvYJYooEBksEW 8oRhhf2PSVgLOnphOhLg8W44a/0lOGYYSkzlc9yQmdCKcNCZdW3pxd1Xj5q26Gic9T/a VPKL2s1PNIp2qvhR0wGoxTI7/EHmsSR7u4tKWBNd5uhE3f7KeUcrHUSp32/1tKh9BYi6 piuldff8Z5pwJJ6JuWk/eSVulBzjj8tUAwSQtglKYH4yhpM5GcShU3A+r+mBasQjWySJ cnNw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="FyMlv/TF"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g10si5787468oia.98.2019.12.13.14.41.08; Fri, 13 Dec 2019 14:41:20 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="FyMlv/TF"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726551AbfLMWj3 (ORCPT + 99 others); Fri, 13 Dec 2019 17:39:29 -0500 Received: from mail-io1-f66.google.com ([209.85.166.66]:41418 "EHLO mail-io1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725747AbfLMWj3 (ORCPT ); Fri, 13 Dec 2019 17:39:29 -0500 Received: by mail-io1-f66.google.com with SMTP id c16so1239202ioo.8 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=S3zg3O+Sqq4HXZbWvK8KVcul+fjUDB2eSo+p2WnX0MmGO+IQrcn5swCv7oH64pLnTh eDxOo/mHO/QPmeg+5xRAT49hjAbxLWIagszvyv2oUfRtTXhE810Uli6dVntGKEy1idzk Ywpfcf4aLhXT4X1Raa2IqMmRKDoW/kZMIGgllW8D4wMnbUQhWf5ki6/i8jEQGI3FKQTH g0e2tVBXKra6DU8n4JRC2GTpMKAbfZWO0ruY+qZoLH/IglYnmQgOfpBQzmI5BGgjT9Pr ug95bK6ISZc/SokLuTdwuvK4kWXRWonca65BiuBhXjxUIHGsiDQj/Zi699vWCUPxcD7n cHAA== X-Gm-Message-State: APjAAAXVXCNHpbTo+cemlHx4PaTToP7aua5yhi47FSaW3hggBkl2qHnM DXL9+zo8d1tVkVO+sX+zmn0hoZ2KaCcZQQnVSk4JUZA0 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" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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.