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]); }