Received: by 2002:a05:6a10:413:0:0:0:0 with SMTP id 19csp794603pxp; Fri, 11 Mar 2022 15:19:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJz2D4RFdUoKjHDwcSbMRMYAJXoU0d6OmiArxvJ99DgsNde/lyRf4TNDehN7qIvpWeaYdqI4 X-Received: by 2002:a17:90b:1c0c:b0:1bf:a639:a395 with SMTP id oc12-20020a17090b1c0c00b001bfa639a395mr18416998pjb.27.1647040775621; Fri, 11 Mar 2022 15:19:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1647040775; cv=none; d=google.com; s=arc-20160816; b=bfhlLNx+6R1QolMQPi14bn+ooR+RTOuwZOT5sKu+KZcCgEGo6q366APz2L/JiHe17O +lrjXZN80LcaA/UIeHrLKOKvMkfC0s2IqhVcGryFhjsCO6BpAMKAd1jCHcQYl00kwZpx 7QUAw8bQsHsABb7DMbr1N13NJb+bUSCekhrAxK0PD9rpSRoDjLSPjRj6OwKcjNBVztlE N+S3a7jXdRpUHT9FcBCeUqjZl+9ASmq2tUDwIo9f+Cpr3hLvKaGCXf4HClfWfKRRjCR8 ohGtDjcaktPYy6UINvwOxCAO9wcDg9QKWFMKf8dTIFYTxqH34W9uDwdSxi+U7SWUgt9n Uk7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=RMMRc4l/DMGvaxhGwtRQMf5EeR3IlqrnnLrpu8bbrak=; b=YVtO3CCVF4xzk68/UEzmgjM1PviF46sJAkQRzu0uw0UCTtN1pBemQjZ8I3RZ7VvnPf ipNXzCBOejmOWv0xe0+zxi2b3XQr6zl2BIwIy9Q9Xvsjsn3z4/eYUwlyyJdyxWWkR+Sh 6FBNYfa0yTWLrC29qrh/PHfjwNwTqQq1CiFuKiKn71U2sdw6xEWXlyXRMk7eBHh7yGC6 PL3jYislQPnpxUwMuIhlxWet5sLFRVvYtBwicum3Rj8ybgCCmAmqzLjez2nnvXsz9ajy C8akqlx76b7pZ8IoH/VZC5HNyeqrBk12rcjL56bYObBSOS6U6VbnRizZUc0SJxerIe7o lPdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=WzqIFtBh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id v10-20020a63f84a000000b0035de50308f7si9008416pgj.281.2022.03.11.15.19.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 11 Mar 2022 15:19:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@quicinc.com header.s=qcdkim header.b=WzqIFtBh; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=quicinc.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 098D539C16E; Fri, 11 Mar 2022 14:05:53 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349375AbiCKPcV (ORCPT + 99 others); Fri, 11 Mar 2022 10:32:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47276 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245374AbiCKPcP (ORCPT ); Fri, 11 Mar 2022 10:32:15 -0500 Received: from alexa-out-sd-02.qualcomm.com (alexa-out-sd-02.qualcomm.com [199.106.114.39]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A0CD71B8CB5; Fri, 11 Mar 2022 07:31:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qcdkim; t=1647012671; x=1678548671; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=RMMRc4l/DMGvaxhGwtRQMf5EeR3IlqrnnLrpu8bbrak=; b=WzqIFtBhcXIggjeehhHaEQVuhhi8jKTqMAIrAJoziPqTuWQR5r75229M ATZntzVNx1bp8+Nx58vCjnEFYJwGo9rOuLmkjxVGLEOcErdC/tqfQRbGu bgff4I17h1SqFWPb+QikvSbO/XPDQM2DwJaxmbtpXN6EgoJlg/SWJ0vHK o=; Received: from unknown (HELO ironmsg01-sd.qualcomm.com) ([10.53.140.141]) by alexa-out-sd-02.qualcomm.com with ESMTP; 11 Mar 2022 07:31:11 -0800 X-QCInternal: smtphost Received: from nasanex01c.na.qualcomm.com ([10.47.97.222]) by ironmsg01-sd.qualcomm.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Mar 2022 07:31:10 -0800 Received: from nalasex01a.na.qualcomm.com (10.47.209.196) by nasanex01c.na.qualcomm.com (10.47.97.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.15; Fri, 11 Mar 2022 07:31:10 -0800 Received: from hu-charante-hyd.qualcomm.com (10.80.80.8) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.15; Fri, 11 Mar 2022 07:31:05 -0800 From: Charan Teja Kalla To: , , , , , , , , CC: , , Charan Teja Kalla , "# 5 . 10+" Subject: [PATCH V2,2/2] mm: madvise: skip unmapped vma holes passed to process_madvise Date: Fri, 11 Mar 2022 20:59:06 +0530 Message-ID: <4f091776142f2ebf7b94018146de72318474e686.1647008754.git.quic_charante@quicinc.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.80.80.8] X-ClientProxiedBy: nasanex01b.na.qualcomm.com (10.46.141.250) To nalasex01a.na.qualcomm.com (10.47.209.196) X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The process_madvise() system call is expected to skip holes in vma passed through 'struct iovec' vector list. But do_madvise, which process_madvise() calls for each vma, returns ENOMEM in case of unmapped holes, despite the VMA is processed. Thus process_madvise() should treat ENOMEM as expected and consider the VMA passed to as processed and continue processing other vma's in the vector list. Returning -ENOMEM to user, despite the VMA is processed, will be unable to figure out where to start the next madvise. Fixes: ecb8ac8b1f14("mm/madvise: introduce process_madvise() syscall: an external memory hinting API") Cc: # 5.10+ Signed-off-by: Charan Teja Kalla --- Changes in V2: -- Fixed handling of ENOMEM by process_madvise(). -- Patch doesn't exist in V1. mm/madvise.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mm/madvise.c b/mm/madvise.c index e97e6a9..14fb76d 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -1426,9 +1426,16 @@ SYSCALL_DEFINE5(process_madvise, int, pidfd, const struct iovec __user *, vec, while (iov_iter_count(&iter)) { iovec = iov_iter_iovec(&iter); + /* + * do_madvise returns ENOMEM if unmapped holes are present + * in the passed VMA. process_madvise() is expected to skip + * unmapped holes passed to it in the 'struct iovec' list + * and not fail because of them. Thus treat -ENOMEM return + * from do_madvise as valid and continue processing. + */ ret = do_madvise(mm, (unsigned long)iovec.iov_base, iovec.iov_len, behavior); - if (ret < 0) + if (ret < 0 && ret != -ENOMEM) break; iov_iter_advance(&iter, iovec.iov_len); } -- 2.7.4