From patchwork Thu Feb 6 16:44:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mateusz Guzik X-Patchwork-Id: 13963323 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 D8AC3C02194 for ; Thu, 6 Feb 2025 16:44:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7865D6B0085; Thu, 6 Feb 2025 11:44:44 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 735F16B0088; Thu, 6 Feb 2025 11:44:44 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5FDCA6B0089; Thu, 6 Feb 2025 11:44:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 3ECCA6B0085 for ; Thu, 6 Feb 2025 11:44:44 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id E366FC12D5 for ; Thu, 6 Feb 2025 16:44:43 +0000 (UTC) X-FDA: 83090093646.10.AC2F51D Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by imf01.hostedemail.com (Postfix) with ESMTP id F03D140012 for ; Thu, 6 Feb 2025 16:44:41 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=WwlNYkzI; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=mjguzik@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738860282; a=rsa-sha256; cv=none; b=ox1JD0NHFetYQSqKshdFxSFOdpH/FxPdcPPhOxDl/R8Mmu2LtkhOM8Kz2Ztw+tvfAIbk54 ZZ9NFBfp696AUoD2bp+V9eJ/CQ2L7ySQVugxF4JNBN/pzxTKC1kjSdYFEFvgTPb636rgQz s+54CxvHONwcLYJ4aSxiz/XWev3I2e8= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=WwlNYkzI; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf01.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=mjguzik@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738860282; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=jf/Ds4EpZUGln/+eimumnU7Eb7n31Z+gn7W8LB7GHWo=; b=BOggSIXJ7FLZYFyEsyH98JNwLnOGAvMEiI1ioMc1g2B1RfiYHoWEo7Rlmt3G5W+ysrbuOm gsCmfgnI53z+R6Md2thoXN7DFQjLop2h8Rfw5nbuPHlk8gg/r5jIwBFuUEOoHZ8Fuh3jca /695xUpUA8KyAeFlu+VgHXJsUJuo1JI= Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5dce3adbc31so1913951a12.2 for ; Thu, 06 Feb 2025 08:44:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738860280; x=1739465080; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jf/Ds4EpZUGln/+eimumnU7Eb7n31Z+gn7W8LB7GHWo=; b=WwlNYkzIA4k1l3RL3xyyeDNvMwx68B690XuuXPkBoKEsHl5UaekNijjn2tEvdhHzSR kGBGIIilgKnVaBECJBSsnyFkX/AU6RnPZM+zbYn7wEdt0nebrXdiJLSpHOs0bnIHSW+n N3VwulCmvAxuR6ltQ0G90vxDOdRchkdtrB8g1wjWugoiX7Pc1FRZi4/VIU2J4o++mqH3 5eDW/DxlPsQb+Xp5ReBYFjrAR/OLTHRB0JjwHpXRc5WijC3/sjPJOaZL1m3ETFyqvEVx i2pCEoew8zQKn3MmVohri9JQWViSRxfaf9/OKAweSdCfmV4jf3BnSuWNJPN9LyqKM7RL vLbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738860280; x=1739465080; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jf/Ds4EpZUGln/+eimumnU7Eb7n31Z+gn7W8LB7GHWo=; b=OlBuP8AlcNBcOSwufURzDJxrseF2zWDi+QfK7MWNhJItMMUr+VYgto2rgGI+Loj+lC HlmILYuGfWzRL/bhpVcC3rRL+MJ2AhQWjqqhgPiXxe9JMsWJW7IK+J3TdHeKvAUxACyf KfiW/t5dqrJAD5PlVsnnl5hbDCpDZZJHshmIoKHqjLqR1KzG5hBq0/RoDerpTrtA04wU deg2c4o7cidxWoXg86gHmwPJp2a9GWt7kNt+UmJqQ6WfeMPcq/izHPf3JopueQBWtGBL f9TrzPJOKUz3OvzpameyHZk6z8JOpEyuUVPZiTbsnLVWwD1bbsbrz6SbAUYAGcHbA8CS CvMg== X-Forwarded-Encrypted: i=1; AJvYcCX0iA8+WbPpdFEGdNDxRq34Z9RFOFvar/cl7lUmGIn/16sw7WCePiWtkwSii6YevL1f3YjaokRMYA==@kvack.org X-Gm-Message-State: AOJu0Yy9ZxvnvjjfL1EXo5OCLsS7nBwDUWcRnB2qcwfQ9PGPaqEtZE+s eKGV4P58fyZTR50BN2BCHNNr57svLJYJ3pKkBrz0kljEnID6Uxol X-Gm-Gg: ASbGncuEiK1/URnGVvxdpHixjhFsroDl5KLsHKPHl3Iv7hzhB9hyuDSnzE2xmy40f0X BIJZ4dH3/3QeF8JzbgjM/VxuGHzB2SZUxi6J+HxnshEcIRU9xQBKMiaxcP6LFzg0o0vJfN9g3qF shGpzvnvDeZIyjkuz0SFtO0OOQlrxSMVdt+flWZDkbpdi5v7Ym33Yd7QshI9gpjvHjwLpHqw1xP yM8vbQ3k5ydzvD8/XkaYjcEs3rOAXfzDSrgWGVcWBiNbagDa23sNU9pUpdCbgYK9OwRNwxAuiso YvP75kMzk7lEJcHr1mmCaL5/bF2hJRY= X-Google-Smtp-Source: AGHT+IGUUhXS1Xy6V74CnOay0lFyzNYrTzkXE8bZO/qHXUnqshtztRLnAUNY+RXEWfr45Z3TlVQ1qw== X-Received: by 2002:a05:6402:a00e:b0:5de:39fd:b309 with SMTP id 4fb4d7f45d1cf-5de44fe9488mr248523a12.4.1738860280257; Thu, 06 Feb 2025 08:44:40 -0800 (PST) Received: from f.. (cst-prg-95-94.cust.vodafone.cz. [46.135.95.94]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dcf9f6fa69sm1121849a12.73.2025.02.06.08.44.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Feb 2025 08:44:39 -0800 (PST) From: Mateusz Guzik To: ebiederm@xmission.com, oleg@redhat.com Cc: brauner@kernel.org, akpm@linux-foundation.org, Liam.Howlett@oracle.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mateusz Guzik Subject: [PATCH v6 1/5] exit: perform add_device_randomness() without tasklist_lock Date: Thu, 6 Feb 2025 17:44:10 +0100 Message-ID: <20250206164415.450051-2-mjguzik@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250206164415.450051-1-mjguzik@gmail.com> References: <20250206164415.450051-1-mjguzik@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: F03D140012 X-Rspamd-Server: rspam12 X-Stat-Signature: 1571orotpwrfkgmrbz5qp14yktjzgmew X-HE-Tag: 1738860281-689628 X-HE-Meta: U2FsdGVkX1+rVlyoeKu/GGdCqqoB9zv4K8MWkM82ZWIOjpeGocwFtpwtK5bs48CpCl5MzOO1TLlnnBvMDZAyMVloae62mQRSjk1Re5RzLW1UfHX3gDURujy7UbgkdJ8Bwh57fqO3dciXNPxc8Dz5N/qoIOwaDEOoQcjBKjG4u7t0KkkymKH5M4C9HduPOBag6pPbT7ww+9D1GLS7jjS3NPRV0Z5+BtO0iKH+kU1Hw5+J6/7ZhhbawUJ69LTfpYSIAPm/ridUOeDm5YXjoQ4NL483VEsCL/x3wmYVb4yEUBg+8cOPYZkjVMao3tRR8qg+gsbobtVm9W4p51QHfTOUjgh+jVu+iu/cEusBTBfXkLkO1+aqBOloVV4EoaLLLmP2r3KNXc9zsb2w2NZ2MfE7sXf6GpPmudZ4JDtftqC9rMwMHHRuqnUJi5tQLLDQRpwPrKhx1IP6s7dZPr/EQIEud44AMtqc1vNLObPDvJh4vPYYLKmYWV4V7EdKLgqGgihJ0TdMRYr/xwVlyGsRs+r3t7H1EbteJUCTyfTjQGsK8MB/xcILiYV21dXHiBtOt+bn8nCIrbOaCtCLZH3Pepz0yiBXiusQgSzW9eOxboehhXjLIcWPjxL/sM7EB6iuuw37GPKxWdfOdRJbfQidUC61w+fS881XIvB3z6xA44tQysNGyahVthMDfJC8XgCWvDDHUDyprS0GfUxw/lrbNl+NNF+jEtGFFcOK/DWIsgb4MACO8PmUXKSKtUPxvu2DgUaUWSd8T0rlXS4P1n/sIOsxVf1pkQ4z2nlQKdqQbDoNUf9sqWhLJ3eKzDSu0zNTaQseYg9SXNGwlP/IZ9QmB5MmtZXocrmfsxWamTbJd4lrn/qd1dCBHZeOtL17alLpoXvTW19u7vnWsnnvznkn/hCzLOhALKnKaIq61NWKDsLgFB6AmyPPJhacc2Zictd3//SmIixKwoh+jAlT0guSnFl V0gdjqeT XwjIT+6QfhDwUg86y+FNQ9GLcX4lv/p56A4qZmbx6vlLZq6Gen5+0JoCBHznu5xT4uDxrpydLIlGZpb1j0SHUCxnfH7wgxR5VwUwxr6seXSnWt58rJe5VUaKxmH8DPZi+QtNt+hM0nzSShMCbwliIFf0iZNg5S63tT4jiV2PzTM4OCDyQ/zYxTaocdIPOo3D65pf7DcvdnjGueIqYuhMqM5qSNOBprlEPw+XWGgUp0AotgZyAPj4qr7Bd2m4WOEQqZ6xD/VqBth0GAQlBnyPkgJ7EVkl3GJdNPKTcIC3ggYQs4BbN+9Oj5F5+DM6gdVbaRv+Zc1+15jQz7DIXzvaS3RlyH/unEbbzNZg1wz9/SDwxl1f7thdqEooWswmH3po/YdkgjMivdd0uAv00wsOTxxOVNDC0BmmhOzueShycD0suLtXL+tAJ7rwX9UYWDRkldjjH X-Bogosity: Ham, tests=bogofilter, spamicity=0.000054, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Parallel calls to add_device_randomness() contend on their own. The clone side aleady runs outside of tasklist_lock, which in turn means any caller on the exit side extends the tasklist_lock hold time while contending on the random-private lock. Reviewed-by: Oleg Nesterov Signed-off-by: Mateusz Guzik --- kernel/exit.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/kernel/exit.c b/kernel/exit.c index 3485e5fc499e..9d7acd7b0040 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -174,9 +174,6 @@ static void __exit_signal(struct task_struct *tsk) sig->curr_target = next_thread(tsk); } - add_device_randomness((const void*) &tsk->se.sum_exec_runtime, - sizeof(unsigned long long)); - /* * Accumulate here the counters for all threads as they die. We could * skip the group leader because it is the last user of signal_struct, @@ -278,6 +275,8 @@ void release_task(struct task_struct *p) write_unlock_irq(&tasklist_lock); proc_flush_pid(thread_pid); put_pid(thread_pid); + add_device_randomness(&p->se.sum_exec_runtime, + sizeof(p->se.sum_exec_runtime)); release_thread(p); put_task_struct_rcu_user(p); From patchwork Thu Feb 6 16:44:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mateusz Guzik X-Patchwork-Id: 13963324 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 0B77BC02194 for ; Thu, 6 Feb 2025 16:44:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8E97A6B0089; Thu, 6 Feb 2025 11:44:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 898236B008A; Thu, 6 Feb 2025 11:44:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 710946B008C; Thu, 6 Feb 2025 11:44:47 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 508726B0089 for ; Thu, 6 Feb 2025 11:44:47 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 0F49916129D for ; Thu, 6 Feb 2025 16:44:47 +0000 (UTC) X-FDA: 83090093814.26.03B04D1 Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) by imf10.hostedemail.com (Postfix) with ESMTP id 20118C001D for ; Thu, 6 Feb 2025 16:44:44 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=gm+SnZpe; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf10.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.208.49 as permitted sender) smtp.mailfrom=mjguzik@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738860285; a=rsa-sha256; cv=none; b=t92ZAphshrBXByTaZP9IvcrLYLSNwVbc7F/NHLkX+F0iEt2puoPsAALN6AM0RRtbywM4yP N5m5xL+C4bLzSZQwFYuqSJv8isBknSr3g5iqwgXbGD/Qee43ETS8vVLvg1oikSUasO+4yX oFWQ1Tp2YapVWucyis8TTuAzN9NYcx8= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=gm+SnZpe; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf10.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.208.49 as permitted sender) smtp.mailfrom=mjguzik@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738860285; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=1IRsUl1DoWd6JSRMlZTMDFPeNqR08JYH5OecHzvHDUA=; b=KQKn+FEFIr2xgWihSWxbdFS7CSqt6kS6c+WSQsaFnn7rEvYwtDCjL1MJhTX9nwwz/JoWyz 9RVm8PtgT2DNIrEOJN4lUSWdQOEksEKY+BKCDOI/w6AOzhFmID54RAi8XYFiXh3EOZyKUM BTplHP63offWyrnN5Be+8zfBesoDhQc= Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-5dcef27deecso1558286a12.1 for ; Thu, 06 Feb 2025 08:44:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738860284; x=1739465084; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1IRsUl1DoWd6JSRMlZTMDFPeNqR08JYH5OecHzvHDUA=; b=gm+SnZpezYMC1TpZlwVesm9xPTWXJCQZ3R0n0x4ozwPPF2aeqbHW+6r1dK6Fa9Mll+ 2QhV0BsGUJFGkOAMaC0aE9/GqFYSwpxnnvS1JvRfT7MN7NIDbgD8k0rSgeZ3cIyuoS9D itgl3lEvJ3uEbbOhAc1sRRhW1J9nYsSxFBLosoTDucrhuHxuFod4vx36W2QUVdmHICnv DLpFftxVUDpYBLCIMUJW2spA7fw5d3HALI+lrYOjstFrjdWy+L4Uaga0hPedexWBHdmc pKIkT0mA4e5DgNmDsiRMjlhduqMYmiCp7OlfQ6CSsyVsGzvwc9BW4URyP9J7uuin6kSf LU2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738860284; x=1739465084; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1IRsUl1DoWd6JSRMlZTMDFPeNqR08JYH5OecHzvHDUA=; b=bReO0M7heaaofA+BNgX7uEiJVGPdggalsufRqcXpUfERwt2Rn5Ilk+PwxClcD3zUB3 EXrgMq1Ym3Pvj3tqLYHD42yUo2mXs72iaYS4U2UkfNS+W+IKIufsdUQs2mrzLc5/xN6L MIgAjrDUrWNbLo5xY9qP9P8mdadvwm3baYOv4QpNpnJPhS7X6kvb60rYp6lYpFdaVkwO Ew21bh4MMy/E5+XWP18KhwkQTwivY6SnHeiqpvwXPmRpQEFyYi+ISW0cR3Ryv27n+VX8 Vu22bnkvBdqYEN6oKNCAKMClieIMHx4bcBACyK9N2M7gqNFnAFqn2YDtYaKyp6gar/rQ zL/A== X-Forwarded-Encrypted: i=1; AJvYcCUdhk/t0zKaScnz7a/Q7iCQcH6V7MGTQ9LRHpk9Zp3L4YdrloeGaq22T0sAjV9CcoV2Yyva7+OiLQ==@kvack.org X-Gm-Message-State: AOJu0YxvTDHEXnRWX0fQ9HVu3yFz1QcghVOacfoRBJ6BkLtfiSoIzvJL mEUFwN2tpgvZqBCkvggS0ePYLdoO3KJRLUE1CXq3+toKnntUllUR X-Gm-Gg: ASbGncvJ1wwoAC33bFauoiYHHo2TL20YPV/ZggqtQ1y/Do41B2ZsUeD0ilFVt5DIvGq x4nvAZ8eaFpMyII4QN0PEf2hM1pPXwtwipldoPpEmIfsm6pGjioXtvTVLTbz8/jHAG+sgvvcoKl zSTF1fAnnxE6X4M3s85Rb1Zp5fuzaBNqTPU4FBVd6uB8LFZdG7K2n2ujly2bfBlZkcnoNWpEqOZ Q9LEh0WuubRuSHBb5s/TgT3DKCqahOIVW6F6B5FuZO6KlxX5TVqKvpYjKMPu7ubcyREYBHYv2KZ GaLz+MUWChKu/zfMNqdbfnEiSgh5rnA= X-Google-Smtp-Source: AGHT+IF/fkxqlN5OD7wxB5fphZ/GLCgzWGcUDbg3a/MqrOJlCn7w1iI57Nqc7rlNQEyIj4tGWAicDQ== X-Received: by 2002:a17:907:3d8e:b0:ab3:875f:a246 with SMTP id a640c23a62f3a-ab75e21dd12mr838335166b.7.1738860283449; Thu, 06 Feb 2025 08:44:43 -0800 (PST) Received: from f.. (cst-prg-95-94.cust.vodafone.cz. [46.135.95.94]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dcf9f6fa69sm1121849a12.73.2025.02.06.08.44.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Feb 2025 08:44:42 -0800 (PST) From: Mateusz Guzik To: ebiederm@xmission.com, oleg@redhat.com Cc: brauner@kernel.org, akpm@linux-foundation.org, Liam.Howlett@oracle.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mateusz Guzik Subject: [PATCH v6 2/5] exit: hoist get_pid() in release_task() outside of tasklist_lock Date: Thu, 6 Feb 2025 17:44:11 +0100 Message-ID: <20250206164415.450051-3-mjguzik@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250206164415.450051-1-mjguzik@gmail.com> References: <20250206164415.450051-1-mjguzik@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: 20118C001D X-Rspamd-Server: rspam12 X-Stat-Signature: rkp15iswakdnynh1m36ze6cz4da4jpa4 X-HE-Tag: 1738860284-46837 X-HE-Meta: U2FsdGVkX19on8QWHjYgfyLk7CyssGq+eOnnEXDGtrEmyj1iogFWlMddAqjP75wOauyE1xkzfAyXGEsq340mbpj+i3/C/2TZwDHEScd2qJiD0hQfoAkaRxzbhx5ioZQvl0wyxXbw8BgsBfLC2H3uXXDSTX0YzR4MSyL4P+X4kIW1SrBg+c8oW0462o2z0dhh+0xiyZae7jdKGe0l8tz9m91B3ScDbsKA/1c8xE9EjUpHxqhaGRuzxNw6eBKe73N5XiaGGMZo3S/e0/3iZSJTd8CUzhFhdoyyDizhs2U4P2A2Toym9l/Sccu2hvFDbEF5lJT91E/vkpchaYVneuYtGH9zD4T2/6STiEhEJAJ7FXIls+d/inBl4SlarQZDCAivx+1OxHVMB0Mf9N8hpnJ8NAqvUcq3s66AelkhVCN+ZT0CCVbrzdVcqgkK6ZeyLqSoW5h0C3M2mDn44d77p2LHoLLbCuForaJBRVJ0K8R2jH5WqIfhmBkDFQs3K9YdJ0NqpDbZe4QY3oyR55xW8gD5xSyAB2oOLkF95lliiQnW1I09XeesfiRT9qLUenu0caP91MRMGaXJxDSGZGjg2X1XJSK66JXNwoczyw5/BAnL+UtK+ZRLOsrZL+XpzstbYHxA8/4gWnfuFooWMI+zi5a5nA9ZrRizEqXKYx/5Nb56AA8uJMJ/XlXcHYAqfnOEPO0bNhIjtpwAs6ODCDR2S2FPD/c2Nncm37i2nBeOFXnG1TsN9q8KCEWEQ/j88wMQbIcD72kPROgy0n5dqvSN+PfBkxz4nnbrSa8KwzNPRYiz7cyrF26hMFK/C94HxyNhSKBM8xst291V1LKhZASREsD2Zf6zpv0CJogUO2lmyrzLakaZEoNWu1TCBEHoF9fWP/SARf1d3IfzjfRqLhxnF8amfacnvGSduRkoV7uqAnK8jSSNmMoAmTV+RYsxobB1MOxsGrYJeeyTFXnExdPPCKw 3GsMGTis nDWVCIUqOUXTq4pwa0K/McqWyP/fieoegdlB0Lb8scz7Vc05WZw8tEst/VJfFzh0+L/b8C0bTJWiWNLKRj3cKkXob9a6D5fYpHIha1OASqOt+SDi2DlvTl7wp7WHtzxfes+mkcmxa5hRauigzDzLXPmlXMlv06cAyjaEhNI0G7mSx7F90/Q2n9bx3ehgT+r+5kL15s42E9V3TKfE9zgKIpjaP4CSRjrd/JtHGlnBqfFgt3RHAtbztPcX2l6YYl1qavTQ2Yy2ZnfL1PDHni9sVTsnODsmgGSxpskP6jTKDhryBI0hDoP8B4AmLM156nUH/IJmwttDbYJm9GNt93GBGEnONWfpGmkZdchZR0LAgzcFP/e8Ovny7Trgg/2unodcDaIvKzfEAxdd31WJZ/DxjQxAOmeNm2MwT1MmG6YnlQxfCnBRtIWc2h1sm3c3YeSoF/aimBilmU5Yg0iNGKSRU2NBVgQ== 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: Reduces hold time as get_pid() contains an atomic. Reviewed-by: Oleg Nesterov Signed-off-by: Mateusz Guzik --- kernel/exit.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel/exit.c b/kernel/exit.c index 9d7acd7b0040..8c39c84582b7 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -248,9 +248,10 @@ void release_task(struct task_struct *p) cgroup_release(p); + thread_pid = get_pid(p->thread_pid); + write_lock_irq(&tasklist_lock); ptrace_release_task(p); - thread_pid = get_pid(p->thread_pid); __exit_signal(p); /* From patchwork Thu Feb 6 16:44:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mateusz Guzik X-Patchwork-Id: 13963325 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 A1947C02194 for ; Thu, 6 Feb 2025 16:44:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 144AB6B008C; Thu, 6 Feb 2025 11:44:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0F5186B0092; Thu, 6 Feb 2025 11:44:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ED7C06B0093; Thu, 6 Feb 2025 11:44:51 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id CFA8F6B008C for ; Thu, 6 Feb 2025 11:44:51 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 428C08132D for ; Thu, 6 Feb 2025 16:44:51 +0000 (UTC) X-FDA: 83090093982.19.F6C5BDE Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) by imf07.hostedemail.com (Postfix) with ESMTP id 462B240014 for ; Thu, 6 Feb 2025 16:44:49 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Wh+ixqJB; spf=pass (imf07.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.208.48 as permitted sender) smtp.mailfrom=mjguzik@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738860289; a=rsa-sha256; cv=none; b=NzDhtKNf50/VsPw7JkursC+NuyGdwwVe/6zvI83kVAOMNTSk0HKInPF9pvM04meSE6hRa5 giIvJUS+L9xb+qHxCi3rt1oyTNcZ37zwOauluYJjVBfg3pWrp3Oe5Hun0ucEgJESVJEztp yi3YGsXy+L1O5WDH2RFzKHp6Uv9YPZ8= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Wh+ixqJB; spf=pass (imf07.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.208.48 as permitted sender) smtp.mailfrom=mjguzik@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738860289; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=1rFXKBN/0DtbqyDMME4x+DYY2VQCCVBBL1fksWymTmA=; b=qSjrDdYkkjwGT6/xNsBnD+jGg/UE45N2Bou+p4k01kSysZUaxR/PZlfzGbqyVBAtNlrGIr i3+qKfp9YEBmr+SG0bsTt5q3MjlQDyugI1JZI5yPKTSP5aAJhR6lNgQosdeoJSOrjsqsd6 1y4cStZEQfx7R74WFMq9Ln46j2iPzog= Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-5dcd8d6f130so2292875a12.1 for ; Thu, 06 Feb 2025 08:44:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738860288; x=1739465088; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=1rFXKBN/0DtbqyDMME4x+DYY2VQCCVBBL1fksWymTmA=; b=Wh+ixqJBHG/ZZDxkUkR1DOcramF12owBPZ02n16eZ3fNrWHyGilZmSbQ/YJJ9Thzp2 r4yaF/hu1L6PEZ1p6A0Y2vuA5VoI8EwZTCb5vw4xcmQkZb5tiMkRlmxA+L5lSTKL6+aD RKwb6eKuSDV9XUtfSwYovMnQykd8HnKULkgjT2HnqSBAWgUYChhC5iWfvFL9wODFBClG CFNNA2a6u283sPeJcgCQP5PYEawAGus4UT+S3JoInC/g8cXcOOOtPRQLBfwKXmoA2nvX rg/DquhbeMQrOYQV+eWkugrjxz7b6oMRoZIoodIOwdDww9IfpLeb0SWY/qemPs9HUb/u euUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738860288; x=1739465088; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1rFXKBN/0DtbqyDMME4x+DYY2VQCCVBBL1fksWymTmA=; b=kaQ7EgZoqMM+qc+ib02N+yoRq8BrhtbFRw2lt9aLNADTTTzRCrdBateMmO+UAAFkGk lbokP1Zy17u7cIeHAIgQmmxiLvBh5MMaStduY9OO/hkCrYraJT453jzR2ulNXMGbtPGL 74S075Wb9R7BUJntCC1kq0n/uihsJ8ivE2EYiAIUwFVqzXoGPiVOk1LVmQipM+XaFcDu /xfmneB4PBMKDSLFbieeqsHP4Z6joJQmd5ak8umSR0yIATod8ow6GCD8mRiRDGXNGvMB k2VkiFsGNlWRfXwreWyHfASqyKE2XbuZuaRX20lFGq67xrNTiRtnYsnmTJESMOBKeSa1 MXIw== X-Forwarded-Encrypted: i=1; AJvYcCVn867qZ0Q749MOGuMhYTtULZtyOEBD9qY3DdMV03Z8D53X9KC/f7MC8T1yAJsypb8joKrnClnjAQ==@kvack.org X-Gm-Message-State: AOJu0YxxnKWoxe8abj79mqYA3IkgW7s0jUkRTZoyklk3YQcvXNbRaBz3 aCN0bWHNs4S0sYedoHR39xWSDZrmkVN+MXaZTMkq7/PABbkrRH4v X-Gm-Gg: ASbGncvCl6+qwaIf/MmmAnzfprfugqFO3uw7KnqDDggH2ttiaN8uvmrqMh7cuMBugjU PtypDVvqCjiSM9B3T/VeXvyoOpUouTl+MQPdCHx70b9yFkhPs1ivuOK5uN4MrV80EB4FpYM9VXF TR9BhAvFyjiuOiIHv7dDQbhBV7/aSVGhrH9ZBaQ5iucL9GDBXGoFFUYz/BAKtVdX5cYq5skl/GA Yan3Mc1IqHjRrzRPQV0D6ilgcU6oVH/rOOv5k6UjoAdSuO5C92DF1+Dx3bzJocsXCGS7YBqb5Wr wZt7g2bmSsKr1Y+9Ac0vBXO3vAfsZ3Q= X-Google-Smtp-Source: AGHT+IEx3kN8qow07VpklbA04AmzqZOSoDCkjH+xrLCKw+n2wur1ISoraFYcVGyB09Stod4R1SRwNg== X-Received: by 2002:a05:6402:e83:b0:5d0:bcdd:ffa1 with SMTP id 4fb4d7f45d1cf-5de4504014cmr104976a12.2.1738860286170; Thu, 06 Feb 2025 08:44:46 -0800 (PST) Received: from f.. (cst-prg-95-94.cust.vodafone.cz. [46.135.95.94]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dcf9f6fa69sm1121849a12.73.2025.02.06.08.44.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Feb 2025 08:44:45 -0800 (PST) From: Mateusz Guzik To: ebiederm@xmission.com, oleg@redhat.com Cc: brauner@kernel.org, akpm@linux-foundation.org, Liam.Howlett@oracle.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mateusz Guzik Subject: [PATCH v6 3/5] pid: sprinkle tasklist_lock asserts Date: Thu, 6 Feb 2025 17:44:12 +0100 Message-ID: <20250206164415.450051-4-mjguzik@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250206164415.450051-1-mjguzik@gmail.com> References: <20250206164415.450051-1-mjguzik@gmail.com> MIME-Version: 1.0 X-Stat-Signature: oakt56ys787gtdyh5etbg8o5hqxex3bp X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 462B240014 X-Rspam-User: X-HE-Tag: 1738860289-812628 X-HE-Meta: U2FsdGVkX19a4v0P6VgMosGrG7U4aKevShurDed0/wqquzw62W07Jn+bzxSuCvb8w2qVWLvLJB+Aa35UD1cGLD7TA8V7ntOlsXGJyqijyFuEC5XdkS0M8BGmgYWYL9IMHMxUzq/03ODbARl428v8TqazK7BnKm3+PKiZFibyIN7CoKSoEBUlEuA5fMNAMJDmqdFcpxLJU7culUH48LI9cboS987TaMAdrpD2FNkSzi64mGue2PEd8jT0NKyHTnPDWPgWhFl2i5DtelvjhIC353A+TrNIHue/ajL8P5NH4jnDuG7X2IXqvwanUrExQ/Vl5uRhnp5nx/OkEFdFwEqVInakwkaJCsQlvyq59Lwtr9P2Q/h648ojImc/C24T2zHyLLIHhXn6aZwgpOynacpdp+s87OWbs3X1uFcXG/UYQSnpuKYjlsonMGps7DXtoWTOtBgIG6TDb2RQapd9xihSAP2BNNWZgFL6r4pENOrwhpAlXr8aPduuH5hZIwjHBS/Q5kv5vAJR/U1f5W7QpcOnJTLfnWWuzYBtwQA3+lxUljRTtprM0Qd22PVPjra4vAB4X6XvUfS64Ghq3Xo+KG9mpl8w/IjMWSs3HK/lsOKLQYb6/dfs5Ix7KkXhdvB3g1Cho/eSEXi13G9lOsEZQRU+sTBQJhlmKIXPy9foQy6hK8M0U3qoITDkM+quI6F1B9RCWoWr8FEVoq1a0Q+RNUjeSl3QOWcv0qQj36Ag7fFVdzlDVRtYAfMerdOkq/Sn1jpc14pneFdwLyayAgMqa15ERaRVDnuYaUagBhumMl1crlaqa17SnSkVQMVCMndZkqHVAYDo7kOIjmkdAnBXwLEWkA2ZmW79msU0UMxtN0y2bPS1wYI0x77GHR5qB/Ld3rc7so2ZspVLTGIhBE7tDcb/Liz88B7ADp/rSUclS+cP7edaVXRhqlAbI6NHcyWDQDgk9aKZZne0KuvUM5HoPpY lI8L9iJj yFkhe81ecAlUYaZ01/1DT7zOTnyM/hFelGw9ZAWMOvZ0N2mPC+g+yOLwPmB/yoHrzqVtkkzdTSsLVf3sY5+22xtns4D7QcfwJE+HOvH1lCbLtUnqIqjXVV6kAXyU7FOXpAh83/s/Jhui/qn0iWn1vCy3G26hrTT+CF3SWYZ04cWGfotdsG8VPHMffmRHY466jv7sA90H/3nR6R9T9foedAPt07pWU57eQ1Kbm92voKOD5AkFMi7ekIJnCNSKRRusYYj9Xj1bb6l5E8ckq6o15UTiT7W0tUe/d7KwAOzEvmJfNsWYJYyAA5K6+UzJL8JT3so4YyVKp111DNi6Unc8DP+9UnpQCRfTftlpFhUtRwPEjM3+Nct20JO5CqeHv8cKLwC2IFUWLjk/4lS2pVLfsxWAna6OPItCdqSPfSVAzkDdAVNThB5DUpx4KC1sZj5grm/8d 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: They cost nothing on production kernels and document the requirement of holding the tasklist_lock lock in respective routines. Reviewed-by: Oleg Nesterov Signed-off-by: Mateusz Guzik --- kernel/pid.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/kernel/pid.c b/kernel/pid.c index 924084713be8..2ae872f689a7 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -339,17 +339,23 @@ static struct pid **task_pid_ptr(struct task_struct *task, enum pid_type type) */ void attach_pid(struct task_struct *task, enum pid_type type) { - struct pid *pid = *task_pid_ptr(task, type); + struct pid *pid; + + lockdep_assert_held_write(&tasklist_lock); + + pid = *task_pid_ptr(task, type); hlist_add_head_rcu(&task->pid_links[type], &pid->tasks[type]); } static void __change_pid(struct task_struct *task, enum pid_type type, struct pid *new) { - struct pid **pid_ptr = task_pid_ptr(task, type); - struct pid *pid; + struct pid **pid_ptr, *pid; int tmp; + lockdep_assert_held_write(&tasklist_lock); + + pid_ptr = task_pid_ptr(task, type); pid = *pid_ptr; hlist_del_rcu(&task->pid_links[type]); @@ -386,6 +392,8 @@ void exchange_tids(struct task_struct *left, struct task_struct *right) struct hlist_head *head1 = &pid1->tasks[PIDTYPE_PID]; struct hlist_head *head2 = &pid2->tasks[PIDTYPE_PID]; + lockdep_assert_held_write(&tasklist_lock); + /* Swap the single entry tid lists */ hlists_swap_heads_rcu(head1, head2); @@ -403,6 +411,7 @@ void transfer_pid(struct task_struct *old, struct task_struct *new, enum pid_type type) { WARN_ON_ONCE(type == PIDTYPE_PID); + lockdep_assert_held_write(&tasklist_lock); hlist_replace_rcu(&old->pid_links[type], &new->pid_links[type]); } From patchwork Thu Feb 6 16:44:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mateusz Guzik X-Patchwork-Id: 13963326 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 CAA84C0219D for ; Thu, 6 Feb 2025 16:44:54 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 515C06B0093; Thu, 6 Feb 2025 11:44:54 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 4C59B6B0095; Thu, 6 Feb 2025 11:44:54 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 33EE16B0096; Thu, 6 Feb 2025 11:44:54 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 1262B6B0093 for ; Thu, 6 Feb 2025 11:44:54 -0500 (EST) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id B17691C7481 for ; Thu, 6 Feb 2025 16:44:53 +0000 (UTC) X-FDA: 83090094066.23.19D0B8F Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) by imf13.hostedemail.com (Postfix) with ESMTP id B03972001C for ; Thu, 6 Feb 2025 16:44:51 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=c0btGaQ7; spf=pass (imf13.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.218.44 as permitted sender) smtp.mailfrom=mjguzik@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738860291; a=rsa-sha256; cv=none; b=vMJWkZRIzUAVDhB4sW+NdexsxnE/Z2PmJQG5BuwSaK2NIC7gOZmh494vtYcUzBdq20unOC glx1SfWMYefhdhd+zqMeIbKOu3cGmAfMQFKXNGAvR7gDVaFHWSzKFjBGIPSkdfAUeKCm+h CE3eBe56kP2gCWUSy/nO4sywY4MF+F0= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=c0btGaQ7; spf=pass (imf13.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.218.44 as permitted sender) smtp.mailfrom=mjguzik@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738860291; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=P1tcF++dbHlub2RYbrz+kvADf5ajR/p1WCoTi4SqY9k=; b=vuwBe/iVLsoIPQR+9WfuKlqGlfT5QgaadfV72T2DxFqPfCALrhRhzf1sLQQhFpBKOdVIre 3+aARQWstDmaX33AYDqsivrtSI896sobKuN8QA+H5obyq14y4IULWGgdJnlgPywFw9fQub sYYt/ascykS4OW0OheWL2IO9rKk6olw= Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-ab777352df4so122996866b.2 for ; Thu, 06 Feb 2025 08:44:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738860290; x=1739465090; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=P1tcF++dbHlub2RYbrz+kvADf5ajR/p1WCoTi4SqY9k=; b=c0btGaQ7DOImzse+mV+bByRxRdXRPsYWuNvB2mREWgZ5K8IHz+JqqFD5p/9lEt3/OE E7iyYdaJD3Cbe+PvzmWlwCbIEODEUuaF9NRJLZaHakY/5BS5+ZLdsrTGkT9DChOGJAKZ cPbo9wIK6WZF47NvTsrRsA4rPWNSxMVeeZgDVWigIcKQbxhBKzZm0HWoxLZuwYc5a13V MB2RdtKQ7+QEpBJKxfIfWGsdu3d2x3MTFfx5jbXvTRqBs1H9yMbNIgjGfE/6CZ4gvqib zuZ2LpBrRox0cggmPeFm0QOfG7Ze58gJEn8aSBlGK4oRSOWrZ8hLQcZPe4ReoEKIfh/4 aSVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738860290; x=1739465090; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P1tcF++dbHlub2RYbrz+kvADf5ajR/p1WCoTi4SqY9k=; b=U7JFacPjPrFsLmvTYFzNaME2sfWDM914BTiHpE+unnF7k5tv7x0D3qwmiNQyfiQ49v kMEHhlgz7CzE6kAZILhY/eMnoN+nWrLA9DPuoIO075Snly8bFJEb5/WLsglSua+6BQ5J Vr/hA9gV1SoCd0xliFVjl88bNxpQHjfr89AowhiNTNz+RPqsuzvJWyzeodEqc0eF+aRJ 9pDlQktgks1CxnPPp5IrMxUlJYM3J79jbCen25FJFPDftxIT2omxGOlNuJi6WqrtI0+R PNFQBx+0FbhT/2MW6iGVYqRj8FKkac06pbQtiCxqqpRD+9X8MdJrY7RUd1frOv833Mzs +pDw== X-Forwarded-Encrypted: i=1; AJvYcCXdiKz0gUsCTgkxviKcfeR2KPfpZaKzwafPfRojorvpgxmXMSrTxCiq0MQqW0YFBXFtGIeVG6tsoA==@kvack.org X-Gm-Message-State: AOJu0YxtmUnPdgOMBNln5mTq4echwv/jTJ0YWGFN6xKzZI99SIPi+LAH InF1jctPx3ROqCC1bnwV1Baq1jwhZZy6/eyL7P7J6TNz3gUMiphe X-Gm-Gg: ASbGncvsoKNvEoTuHP7cwLBPFQFMOTXykCwi4a7lD13thpyt+jFlibbhgOTWzf7CBSt ovYovdBZT6tYoj/J1a1sHFMVP4DcqENdHzEXdlMAEbFq/OZDuAYdSladLnzjUi1wd2mxknI3csL Rl7zAq0tm+xXN1VZHBF15yOWEPirc4DQaNsJ5RUJ0vA2wbXApvjVVJ7xqTDtZy8XxwVDdL+lgKd fDEFVZtQhcJgI9b1U5nQLNtVeI/Oxi9I3EYpRmUwqgboVq+8wNMZ5m+7pik9ZTM+oszsPchW+Rd gUHxkLfJHc4d3MX/rvJ755ABidkkhqw= X-Google-Smtp-Source: AGHT+IE4X6Gh7ABr/CAabaJiQHTc3ksfl4DHOZdtIehrJhW32+PzJmv296KghHaD7mifNH3wlAlW+g== X-Received: by 2002:a17:906:5594:b0:ab7:7482:a11 with SMTP id a640c23a62f3a-ab774820b25mr252379466b.12.1738860289978; Thu, 06 Feb 2025 08:44:49 -0800 (PST) Received: from f.. (cst-prg-95-94.cust.vodafone.cz. [46.135.95.94]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dcf9f6fa69sm1121849a12.73.2025.02.06.08.44.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Feb 2025 08:44:48 -0800 (PST) From: Mateusz Guzik To: ebiederm@xmission.com, oleg@redhat.com Cc: brauner@kernel.org, akpm@linux-foundation.org, Liam.Howlett@oracle.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mateusz Guzik Subject: [PATCH v6 4/5] pid: perform free_pid() calls outside of tasklist_lock Date: Thu, 6 Feb 2025 17:44:13 +0100 Message-ID: <20250206164415.450051-5-mjguzik@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250206164415.450051-1-mjguzik@gmail.com> References: <20250206164415.450051-1-mjguzik@gmail.com> MIME-Version: 1.0 X-Rspamd-Queue-Id: B03972001C X-Stat-Signature: x5oncs8kq619rmfzpypk1hfin4sbramo X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1738860291-983742 X-HE-Meta: U2FsdGVkX1/askYTB43Qz0JD+BQgqwK24F1rH1f3tS7SqMUTSURO8skLtybS3G23AoycQScdljwQPHOhmai8/a14vudeR/Ul4yPMn3mCzzH+NguBbfIc9WrVIN+RhgJ4DcLCwcgl2I1rXv7RpvqtnS5o9cspBVmBcaB9cgtCSNphFRyvnKJFjFtwNF55sLIiIKnyR2Kz1+xLK+sDb5beYuCxqNGnJ+iWz9H2gQFUsG/eBXcPjraL6sKTAZZxg+FHcxuyPcvLkps6zOtxyGdo521wmKBTwPpOs1U5Hmq/umK92HsyCmRZUjX1f07+ZRhxfIWPIv1CeYLXHLNeU+GVFFDVW8T0xCfBNNLrVkDdtKm9/Rifd//etGqkG+vwKypINZMvHMyqEPNoeLpiDSm3PQGW1aU5XduY9bGbfsiS2ofVU8fjfLGilEXwd2HUM3YDAAGHIvf06zjpNOdjoY/uSKLdWx/WZzUMGvufIxxpExwZIK3LabUFs/62H8wMp5jP5hg1DSeHzw2dTuhzTlqHdUhZ0tVL97EVBqKaWK9kfRxilpjcWf1kcX1fk9FB6+ZpsJFU79ZozHGPhoHRbhYyAbynH1Tp5/d2YKi7xOKvafKuek5NMPDaLHZ8hWgMUJxfmBfQhoO8w4LKj2o+/rnuH0LxMoe83ngWrhytuNv8N+QSCzXd3K3SVF826C7AClEBJb1B2nzKE0gaP8oCP9SZjoGyxA46wTmfk9EeJTlaL2LKvTF41ReUfJI1D45s6//px8ktporu0nRURxtY3jGzkj+pfH45kmH00m/MTGT72bQWkEqh2usC6VeKLFdqqugxPaxnbnvp1UDcvHZIzPDeg4k6ZTJs0E31TfbufJ+XR7T/PxXLYB8+WajFkVY+DKdK4tECKt5WHRI5KnXBeMLXiYES3On+s0XRF/9NtJ1OZwAuM5RyoX6MR9F8ucciU9gSb2egFuawmEAKETtVNUm 12H9A0SC HDM1AwFQwZ6etX1sJPbbYJ16NzXw5izzV0h1Sf+XnfRIq06V9jpTsSZz/jZ4lb4ZIs/6nRGE50S1JOFr4Ag/cpey1zhg+dZulZrWRxOxBGQNZd29Kec4zsYfZUnFW0O8t7U+AhRYJU6MCpRH8U23DF5JzNAz5YlataFGc13Lh1WoI6KI7Ku46+zh5FjzA35ufiSHKiTsMLI2aONHFLRgUoX34p/ayqfrhM6tpk2/nC5SWYlI6/zxGjx/3JIXL6bV2NlZcUkIbwT36CZm10uAM+WXkT/5YJanBdBA90+aZAshxhRjQk0Iwp+mvE6HtaTEh7pGPGsvHf8Hi0BmuXsf0ysmKa4dpPWPJMxXT7ngSdh8vgdPsQwmJdTmKesRVw/BbdBIIOa+B5ZswGxpITtEEzaXPZYC5DKtYX9W0vsBn3IW4jWgvfyy3LGb5Ik7bmU1b/G1w 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: As the clone side already executes pid allocation with only pidmap_lock held, issuing free_pid() while still holding tasklist_lock exacerbates total hold time of the latter. More things may show up later which require initial clean up with the lock held and allow finishing without it. For that reason a struct to collect such work is added instead of merely passing the pid array. Reviewed-by: Oleg Nesterov Signed-off-by: Mateusz Guzik --- include/linux/pid.h | 7 ++++--- kernel/exit.c | 28 ++++++++++++++++++++-------- kernel/pid.c | 44 ++++++++++++++++++++++---------------------- kernel/sys.c | 14 +++++++++----- 4 files changed, 55 insertions(+), 38 deletions(-) diff --git a/include/linux/pid.h b/include/linux/pid.h index 98837a1ff0f3..311ecebd7d56 100644 --- a/include/linux/pid.h +++ b/include/linux/pid.h @@ -101,9 +101,9 @@ extern struct pid *get_task_pid(struct task_struct *task, enum pid_type type); * these helpers must be called with the tasklist_lock write-held. */ extern void attach_pid(struct task_struct *task, enum pid_type); -extern void detach_pid(struct task_struct *task, enum pid_type); -extern void change_pid(struct task_struct *task, enum pid_type, - struct pid *pid); +void detach_pid(struct pid **pids, struct task_struct *task, enum pid_type); +void change_pid(struct pid **pids, struct task_struct *task, enum pid_type, + struct pid *pid); extern void exchange_tids(struct task_struct *task, struct task_struct *old); extern void transfer_pid(struct task_struct *old, struct task_struct *new, enum pid_type); @@ -129,6 +129,7 @@ extern struct pid *find_ge_pid(int nr, struct pid_namespace *); extern struct pid *alloc_pid(struct pid_namespace *ns, pid_t *set_tid, size_t set_tid_size); extern void free_pid(struct pid *pid); +void free_pids(struct pid **pids); extern void disable_pid_allocation(struct pid_namespace *ns); /* diff --git a/kernel/exit.c b/kernel/exit.c index 8c39c84582b7..0d6df671c8a8 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -122,14 +122,22 @@ static __init int kernel_exit_sysfs_init(void) late_initcall(kernel_exit_sysfs_init); #endif -static void __unhash_process(struct task_struct *p, bool group_dead) +/* + * For things release_task() would like to do *after* tasklist_lock is released. + */ +struct release_task_post { + struct pid *pids[PIDTYPE_MAX]; +}; + +static void __unhash_process(struct release_task_post *post, struct task_struct *p, + bool group_dead) { nr_threads--; - detach_pid(p, PIDTYPE_PID); + detach_pid(post->pids, p, PIDTYPE_PID); if (group_dead) { - detach_pid(p, PIDTYPE_TGID); - detach_pid(p, PIDTYPE_PGID); - detach_pid(p, PIDTYPE_SID); + detach_pid(post->pids, p, PIDTYPE_TGID); + detach_pid(post->pids, p, PIDTYPE_PGID); + detach_pid(post->pids, p, PIDTYPE_SID); list_del_rcu(&p->tasks); list_del_init(&p->sibling); @@ -141,7 +149,7 @@ static void __unhash_process(struct task_struct *p, bool group_dead) /* * This function expects the tasklist_lock write-locked. */ -static void __exit_signal(struct task_struct *tsk) +static void __exit_signal(struct release_task_post *post, struct task_struct *tsk) { struct signal_struct *sig = tsk->signal; bool group_dead = thread_group_leader(tsk); @@ -194,7 +202,7 @@ static void __exit_signal(struct task_struct *tsk) task_io_accounting_add(&sig->ioac, &tsk->ioac); sig->sum_sched_runtime += tsk->se.sum_exec_runtime; sig->nr_threads--; - __unhash_process(tsk, group_dead); + __unhash_process(post, tsk, group_dead); write_sequnlock(&sig->stats_lock); /* @@ -236,10 +244,13 @@ void __weak release_thread(struct task_struct *dead_task) void release_task(struct task_struct *p) { + struct release_task_post post; struct task_struct *leader; struct pid *thread_pid; int zap_leader; repeat: + memset(&post, 0, sizeof(post)); + /* don't need to get the RCU readlock here - the process is dead and * can't be modifying its own credentials. But shut RCU-lockdep up */ rcu_read_lock(); @@ -252,7 +263,7 @@ void release_task(struct task_struct *p) write_lock_irq(&tasklist_lock); ptrace_release_task(p); - __exit_signal(p); + __exit_signal(&post, p); /* * If we are the last non-leader member of the thread @@ -278,6 +289,7 @@ void release_task(struct task_struct *p) put_pid(thread_pid); add_device_randomness(&p->se.sum_exec_runtime, sizeof(p->se.sum_exec_runtime)); + free_pids(post.pids); release_thread(p); put_task_struct_rcu_user(p); diff --git a/kernel/pid.c b/kernel/pid.c index 2ae872f689a7..73625f28c166 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -88,20 +88,6 @@ struct pid_namespace init_pid_ns = { }; EXPORT_SYMBOL_GPL(init_pid_ns); -/* - * Note: disable interrupts while the pidmap_lock is held as an - * interrupt might come in and do read_lock(&tasklist_lock). - * - * If we don't disable interrupts there is a nasty deadlock between - * detach_pid()->free_pid() and another cpu that does - * spin_lock(&pidmap_lock) followed by an interrupt routine that does - * read_lock(&tasklist_lock); - * - * After we clean up the tasklist_lock and know there are no - * irq handlers that take it we can leave the interrupts enabled. - * For now it is easier to be safe than to prove it can't happen. - */ - static __cacheline_aligned_in_smp DEFINE_SPINLOCK(pidmap_lock); seqcount_spinlock_t pidmap_lock_seq = SEQCNT_SPINLOCK_ZERO(pidmap_lock_seq, &pidmap_lock); @@ -128,10 +114,11 @@ static void delayed_put_pid(struct rcu_head *rhp) void free_pid(struct pid *pid) { - /* We can be called with write_lock_irq(&tasklist_lock) held */ int i; unsigned long flags; + lockdep_assert_not_held(&tasklist_lock); + spin_lock_irqsave(&pidmap_lock, flags); for (i = 0; i <= pid->level; i++) { struct upid *upid = pid->numbers + i; @@ -160,6 +147,18 @@ void free_pid(struct pid *pid) call_rcu(&pid->rcu, delayed_put_pid); } +void free_pids(struct pid **pids) +{ + int tmp; + + /* + * This can batch pidmap_lock. + */ + for (tmp = PIDTYPE_MAX; --tmp >= 0; ) + if (pids[tmp]) + free_pid(pids[tmp]); +} + struct pid *alloc_pid(struct pid_namespace *ns, pid_t *set_tid, size_t set_tid_size) { @@ -347,8 +346,8 @@ void attach_pid(struct task_struct *task, enum pid_type type) hlist_add_head_rcu(&task->pid_links[type], &pid->tasks[type]); } -static void __change_pid(struct task_struct *task, enum pid_type type, - struct pid *new) +static void __change_pid(struct pid **pids, struct task_struct *task, + enum pid_type type, struct pid *new) { struct pid **pid_ptr, *pid; int tmp; @@ -370,18 +369,19 @@ static void __change_pid(struct task_struct *task, enum pid_type type, if (pid_has_task(pid, tmp)) return; - free_pid(pid); + WARN_ON(pids[type]); + pids[type] = pid; } -void detach_pid(struct task_struct *task, enum pid_type type) +void detach_pid(struct pid **pids, struct task_struct *task, enum pid_type type) { - __change_pid(task, type, NULL); + __change_pid(pids, task, type, NULL); } -void change_pid(struct task_struct *task, enum pid_type type, +void change_pid(struct pid **pids, struct task_struct *task, enum pid_type type, struct pid *pid) { - __change_pid(task, type, pid); + __change_pid(pids, task, type, pid); attach_pid(task, type); } diff --git a/kernel/sys.c b/kernel/sys.c index cb366ff8703a..4efca8a97d62 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -1085,6 +1085,7 @@ SYSCALL_DEFINE2(setpgid, pid_t, pid, pid_t, pgid) { struct task_struct *p; struct task_struct *group_leader = current->group_leader; + struct pid *pids[PIDTYPE_MAX] = { 0 }; struct pid *pgrp; int err; @@ -1142,13 +1143,14 @@ SYSCALL_DEFINE2(setpgid, pid_t, pid, pid_t, pgid) goto out; if (task_pgrp(p) != pgrp) - change_pid(p, PIDTYPE_PGID, pgrp); + change_pid(pids, p, PIDTYPE_PGID, pgrp); err = 0; out: /* All paths lead to here, thus we are safe. -DaveM */ write_unlock_irq(&tasklist_lock); rcu_read_unlock(); + free_pids(pids); return err; } @@ -1222,21 +1224,22 @@ SYSCALL_DEFINE1(getsid, pid_t, pid) return retval; } -static void set_special_pids(struct pid *pid) +static void set_special_pids(struct pid **pids, struct pid *pid) { struct task_struct *curr = current->group_leader; if (task_session(curr) != pid) - change_pid(curr, PIDTYPE_SID, pid); + change_pid(pids, curr, PIDTYPE_SID, pid); if (task_pgrp(curr) != pid) - change_pid(curr, PIDTYPE_PGID, pid); + change_pid(pids, curr, PIDTYPE_PGID, pid); } int ksys_setsid(void) { struct task_struct *group_leader = current->group_leader; struct pid *sid = task_pid(group_leader); + struct pid *pids[PIDTYPE_MAX] = { 0 }; pid_t session = pid_vnr(sid); int err = -EPERM; @@ -1252,13 +1255,14 @@ int ksys_setsid(void) goto out; group_leader->signal->leader = 1; - set_special_pids(sid); + set_special_pids(pids, sid); proc_clear_tty(group_leader); err = session; out: write_unlock_irq(&tasklist_lock); + free_pids(pids); if (err > 0) { proc_sid_connector(group_leader); sched_autogroup_create_attach(group_leader); From patchwork Thu Feb 6 16:44:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mateusz Guzik X-Patchwork-Id: 13963327 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 0E3E4C02194 for ; Thu, 6 Feb 2025 16:44:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 95B7E6B0096; Thu, 6 Feb 2025 11:44:58 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 90BCB6B0098; Thu, 6 Feb 2025 11:44:58 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7D4F86B0099; Thu, 6 Feb 2025 11:44:58 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 5BD2F6B0096 for ; Thu, 6 Feb 2025 11:44:58 -0500 (EST) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 1E1841C8F4F for ; Thu, 6 Feb 2025 16:44:58 +0000 (UTC) X-FDA: 83090094276.09.60C1762 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) by imf11.hostedemail.com (Postfix) with ESMTP id 2C8F640004 for ; Thu, 6 Feb 2025 16:44:55 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dC1i8GDS; spf=pass (imf11.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.218.51 as permitted sender) smtp.mailfrom=mjguzik@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738860296; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=6DMFX6YMCCpHUnKPYix3pzepx5ItpSalkZSrvWGNgEw=; b=nYWVPAs0NM27XZmlkrE/zPdSjst6VzVCy8zNKUXJsenzeT39216aa/TRzRhoBDc8YcWu87 m0zqDhILkKTPqFTgEdcaVxm6OVb64CD9ik+O5HFyvFTwQgLEXn+HkJY8Z4WlcMiJl6tqLM E5LtGPhodd6gzXYCnRsQxGbmdqONYyQ= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dC1i8GDS; spf=pass (imf11.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.218.51 as permitted sender) smtp.mailfrom=mjguzik@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738860296; a=rsa-sha256; cv=none; b=7bw0iOccYf6V/YIVvXMDi+37GaMz9SkJlnS5EU4YPZuOL3++rbsj9iafe4tXpvE73uL9v8 2Ya+YDMh5FasYylgjO3dI/+uKEAjzMBChd9LKbWeGixLGR+tkzEJ2oHs2yxHOaUuQtrPUm AGP9jZBdWW2qWh6yqneWmK1jCMpXA0M= Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-ab7814aa2adso50254366b.0 for ; Thu, 06 Feb 2025 08:44:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738860295; x=1739465095; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6DMFX6YMCCpHUnKPYix3pzepx5ItpSalkZSrvWGNgEw=; b=dC1i8GDS5WVUrsnQl8o4TE/5ub/35p5/8d8+60CJcMmzZ1RdKvUcLOoxPtq56dg6Ng QwA/IRW1l1vof3y4M9Iy4k6JrW4Hgd+wYFDRycBTYl0b/H9mN13ULap8PXESrNPLoTqx NCaprjay6pEZ+tyfWW7X9MgTtcp9lMftYr21GRgk1U9k3UX4LzJ5ka/6ywgdOl6Lrqxe c4XYXDudpXwHNyT9RSiqOdTAW+E/zN0uEqLA8MRGCsHm7Pb0We1e9CMa1NTp0wb6Z4fp y+diStz1Snb0H6HxmGkLPGMtjZhyVU5w31soLAo9mo+axcLcIna0Ec3R0WvvpOn9ldpx C+8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738860295; x=1739465095; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6DMFX6YMCCpHUnKPYix3pzepx5ItpSalkZSrvWGNgEw=; b=Q7z75bso02TjeJReFcD6itPHm8e53RQtp/CqiWV30/ag8HCmys+ZxVrg8a5Vm+O/mC +h3voTGfPbgtBAAkr+rEmbNHX2rq7xNSYm2aCr2RLfYeOeukeh4QyqOiPuyDej3ay/S8 41oc/lChovAS4C21FBQm3I8rvMdX7W3l5LDMHXUSZ4F/c2q6B+Nyvt4vf9eGl3nvfJgG P0VitOxAldykmhC0ilfkLxyQM2/WcTZ3kM1XJOuwOSdLbAgypNNHMO8fcu7T5+GMT2Aa a7tsDpgsRLrRpl4BBtvmxWxY5YejU+I/ebKj+CIcNAJqh8OZkzn+cE22B1x8AhbbhGyY J/Zw== X-Forwarded-Encrypted: i=1; AJvYcCV0AS9gnWNILunS4RZXUUt0mivWuw1ripXLPd+RGIcn0Beie9CJ5nKmrnnINeDwzQ+BRrmo8wy5+A==@kvack.org X-Gm-Message-State: AOJu0YwGZZ/ossp+AZpd+BvuDeao70MvZaALdfF8MWiDhObnTy2RSWFo 7cY2/LuFKJWleetTHbihpVnoJG6Lq99QVT5IXXj0nYPupdzFTd3wqhr+ldzz X-Gm-Gg: ASbGnct/QwzfSkgqbUhkFIXnYrNghK8Kznpbm+2nrOhXnUFOx+vQB/axnx/E6uYbJHR XPHeP4Qa910N6lVKNSyBsMc52xzm2QEHizCjp1zZhg9z7lxGYYVmV3g3NHLAD1qwHEkKmhnS6dj pm7rWX9VVZ7I04Lq2xyrhw82uU1D9GiuqzlA0D5dSABEio4mtqpjfv4h0mOvoJFi2D8d44wIA9d lasShuqnTapzHUeLkGC2hN8uzYqyZUkM7r+Y2W84MLt7VahFQdXIFMnnc/dmHaVtPO69A9EgiJo Aed46w23lPeoBphjC8zwq2YOtgj+NIo= X-Google-Smtp-Source: AGHT+IGOagMU3s4dSLwHCKRWQGm5DZx3LMYAR9bqVzPeh6m8lqHiM8BrELKuAU/htbOM8AWykF4F6A== X-Received: by 2002:a05:6402:210e:b0:5dc:58c8:3154 with SMTP id 4fb4d7f45d1cf-5de450800a4mr213355a12.28.1738860294539; Thu, 06 Feb 2025 08:44:54 -0800 (PST) Received: from f.. (cst-prg-95-94.cust.vodafone.cz. [46.135.95.94]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dcf9f6fa69sm1121849a12.73.2025.02.06.08.44.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Feb 2025 08:44:53 -0800 (PST) From: Mateusz Guzik To: ebiederm@xmission.com, oleg@redhat.com Cc: brauner@kernel.org, akpm@linux-foundation.org, Liam.Howlett@oracle.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mateusz Guzik Subject: [PATCH v6 5/5] pid: drop irq disablement around pidmap_lock Date: Thu, 6 Feb 2025 17:44:14 +0100 Message-ID: <20250206164415.450051-6-mjguzik@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250206164415.450051-1-mjguzik@gmail.com> References: <20250206164415.450051-1-mjguzik@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Queue-Id: 2C8F640004 X-Stat-Signature: m8kbwnxshsdy3rscbij339ipcny3uwcm X-Rspamd-Server: rspam03 X-HE-Tag: 1738860295-717334 X-HE-Meta: U2FsdGVkX187hi4WnszPoh5RCdE8u0nBJMRtkJT3HcRsyWUtNDS3pyqaXqzy7tKBob0/S/KieB04gO9pz9RBTyswNp1ke0Cf0k71GRPGeEGZEagKIOZef4mUllfEGAqN9cAKSF6dgmQoIV8WNPHloEIOkmkaS8uzA5DO8YrgVdvWTl8oeXiZ+l560jj7C4ASzmgHiZ/+4noYhCTheCNVbO260dEcodncmAJpdKJWYjYpfPoK1N+CRmqCjGtpw+Q2EOGFRATexf/ZqlVFoi0RbS3uh1YFva3arvbEKH8Q+pX7dx8FaU/7ITmVnp1kqbuFHahU4wPQyG2RjiavrUnGSlTq9MJ6Q0sQnqsu06gQUayO2EAjEiYAOLldiKj1mbr/E883hSnkVRrzjFJNjndHob7qk/6HG3WucTe15m9zZ77Rltc+tejVK9f7NefQWqbC1ToPpmEKRgK2C+Y3yJEenfASgC4RIoDsuxuN92Z8ReljadMlWx7Ok66Cuj6sHJzRJNE8XFqLvAH8Kx/tsT5J0IwuYZ3Md9RrGPHXJ8nLepG/OD6+j3E3Zvy90hNFcmbJWuN1CyOX/EwbcWv8bsl74kz1z6haweHKYxeAqajXBHT3eYB+tY5fqU07NPIPd7rrMQ7RN8sbx2d2MX0RNi7EpM0at7kKYdQkeg9Fd0ft3vz8RzQCPhsJzpiaMCNLAWAiidBhFY/wYi5sqHldBiCgIJABlot+CFM+lE5RduoZN3XK+dyHv43UTffHoXWMlth5v6T/tYx3dYiWmYxfJiqP09cy+cEhphJve0vUcSb+R9SnDSnWwillVcMKYiqoJ2CLIIvVENmzVdeOkGKj8z3M5yUEP8T8LJXKCl25TtDvb+0ZaRWDqBcsDA+GZA6ijfC7U7+AokA1n3IimepcyoHNZM3lAbGhz4LuNAyg7s58+Yrpta57WGKczTfffupmnqBjsowtSq2j28qfoPWtDwu KN2mpdUm 6GB8yuWKY8qwLSmhG4ohVEVl+Kl4/IaeWCaZQQPIT6viAYBDkeS52jctROWNmKV81udHinBOivppaB+7eSDCU7p7U5OeEfSpiYswncnis07NAa9hfZkhQFAUdAcQFQ3q+ktF0qnqHLFm2EBbWmedhRQrthZD8l3uA1C6AmLdPMtliLEO9ClAIYRNL1vnnt1pZwOp2y/QEBW/CSM/q34B9UMbbGHZbPJh92L2o277BHCxv2QGhu/lPew8AWFShl8IYgXLTxEsw+uYXYRo3xCIBl2GjolQGHJYYARSIuCLwAbF9Q6PEv1pU1k2spHxXafRwXv54O+8eUHv1rgsO+XDJ6zSkhNpIxBf7hxnP5D1KNuDx7EaPOebVaMNgNHTpUsd32P8EJKK9fJYkR12Ln84HyuC95+GuUXKiU7LT3+Gp7XbmMBKGJjMTHhn+fozvcjRVZYMO 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: It no longer serves any purpose now that the tasklist_lock -> pidmap_lock ordering got eliminated. Reviewed-by: Oleg Nesterov Signed-off-by: Mateusz Guzik --- kernel/pid.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/kernel/pid.c b/kernel/pid.c index 73625f28c166..900193de4232 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -115,11 +115,10 @@ static void delayed_put_pid(struct rcu_head *rhp) void free_pid(struct pid *pid) { int i; - unsigned long flags; lockdep_assert_not_held(&tasklist_lock); - spin_lock_irqsave(&pidmap_lock, flags); + spin_lock(&pidmap_lock); for (i = 0; i <= pid->level; i++) { struct upid *upid = pid->numbers + i; struct pid_namespace *ns = upid->ns; @@ -142,7 +141,7 @@ void free_pid(struct pid *pid) idr_remove(&ns->idr, upid->nr); } pidfs_remove_pid(pid); - spin_unlock_irqrestore(&pidmap_lock, flags); + spin_unlock(&pidmap_lock); call_rcu(&pid->rcu, delayed_put_pid); } @@ -210,7 +209,7 @@ struct pid *alloc_pid(struct pid_namespace *ns, pid_t *set_tid, } idr_preload(GFP_KERNEL); - spin_lock_irq(&pidmap_lock); + spin_lock(&pidmap_lock); if (tid) { nr = idr_alloc(&tmp->idr, NULL, tid, @@ -237,7 +236,7 @@ struct pid *alloc_pid(struct pid_namespace *ns, pid_t *set_tid, nr = idr_alloc_cyclic(&tmp->idr, NULL, pid_min, pid_max, GFP_ATOMIC); } - spin_unlock_irq(&pidmap_lock); + spin_unlock(&pidmap_lock); idr_preload_end(); if (nr < 0) { @@ -271,7 +270,7 @@ struct pid *alloc_pid(struct pid_namespace *ns, pid_t *set_tid, upid = pid->numbers + ns->level; idr_preload(GFP_KERNEL); - spin_lock_irq(&pidmap_lock); + spin_lock(&pidmap_lock); if (!(ns->pid_allocated & PIDNS_ADDING)) goto out_unlock; pidfs_add_pid(pid); @@ -280,18 +279,18 @@ struct pid *alloc_pid(struct pid_namespace *ns, pid_t *set_tid, idr_replace(&upid->ns->idr, pid, upid->nr); upid->ns->pid_allocated++; } - spin_unlock_irq(&pidmap_lock); + spin_unlock(&pidmap_lock); idr_preload_end(); return pid; out_unlock: - spin_unlock_irq(&pidmap_lock); + spin_unlock(&pidmap_lock); idr_preload_end(); put_pid_ns(ns); out_free: - spin_lock_irq(&pidmap_lock); + spin_lock(&pidmap_lock); while (++i <= ns->level) { upid = pid->numbers + i; idr_remove(&upid->ns->idr, upid->nr); @@ -301,7 +300,7 @@ struct pid *alloc_pid(struct pid_namespace *ns, pid_t *set_tid, if (ns->pid_allocated == PIDNS_ADDING) idr_set_cursor(&ns->idr, 0); - spin_unlock_irq(&pidmap_lock); + spin_unlock(&pidmap_lock); kmem_cache_free(ns->pid_cachep, pid); return ERR_PTR(retval); @@ -309,9 +308,9 @@ struct pid *alloc_pid(struct pid_namespace *ns, pid_t *set_tid, void disable_pid_allocation(struct pid_namespace *ns) { - spin_lock_irq(&pidmap_lock); + spin_lock(&pidmap_lock); ns->pid_allocated &= ~PIDNS_ADDING; - spin_unlock_irq(&pidmap_lock); + spin_unlock(&pidmap_lock); } struct pid *find_pid_ns(int nr, struct pid_namespace *ns)