From patchwork Sat Feb 1 16:31:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mateusz Guzik X-Patchwork-Id: 13956256 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 2667FC0218A for ; Sat, 1 Feb 2025 16:31:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A5AD5280003; Sat, 1 Feb 2025 11:31:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9E4A6280001; Sat, 1 Feb 2025 11:31:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 85DBF280003; Sat, 1 Feb 2025 11:31:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 65438280001 for ; Sat, 1 Feb 2025 11:31:37 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 2B1EFB1A27 for ; Sat, 1 Feb 2025 16:31:37 +0000 (UTC) X-FDA: 83071916634.01.83B139F Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) by imf22.hostedemail.com (Postfix) with ESMTP id 43E13C0007 for ; Sat, 1 Feb 2025 16:31:35 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=VyBtPSQB; spf=pass (imf22.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.218.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=1738427495; 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=dyyFSflvKZq+gCyw4L+aRmZfdJK9jjjI1PXfRtKE+Wg=; b=mGqX716ValaaTsxalbF1UV0IAoV2e5e5GUfswn6fvjX74P0ch8b5Z7V1e22J1f3Bfv9URa XHR35ojiXhFv7aNVugkA7sis6OpRBtJZKfctSkPrjuN85Mq/QD4XEGyXVjppt/vMQmJZ6Y RUujl1juWGiKEIvpSAInJizh5rK4obA= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=VyBtPSQB; spf=pass (imf22.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.218.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=1738427495; a=rsa-sha256; cv=none; b=uIk69tQaauKQ4C4kYEPW3HnhWvTtpgtqfhEJT76GQ1XNdbibqgFRiVCLoP1jlCxOudZ+ce XUuDsWnD1tO8bJZ6aIAgsCwu917waEE7djwBtaosgjEcn5635yMkyThLDAQXDGzSV9RGI7 q8O4hkvp/BpBnZz5PeihHqAKC811bgo= Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-ab698eae2d9so594678266b.0 for ; Sat, 01 Feb 2025 08:31:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738427494; x=1739032294; 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=dyyFSflvKZq+gCyw4L+aRmZfdJK9jjjI1PXfRtKE+Wg=; b=VyBtPSQByfdlG1ma1Gsw6PmpkFl28njm4LBBtPAUb8KaxFNzF5fNI5H3SVEF/atTbd NB7Z6rCO3M1A4876AbrYTyPcCmi89BLKq5Q+Fw7lzcQ8Zt7nHcWRHMY1I3+A3d6k55VB OSM+BGTuaBdc4qMKFbg8bn8ItEH/fn+Y/iz16Ce1jeYC3Ek0d6d2Uf0fS2+uIgmcludO kcAWzj26iYG4S98PHm9KwjL0s0eUO33lfcFhEntHcjpV+PfD/mpFQfFjuU5OwLiPpumx EIOLHAWxBVtlvS9t2H1w/ZLmU/FqSsWigRftyh89wXDvilp1prEcYpcDFTVES5DS8CrW pmZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738427494; x=1739032294; 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=dyyFSflvKZq+gCyw4L+aRmZfdJK9jjjI1PXfRtKE+Wg=; b=venC0nFl0NBm/5mrKasMqRdlcaB6Fs/c3Z4mbFhcfBRHizkLv/9A74GYUVEuSsoUSw zUVe0Akj824OaRmZyQeTwrSFJW6jLKEofvwdOmGr5WWGqedor2JiRsQxIpO++Gb4JiH1 32oFj5EO1YVVemirkE0jEvu7LaC1TLyNFkWDfLf8AM2IgUADHPkeweKWOZ8g73sK+twW KMXOPc8Vqw++G8xcwFlWUCVO3wFyguSUklhOPpL3xuKrf5gXnU0jeU2G6ZVV0OA1WCHd 4sRqZjxNCBz8P6j0ltwRxziCQYO2R1v6WV9pdmiV5Pz4b1sN7YvZLgwVLVGDyiqKeXNL sRWg== X-Forwarded-Encrypted: i=1; AJvYcCUATGvJMpXeqPpnxRhDsh84qVizTOyqC96C5jGBaVxA6RXfj3r86u7RFGprG51ZGHtI+1piclWv9A==@kvack.org X-Gm-Message-State: AOJu0YwLpiITt4nYuCXtk8dPqRNs77hwPU1eQMMxhxM+bUmAMVF1DtIU OgaIVzo/ZE3/1N7OYBU7T32N+gOPa11emd6MW8Lo7XSphrOlQDFt X-Gm-Gg: ASbGncsUy2CZJa3AgNb/W4aS0ieID8wLIj3ENpareIiKOE64nrEZTZvekV/72vl3j6i 2ZYqoglaOHJNFxrYeET99LjnrgZau1BEhSWAgve1HBl8fb0ZB5kRYoJm1KqvfyPoRbLJeq9dEqw EJqaOWJyZgtTltrem/z7KUAlQaN+93vOueJeQv5nEEQwlDt2owictlcd+ZCayJTxAN3IXEgZDoS fsgzLOobpwZceuyX2hh5OMBe82eFVZYlMrMegurcIheDmMup21PUsXyYEPlg0ZT0BHdWHr5jW2I oKjbPB1SJEFm9R3fhk0V6z8bYFx4rn4xQg== X-Google-Smtp-Source: AGHT+IFqaFYGHdlE7Mgj/EaOXQAoxs/uxy0rQwtHMZ/EngGz610MENXkBznnc7SJaPbJh49JC1NgBQ== X-Received: by 2002:a17:907:7fa2:b0:aa6:6e10:61f6 with SMTP id a640c23a62f3a-ab6cfdc6724mr1500512566b.52.1738427493533; Sat, 01 Feb 2025 08:31:33 -0800 (PST) Received: from f.. (cst-prg-25-223.cust.vodafone.cz. [46.135.25.223]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5dc723cff72sm4636959a12.15.2025.02.01.08.31.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Feb 2025 08:31:32 -0800 (PST) From: Mateusz Guzik To: ebiederm@xmission.com, oleg@redhat.com Cc: brauner@kernel.org, akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mateusz Guzik Subject: [PATCH v3 4/6] pid: sprinkle tasklist_lock asserts Date: Sat, 1 Feb 2025 17:31:04 +0100 Message-ID: <20250201163106.28912-5-mjguzik@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250201163106.28912-1-mjguzik@gmail.com> References: <20250201163106.28912-1-mjguzik@gmail.com> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 43E13C0007 X-Stat-Signature: mj86og18oka6dg5pc59bjkxaijsyfa4x X-HE-Tag: 1738427495-548024 X-HE-Meta: U2FsdGVkX19hVBLSUu2ca8v3NoEuDqbk32uleNbTm8u14LtOoLEDMItwUWDULKEP2hNyLaUWB6dJyuH/xQDK0/UnVQcz6DQl7XUGmGObujRXjb2JolzvsSYo6+ZaZDRLj+MC5kJ8+TtvyOMvyrCrdkPIMbUxgSNPDVRvjRnLcYLK2+qOcDH/Hi2PWCVdJCXZoJbxgB7afGwPL8DPzgrQTVYqD0Tqut96g1tbwexqNsYL3VB5ksJBwvvvmyrNWfZzaOwStZiox0dWk1aZGKWwjMkyg3DSgPA7Li9jrLjjb0zkMv+5bmeBW+xFdZ8ZEMX3Rweu3uLEbU48b8Qil0Wafl6J53Ajgocindz44hoHz7rtbic4UMKnl+T2x+IMWrha4y1VJKeAkTgrY/kifCi8xKwlh8Uu7w1SJJpnMBq+kRJneuQViCcHsMEzLOmJ8tl0vrxeD1uao18BL+xNMSsuE+b7hpXomd18qZa4Rrm7P9mltmPF1oqliQyRQed5tip9lpLjAKPm8s35ZQnx9BeocqI45TDbp2J8i3DjSCKL4L9f1zgNKuykaa7XxgRP7FwiQyqaqoasFdCX08bwG601ojk46GNT/XEw4O0mZ0j1sR9WSlW5+ezy0JHXA3zuB6LUltcCuL18y2WCmabWAL7/GDcgYvQTglbYMfM8IMEAbD3/rI2mfSt/CZWgAfSUm5f/sFRP9a0Gtq6PwBhhqYTjcrUYtioDvFpSHZToDTkAGH/cKvDZqB0q8XS1dlgWv/xoaUVXI69IqLDZzPy8zCYCMyZoK4CZm72n/fHRqLvpAGkHD307gf9NlBMPxKQe4DHBUGBKnnWf/Iel6OEg8ZEyGaVXSIpZtwh5YCd4RXv8hRZfOh1fCmxg+2Xgeyk51EDn6OrBvgB7i7rPN1M/DFOKwAG0LS38IdHouAXoOuhXE21+N8iC6nbgsqX3G8VHxj0ddkHAcpJwcRU3bTkizBs zkfTcMsu t+bLBfyC50WEUgQF/2yglNMALD9UhUkAbd0umuVWlLKnlXpl+xg5hnW6ix/msHIjkqosxRbwdIIhZDASR2xkBOH9uIYBqyn+T/ASOsx4nagBrQ5OHk1AvNbB//Cjjr+MQ2DFAgeY92NIFe9mjuCsOZG8Vfwj5Fwj2yd4W2IyX5plJQtOmtqgm4o94g3hz43t6v9UUMuN7hxtmSv84I89YeVYvP0OHtZkzzSr5nYuFD/DfuwM/dBsoK2YTupmdq54+0LQZiLKSbm9Qkskx1zsJer2sEuBPQAAyiwtbNCUH00EQUCIjZw0vxpFN2SIYG4yeWO+eAz/cE8diVM0zr5kemMbKr23ZuTd+y+IV2+ZdaaG8M3iQilhpS4gxMvo+iDdOvK50i7Evt/5wezfs32ohuvDNGsfGLvvgqGHp X-Bogosity: Ham, tests=bogofilter, spamicity=0.000471, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: 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]); }