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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 41195C4167B for ; Tue, 28 Nov 2023 14:08:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BBBCA6B02FA; Tue, 28 Nov 2023 09:08:09 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B45126B02FF; Tue, 28 Nov 2023 09:08:09 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9E5D56B0301; Tue, 28 Nov 2023 09:08:09 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7E75F6B02FA for ; Tue, 28 Nov 2023 09:08:09 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 48757A025D for ; Tue, 28 Nov 2023 14:08:09 +0000 (UTC) X-FDA: 81507542298.29.9563C86 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf17.hostedemail.com (Postfix) with ESMTP id BA65E401EE for ; Tue, 28 Nov 2023 14:07:31 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=none; spf=pass (imf17.hostedemail.com: domain of mhocko@suse.com designates 195.135.223.130 as permitted sender) smtp.mailfrom=mhocko@suse.com; dmarc=pass (policy=quarantine) header.from=suse.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701180452; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cb5720N79DJnIiKL/nYtkhy+YSMfQzHh5Itmu08Tbz4=; b=KPNpHy+XLS6Vi7nRZ+toffUTO6+sfxvzluPUmIHNnZiyvnhU8PPy6Ug+tFNl3FaSpE7d6r wuryFrLcQPDIur5jAniqnIffs2ofa7YoRwv1Y5em8d/oeZOnW8gh79/VhmQLGMkUthgG/u seexgsHPV3WXAljL+l7Bj6qVf1ja1Ts= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701180452; a=rsa-sha256; cv=none; b=T3zlKEex6tA4gToewaIpAV5lxFsj2tOvUaBsmDMRx6Rxpbr/wTlx7QPkl80PRVxfrEXh3v tZ0WhLzPdCAGnyEwE2TM7BJh2BNUhX/gfq7huQHHt/xyPJBQ2omXBO8re4V/RngL6WUqts UQXZkrmOztwHJ/h25PJxaEcAJnavgvc= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=none; spf=pass (imf17.hostedemail.com: domain of mhocko@suse.com designates 195.135.223.130 as permitted sender) smtp.mailfrom=mhocko@suse.com; dmarc=pass (policy=quarantine) header.from=suse.com Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 8B5A721992; Tue, 28 Nov 2023 14:07:29 +0000 (UTC) Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 696C11343E; Tue, 28 Nov 2023 14:07:29 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id 5JUxFyH0ZWXyNgAAD6G6ig (envelope-from ); Tue, 28 Nov 2023 14:07:29 +0000 Date: Tue, 28 Nov 2023 15:07:28 +0100 From: Michal Hocko To: Gregory Price Cc: linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-api@vger.kernel.org, linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, akpm@linux-foundation.org, arnd@arndb.de, tglx@linutronix.de, luto@kernel.org, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, tj@kernel.org, ying.huang@intel.com, Gregory Price Subject: Re: [RFC PATCH 04/11] mm/mempolicy: modify get_mempolicy call stack to take a task argument Message-ID: References: <20231122211200.31620-1-gregory.price@memverge.com> <20231122211200.31620-5-gregory.price@memverge.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231122211200.31620-5-gregory.price@memverge.com> X-Spamd-Bar: +++++++++++++++ X-Spam: Yes X-Stat-Signature: 1wqj1w1rrmqhb6brissboraxf4dn8651 X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: BA65E401EE X-Rspam-User: X-HE-Tag: 1701180451-46623 X-HE-Meta: U2FsdGVkX1/Tfl7ljEceLSGiDoJsAixL+LSYILC9D51VnuWeh3+LqZJjjsEuoOM7dZnaINkp8GZOFbXJleI6g16FB57Mt5gu9Y/YRooMKovXSTOfcDzQdGfy9DyvT08BhX5QiMHt90uEAKHKFXdypkiKYAkas5/fA0a2JIYe/KOeHyKZ1heXjsb4jhbMUBp1lOwDg6bdbQxFd2R+ed1/si+f/CISuC/+wHzvCsSa8d4lGQYceUEOMdvp7GNrp+V0XCcY/uAmyehYq9/pnWSHK66l2wwtDCzZLgRJb3yMMNREnKWt6qRWigmYuNLRr0Ls1cf5h2TkF4brf62AyQLeXH8DqOZ092PjnZ4LXU9JPtad3MtLFoFd4nkejzz9BBGI7rEQ/tgT8x5pjDbvLPubNhH4LIiE+ipZOyoP1SYS8z33XiMbV0foE7lJ1Jrrlx2yBbdkUFFXl4XCwOP/DurWwwWs+2uCWrF8n78TkuzfGyVD99vD7dLkY6mXLZ01aLf63hUpVQXG40gX9WlKXH1lxKb+tVysoBus4zL2q0TB5wYclv8TiGs9yJWb6FM819I75x4VJPB8938wnfWBIyoSH27M9Dozk7IkVFKX4+gJsgnW1qxGlzCvmmXLpjsTaAu+Pq6fGg41pnOIjlaVdncmU7hnjM6AZ+5kI9JtyT1lEyUskpjR5Z/X5FL+B6HGVcaogkukGpx43s3TIfkS5y759XZJxKDjXvGDPjDUJJYCleSrE1I5IoS2g3bQ5Cy1CPjctpskgRZ++lu/u5PmwWB7oeqFruMuUDIYUTBZHtFdn5rZXWnKE01XZPqyCXGk7I2vYNx2cOmSlu8eqO7JyXrzhNa9J9F9H2irPHkN/+VA/M/8nQEa3vQ+X0Ep72ZYQagjqMKSNKFmYZd13fJ5kqw2ZWrOEbzks7xN8clUCpECpHPfe4FWNPZxBZknsU+cjz7CzuSjmcjuNtlB0SEgtFa artNFvhs 5Q6Tw8NOhq1WeFLuAiY9U+IFRMAIkcmcI2TMQ26m4gex0L8GBnSwMZk78WlyFTjiFfCEHT8NtQd0jRMBDtVJgXP3B641SbOqWJIX0sr7i9JUVAOM9ScfuPOdqQVqI7Ueb5SQtHmU9OHk87sxLd4RUgCWC8URwL0WnAW6HKT81KrSzkFKzaeUJm1ZbfSVlC6qZLRDHyrN7cELegoISEGUwn1zOAIp28leWK8lvC7Xxc6Yh/uz/P/C2Q06D1eqL1RpbobE12BErD5VisqovjayeLfs/t4DFvOVgySvK 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: List-Subscribe: List-Unsubscribe: On Wed 22-11-23 16:11:53, Gregory Price wrote: [...] > @@ -928,7 +929,16 @@ static long do_get_mempolicy(int *policy, nodemask_t *nmask, > * vma/shared policy at addr is NULL. We > * want to return MPOL_DEFAULT in this case. > */ > - mm = current->mm; > + if (task == current) { > + /* > + * original behavior allows a kernel task changing its > + * own policy to avoid the condition in get_task_mm, > + * so we'll directly access > + */ > + mm = task->mm; > + mmget(mm); Do we actually have any kernel thread that would call this? Does it actually make sense to support? > + } else > + mm = get_task_mm(task); > mmap_read_lock(mm); > vma = vma_lookup(mm, addr); > if (!vma) { > @@ -947,8 +957,10 @@ static long do_get_mempolicy(int *policy, nodemask_t *nmask, > return -EINVAL; > else { > /* take a reference of the task policy now */ > - pol = current->mempolicy; > + task_lock(task); > + pol = task->mempolicy; > mpol_get(pol); > + task_unlock(task); > } > > if (!pol) { > @@ -962,12 +974,13 @@ static long do_get_mempolicy(int *policy, nodemask_t *nmask, > vma = NULL; > mmap_read_unlock(mm); > err = lookup_node(mm, addr); > + mmput(mm); > if (err < 0) > goto out; > *policy = err; > - } else if (pol == current->mempolicy && > + } else if (pol == task->mempolicy && > pol->mode == MPOL_INTERLEAVE) { > - *policy = next_node_in(current->il_prev, pol->nodes); > + *policy = next_node_in(task->il_prev, pol->nodes); This is racy without task_lock which I do not think is helde but it also seems this is not a big deal. pol is ref. counted so it won't go away and if the task->mempolicy changes then the return value could be bogus but this seems acceptable. It would be good to put a comment here that this is actually deliberate. -- Michal Hocko SUSE Labs