From patchwork Wed Feb 5 20:09:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mateusz Guzik X-Patchwork-Id: 13961858 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 E5E0BC02192 for ; Wed, 5 Feb 2025 20:09:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3EF2C280019; Wed, 5 Feb 2025 15:09:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3A02C280008; Wed, 5 Feb 2025 15:09:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1A36A280019; Wed, 5 Feb 2025 15:09:46 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id EB43F280008 for ; Wed, 5 Feb 2025 15:09:45 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 9B97BB1521 for ; Wed, 5 Feb 2025 20:09:45 +0000 (UTC) X-FDA: 83086981530.02.C6AD98E Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) by imf04.hostedemail.com (Postfix) with ESMTP id B786040007 for ; Wed, 5 Feb 2025 20:09:43 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=cfHSlWbd; spf=pass (imf04.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.208.43 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=1738786183; 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=pj3pWrosGkUlfXcIPyDNQK+jIHHC44medwj1pRwHHC4=; b=Lx0PhCCvSQYktmiJ+wtpUY/8xVSulCDJ5xYrrqlhsJozXtjimTyFJpRb4e+UHH6rMo7wdw bazrk0ZBnZXx3npCyD5Zlq0xYBUF9OTAhAdIH1nA+G7QeYMwpN8Q6QO2kEbG35B+VqMuB9 h0ZLw1fU0Ej+AQ/vjMU/M/IGYp6w+mM= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738786183; a=rsa-sha256; cv=none; b=OxfDbJHPndwY02tFoysKw3FJHgpvCILP18LG1tctbza0TEcuu6mtlXGW69sxG3mrt7oNCQ qLAHKX+Wgieey7ffCrGvsps56KQLgEvaoYGAMecLuZmBJhmUOkJDsjs1jUOiGYB9gbvbXx Vj0SXrz2q2om4yega8LZVPNFZSUvuG8= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=cfHSlWbd; spf=pass (imf04.hostedemail.com: domain of mjguzik@gmail.com designates 209.85.208.43 as permitted sender) smtp.mailfrom=mjguzik@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-5dcd3454922so371726a12.1 for ; Wed, 05 Feb 2025 12:09:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1738786182; x=1739390982; 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=pj3pWrosGkUlfXcIPyDNQK+jIHHC44medwj1pRwHHC4=; b=cfHSlWbdCkzEwLeFkq3NNdmqjYvGMBpXTZHp/gV8ZvdTIRbNN4JGpGhWWDP3w4U82o IQrb/tZiMXknjPfMDy5hUvU9XXKXEOIcuSQvBB/Ao6rmwYkOwMKldCkgTOIvSNrNoOGS 8TDb9eFzG1hkulBV7IIEiRWxGi8KO63NFWZz26MyW51JYBQgvHRCKJv1V5KAanZAN/wV zMvphR2hcB/WLqXIuZv515zpjr3rF8+ZaAPVyXb0htb86XpGktBuzkNA9yM98XZCVFVj Cer3+xB7GYIco2OmJFVGw7vvZ/OhoerTgY92Vmp/1nBSa5yi8+1VghNH6d50GPWC9Y/T ZaCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738786182; x=1739390982; 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=pj3pWrosGkUlfXcIPyDNQK+jIHHC44medwj1pRwHHC4=; b=VSwnDxMYzALgcT0J+KZKFLc/mlrFAOUlBz+rt8v/3u62P6+IX2v/e3hG6G8eQ095Cm 6KLmIkEPfeEOnvuGqofPoe1LJE/mZLt9tm38Ly4XTbXzIoqnip72KfxTVqiC48ykpq/I RYHT08vm+0Z1JsIxrvYB6RAHfUkozGt18gjuIVNuPlWgQkIIt7bYNOaw9XDlPcw3qNGm rOGvJTAPIJW+fWJig8+gU6FLSA97c9c0S8wEk2w1e5PAi4H0t/jeFAVLuou3/K2Llpt7 oSXCn+Jg0TKDHmmSl+x4lsCq8Ufjlji99J5uv4X1ucr/eEloFOv4FepZ7qWJUjWqsFF5 Lzzw== X-Forwarded-Encrypted: i=1; AJvYcCXB+00bI/o5nQpnvBG9MEKvWN+08ahuyE4JJsqFujJV4ty0/FxFTgmdqOaN36MUdaRTuI4r+2ZX/A==@kvack.org X-Gm-Message-State: AOJu0YxM/UjJ1TKnMCG+BOBvnwI6pkjQTcydQqLGJaR/dDwpeYMsbKws D6BJtkfk7RetvYnwQlZjxe0wSZ4Gi8YbFifjdfbzhxVmhTI55LIT X-Gm-Gg: ASbGncsUH9f9mm7XZoBYOXH5dUbcF7cqE2oqkMag0jk3Z9M/SE5HfrDJqo4Dwwkz3Ce kCFBbemqlQim1t4DdY6wul6FKuWdrTZD8fMibKrAmnet7qP/xkwuTMecRyx7XleeEBA3KRJQWYI ac4lGGF185djyu8MW9BpmFhAGvtGnIuZpjKWrouGPbIbIpnmnpdsH08dY3bpo/o3zjYxesjyohO PG6erSgm5Q82Fgc/peVb+HOjx07Jub7CP7g8ZNodImQg4XfzGPYqc91n9CCB+VWOXhuIJkecBEJ M2p7cc3w/bVon/bpS9ee/RQuovpHM5U= X-Google-Smtp-Source: AGHT+IFgTBn5lP4dqU0ydTXpkrpjieHD7lv/hSESjvAyOOi9Zo+cwux8FPWnWR43OTCyLUkzOvro/Q== X-Received: by 2002:a17:906:6a04:b0:ab2:b936:f110 with SMTP id a640c23a62f3a-ab75e241f9cmr455031666b.20.1738786182011; Wed, 05 Feb 2025 12:09:42 -0800 (PST) Received: from f.. (cst-prg-95-94.cust.vodafone.cz. [46.135.95.94]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ab703fbcc0csm932221866b.53.2025.02.05.12.09.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Feb 2025 12:09:41 -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 v5 3/5] pid: sprinkle tasklist_lock asserts Date: Wed, 5 Feb 2025 21:09:27 +0100 Message-ID: <20250205200929.406568-4-mjguzik@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250205200929.406568-1-mjguzik@gmail.com> References: <20250205200929.406568-1-mjguzik@gmail.com> MIME-Version: 1.0 X-Stat-Signature: tebp4niumcwx9ezwbq6hoa7wbrc6m99q X-Rspamd-Queue-Id: B786040007 X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1738786183-474537 X-HE-Meta: U2FsdGVkX19/sMQFT7q/kdYROiJ2Bo73EBf9afs4DAGJwX49JIHuGAR7NZuUz0+qG1bgn2gTxZzI55vBsM0Ml9oCK38d47pglKKvkigkGGnAqMAIAZ+MhwNsJ0PcbxNHLsuKA9Pvh+yekSoXAOyg75PkWgAfVJJ8a6UuamQ/W9NrdMXk3u3xOZSZeWfiVdqNsYOQjWCrO/86h/wSfEPC78FXpOkY9nQ3X/hQ8QUm0XcOsf8efZ26GFlo9we8//d4nOxjjLXy64ctDyjW4pkb/NPLu4kD9oMRn850Mkhl6sEex6VrWleH7JO44v60eUR+22C1bltGgGxwP8glL4nQ/2FpS/yuaKTrWwBjJuJXUwbpLwifiFSfF8O0kPL1xVF4FsTfGlFg5HFV1UHH7fb4mXcL3/W5CSG1dA1wQ6Tj7ocGnEZJK6WcxcTwsYaHOD6445CVTxxSFyDiyP1osJkMtTY0orlrA3sOyIr6yzixKyCsJbhqrOL0e605kYaz/w+juMFCDw+p48AWz0Z3zsGH6nAndkgUxgWitd3Is2WdKvv0BUTqs806xrNbbtITe/lk8FQLfhEJVuQ9/Gr76k+/R+BbwBWWBiPBuAfMAtMmNvL7ihyRa50PErLDuQ23K5+429cwN14YTXqLrr40TxChjmzaHFxjEMfcwTi577bZTgQOTpr99Rzt+A3HfYQ85YfqOZOvRX+ue5pUgeZZfEXJmCJ4qOoANL7nkx0aRF8RZqhKxk/zJ5/3PXq5Pi/m3rBPo7piTPk8wqr6SwE7Beqnfh3zED4IjgxLA96LAs6JjiXNrCy3M208qhC33X/z27Bg2zxztnqnB62l26ikQJFfGj/9wlIUmT0NiXoeRg9IlGCRIyjEivApVjF1zPwZEvDTz/0bLcovmr1b8nFvg/GqmpzqxA9r432DBois+OOp9/Qqdb1c35u+4CrMkIMjr3uAIR+qmeXSZPf3jknJNoV BqUUYRie f97QSRzwFisQ3lq2PITZXD4F2eEgC4JFobZ7zRfwjl700G3xTJEm8moLJy7Hwm3khJAkrsHVeSYZjZjOWb/Uj7gh8CFekB9EByDrqQQfjehUZghIfZ11n0d9boMltDfi6m30K/gSOGV9b9ER1IfaiZ4KG+3HPutAOlDaRqVbMZ4wcL8+U8S7W7MMuaHvKiHhpjZWBkeGtlIBlIfwFgwokfO5zjuiDeg0Ji1BrIQHchBQbvVFqJ8Mf1oAe2Jbh2mkpT59qtvodFBjK3Guz9n22wosfMQpQ5DG73WqRAbVAyp9Z8/CSmLQG+wu1f/jUlkc9K7rPE+M1yoYWpuZvdMSarbZh8877gDTH7dAebtPpI7s+REy0WZElK3Iq76yfTvMKXuVW083BJhyL5kBL//9aHY8RPe6RVFqVGohbwuLu9ZaWFcrUOFtea1+7FwuYBsLfGF6j X-Bogosity: Ham, tests=bogofilter, spamicity=0.000002, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: 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]); }