Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp6811524ybf; Fri, 6 Mar 2020 05:05:56 -0800 (PST) X-Google-Smtp-Source: ADFU+vuMi6gocLKQ9ilPWgOSXp5Dc95IT0j3k3WnCMHXZ+G62UD8wAZFbd6ShtsdBFvtjecquraE X-Received: by 2002:aca:5491:: with SMTP id i139mr2538268oib.24.1583499954681; Fri, 06 Mar 2020 05:05:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583499954; cv=none; d=google.com; s=arc-20160816; b=G0o4suY0k05rTg3xAKajvQDWBIecmKNbJuUkBZhiw9xWRPcwygeTRNyAlRdiGv71P0 y9cTyfU7pYuB6bXJd1VBf+c4YHtMHv8+lsDFogfC3tgKFylc1Nsf6ule5tpLGT1oDbiS UEVBqYD/90iqIUGLfK1r8BQ3wf+dA4FDZY2UD1d03hAcgrdiKxIW70Pg8HIE7N6G2GGK oU5KBZ+GwwGJqICcfPqB5W4vG4egT1k+BTno0GLBXh3WeKm7erzp57eIVgjtl93kSWWX CTuEfrlYoiunY8ucpWGxAlpXfKIBwY7O/amksIZOxL8tNuHG+a4lBTrQYYkQWYDSd57o jCKw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=AeNZCzKp4mmhDEQbTbjcCIj/A6BgEDT9MrAVKVagARs=; b=K2QjBmdHHTI+YCF79sSJFXLeD15SU+1nZ611zRVsDAWO8pVq9R5mIXcAyXqXUiP9Af XjDkUdpes1cdOjFn+AOWvKjTQnVzYYJxce4ublUIxwVzhsZg6/AmzlFqwhsfvmBcC9sF dfif2cfFHzvpD5cMCgfUMtAeFwAXfamFDetfZUx9V6ckyw0NlpaGj5NQI2UkOsOK8vsi oy/WLZOynuQE2CU3AMIBATvjuxd911c4albqrr5vYVBy7FemVcYoIY4d3bBxhKGfJPkl SOxCIPYqejmVHwv6TADhKWjGv9MNS487OSytsR0gDFliLiRtR7AHLMokhPUCdSUFSS8p Qdqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=HGbxSKDO; 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=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id z6si1429436oto.204.2020.03.06.05.05.34; Fri, 06 Mar 2020 05:05:54 -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=@redhat.com header.s=mimecast20190719 header.b=HGbxSKDO; 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=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726957AbgCFNDJ (ORCPT + 99 others); Fri, 6 Mar 2020 08:03:09 -0500 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:35306 "EHLO us-smtp-1.mimecast.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726704AbgCFNDJ (ORCPT ); Fri, 6 Mar 2020 08:03:09 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583499788; 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: in-reply-to:in-reply-to:references:references; bh=AeNZCzKp4mmhDEQbTbjcCIj/A6BgEDT9MrAVKVagARs=; b=HGbxSKDOJsKgfkbZV2frfF4pRwQuVPUu6c7t+cPgmTb4ozTpwyTTi3EHjeAqLbCCqaCADu fvsekQ5n8rOMFVBGO8aIPNF87E0YtLxxXxJ9vlmlX0937vEMf8jWy+w+oRYtdVCvnz09QB tSP0wYNfFbhhNI7H3NAc1jtsdJpfra8= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-229-m3LY9_CRMfe2DM-pJmiFBA-1; Fri, 06 Mar 2020 08:03:06 -0500 X-MC-Unique: m3LY9_CRMfe2DM-pJmiFBA-1 Received: by mail-wr1-f70.google.com with SMTP id b12so975167wro.4 for ; Fri, 06 Mar 2020 05:03:06 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=AeNZCzKp4mmhDEQbTbjcCIj/A6BgEDT9MrAVKVagARs=; b=FqVWWTGRXap5y0HXaNSfblIBCl/9RlCfD1L1OO7VKSeddtZCYyezztTgltQUPlvx5j xoExr0Kgy1ohMl5kWZ2UTdL0zHaxyIDcRFW5cQM5lVlkNAz5R3vf2Z+P4D/A2ppEJpSo WLgnugAPVwDut7USQmqqefHh9zjFYTdUcucjTWlJsGZae1bwJBnS2Z4Jr6XQnpI10vZC XmWJ5nkbHXt0y/uD4q/mTrOslcG9O6d7EzsyvAye2Bo2gFNiGzLsD1zEPTPMsnz5gaU4 BnTc4YM74h9M6CvYTSxBjdPW2u3n6he0BaPISiU0ks8nrajG04U8jEjEOBl620lvazPO kerg== X-Gm-Message-State: ANhLgQ0XsqHMVDqoVkiXqSu9at6Kw3O4BOBhuX2FNzyu2YDmld+MbuJh E9jJDuPTy4a8lOCAIQ3bsDYgztoyCvISCz7453R+q+o8TMWAbtSd11mDdtoGJXnBmV88S4qXqo+ Ka/8JW+gAxE8KNueuDAR+atqF X-Received: by 2002:a7b:ce16:: with SMTP id m22mr3898430wmc.139.1583499785757; Fri, 06 Mar 2020 05:03:05 -0800 (PST) X-Received: by 2002:a7b:ce16:: with SMTP id m22mr3898394wmc.139.1583499785507; Fri, 06 Mar 2020 05:03:05 -0800 (PST) Received: from localhost ([2001:470:5b39:28:1273:be38:bc73:5c36]) by smtp.gmail.com with ESMTPSA id u8sm4029986wrn.69.2020.03.06.05.03.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Mar 2020 05:03:03 -0800 (PST) Date: Fri, 6 Mar 2020 14:03:03 +0100 From: Oleksandr Natalenko To: Vlastimil Babka Cc: Minchan Kim , Andrew Morton , LKML , linux-mm , linux-api@vger.kernel.org, Suren Baghdasaryan , Tim Murray , Daniel Colascione , Sandeep Patil , Sonny Rao , Brian Geffon , Michal Hocko , Johannes Weiner , Shakeel Butt , John Dias , Joel Fernandes , Jann Horn , alexander.h.duyck@linux.intel.com, sj38.park@gmail.com Subject: Re: [PATCH v7 6/7] mm/madvise: employ mmget_still_valid for write lock Message-ID: <20200306130303.kztv64f52qknxb6k@butterfly.localdomain> References: <20200302193630.68771-1-minchan@kernel.org> <20200302193630.68771-7-minchan@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hello. On Fri, Mar 06, 2020 at 01:52:07PM +0100, Vlastimil Babka wrote: > > diff --git a/mm/madvise.c b/mm/madvise.c > > index e794367f681e..e77c6c1fad34 100644 > > --- a/mm/madvise.c > > +++ b/mm/madvise.c > > @@ -1118,6 +1118,8 @@ int do_madvise(struct task_struct *target_task, struct mm_struct *mm, > > if (write) { > > if (down_write_killable(&mm->mmap_sem)) > > return -EINTR; > > + if (current->mm != mm && !mmget_still_valid(mm)) > > + goto skip_mm; > > This will return 0, is that correct? Shoudln't there be a similar error e.g. as > when finding the task by pid fails (-ESRCH ?), because IIUC the task here is > going away and dumping the core? Yeah. Something like this then: === diff --git a/mm/madvise.c b/mm/madvise.c index 48d1da08c160..7ed2f4d13924 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -1122,6 +1122,10 @@ int do_madvise(struct task_struct *target_task, struct mm_struct *mm, if (write) { if (down_write_killable(&mm->mmap_sem)) return -EINTR; + if (current->mm != mm && !mmget_still_valid(mm)) { + error = -ESRCH; + goto skip_mm; + } } else { down_read(&mm->mmap_sem); } @@ -1173,6 +1177,7 @@ int do_madvise(struct task_struct *target_task, struct mm_struct *mm, } out: blk_finish_plug(&plug); +skip_mm: if (write) up_write(&mm->mmap_sem); else === ? > > > } else { > > down_read(&mm->mmap_sem); > > } > > @@ -1169,6 +1171,7 @@ int do_madvise(struct task_struct *target_task, struct mm_struct *mm, > > } > > out: > > blk_finish_plug(&plug); > > +skip_mm: > > if (write) > > up_write(&mm->mmap_sem); > > else > > > -- Best regards, Oleksandr Natalenko (post-factum) Principal Software Maintenance Engineer