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=-3.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no 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 21C8AC433E0 for ; Sat, 23 May 2020 05:22:53 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D7FD320759 for ; Sat, 23 May 2020 05:22:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="uBIitKjK" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D7FD320759 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 845488000B; Sat, 23 May 2020 01:22:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7F61E80007; Sat, 23 May 2020 01:22:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7333B8000B; Sat, 23 May 2020 01:22:52 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0105.hostedemail.com [216.40.44.105]) by kanga.kvack.org (Postfix) with ESMTP id 5ABFA80007 for ; Sat, 23 May 2020 01:22:52 -0400 (EDT) Received: from smtpin09.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 0FFA1282D for ; Sat, 23 May 2020 05:22:52 +0000 (UTC) X-FDA: 76846839384.09.songs60_361911873c83b X-HE-Tag: songs60_361911873c83b X-Filterd-Recvd-Size: 3006 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by imf22.hostedemail.com (Postfix) with ESMTP for ; Sat, 23 May 2020 05:22:51 +0000 (UTC) Received: from localhost.localdomain (c-73-231-172-41.hsd1.ca.comcast.net [73.231.172.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 721B52072C; Sat, 23 May 2020 05:22:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1590211370; bh=QQglbWmPgUr5vTOf+1zOUyAT8qRzcqCOLjnra1dJ/x4=; h=Date:From:To:Subject:In-Reply-To:From; b=uBIitKjK7GPd1+GMyH4wt2eFo2jX+tIcSSS3lh7IKrMutl1JIIQMw8pvuTRIspYVo m9jZOrMUPLnlQfzKwzGRoih+bhnXL1o2Mq31XRpWPCK+kPFTlzAmQbFFPibdTfGGLN qTDSrr6YTBKZ1PBm4d/GPV0153AXa40z4/hmsDAc= Date: Fri, 22 May 2020 22:22:48 -0700 From: Andrew Morton To: akpm@linux-foundation.org, alex.bou9@gmail.com, dan.carpenter@oracle.com, jhubbard@nvidia.com, linux-mm@kvack.org, mm-commits@vger.kernel.org, mporter@kernel.crashing.org, stable@vger.kernel.org, sumit.semwal@linaro.org, torvalds@linux-foundation.org Subject: [patch 03/11] rapidio: fix an error in get_user_pages_fast() error handling Message-ID: <20200523052248.tWpCIO_Wo%akpm@linux-foundation.org> In-Reply-To: <20200522222217.ee14ad7eda7aab1e6697da6c@linux-foundation.org> User-Agent: s-nail v14.8.16 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: From: John Hubbard Subject: rapidio: fix an error in get_user_pages_fast() error handling In the case of get_user_pages_fast() returning fewer pages than requested, rio_dma_transfer() does not quite do the right thing. It attempts to release all the pages that were requested, rather than just the pages that were pinned. Fix the error handling so that only the pages that were successfully pinned are released. Link: http://lkml.kernel.org/r/20200517235620.205225-2-jhubbard@nvidia.com Fixes: e8de370188d0 ("rapidio: add mport char device driver") Signed-off-by: John Hubbard Reviewed-by: Andrew Morton Cc: Matt Porter Cc: Alexandre Bounine Cc: Sumit Semwal Cc: Dan Carpenter Cc: Signed-off-by: Andrew Morton --- drivers/rapidio/devices/rio_mport_cdev.c | 5 +++++ 1 file changed, 5 insertions(+) --- a/drivers/rapidio/devices/rio_mport_cdev.c~rapidio-fix-an-error-in-get_user_pages_fast-error-handling +++ a/drivers/rapidio/devices/rio_mport_cdev.c @@ -877,6 +877,11 @@ rio_dma_transfer(struct file *filp, u32 rmcd_error("pinned %ld out of %ld pages", pinned, nr_pages); ret = -EFAULT; + /* + * Set nr_pages up to mean "how many pages to unpin, in + * the error handler: + */ + nr_pages = pinned; goto err_pg; } _