From nobody Mon Feb 9 04:32:13 2026 Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4040341C6A for ; Fri, 20 Dec 2024 13:42:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.188.123 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734702174; cv=none; b=Kc76uRaxQiX2P6kY/tS3BsuqofFR4Rje4rjsSKCJpA3BHOiqlshEiptqvGrA15qelx5SpwurmJJzdkfaFIK3L6E6C5buueCHQ+Bz5X9/hhtNVkNAGMBTEqODWs7hBGILNwQ96Blpg+fwUaboO4LmlpxVVjhkfVrQvLb7m3Pp+QY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1734702174; c=relaxed/simple; bh=uGk+TtpfS5Gy8h2hCFiu7AervZ9dVAI+PMorhYu/umE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=gsgQP+T0jY3fL3jQWT9LBwXmsyZr2WZsHf9Pl7CTvjoQwwTEhzYdGvMnh19YE3lQqAujW9hVCpkORnTGcoamWWyAP5PDoIGwichLDUMxWU0NN7Mh1xmnlkCyYt+apfwDNXJVQQ89tNRqDQyyW8msTK3S+pwd0CiqFjfoPtL8UYI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com; spf=pass smtp.mailfrom=canonical.com; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b=AF9UCfVz; arc=none smtp.client-ip=185.125.188.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canonical.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b="AF9UCfVz" Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 142F93FE57 for ; Fri, 20 Dec 2024 13:42:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1734702169; bh=dQbg96P0DrKqCunYYx+ZxGswik+aV/Op1UtlU//A1LA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=AF9UCfVzRCQ/03fEWeh1OecoD3E38GGcI7b1ufy8cjllbCjGYBTh8sqDvui0OUoak b05vP7F9VNKtYunXEpwQSkKewSf1d3m9+NRTPtLtU+aVUuPPXt8mHvnZvzqJHE2co7 Y+VXKwpMTltifPSA6SF9t6lhJdlsrZGoTFft+YZJtxxdRai+2FilF4oPXjS5D4u3+0 t2HrjjgZEzaHI9tcGwgOZR3v22rCP6h9uqpJasCdm0VD4Fv61wWhYIVX0V90gl0rDW lfunVDNdhoqUgfrmmu84nzLteGz+9AxF3Ykv1p06xIkrW0peAdpZXgByDLvgqxEQc4 WAEHoOhkITNhQ== Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2163c2f32fdso31743235ad.2 for ; Fri, 20 Dec 2024 05:42:48 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1734702167; x=1735306967; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=dQbg96P0DrKqCunYYx+ZxGswik+aV/Op1UtlU//A1LA=; b=www7+Gdg431CgjvP0uAq1vpGQbkqjqDif6CuxmNHCBQaTO+yHE25eHyi3OUFkGl03a wkxQmFu3xj8FpReq3Y1/lQZRYOt8b5H8vy+ZI8nPzC6fZcnyku3tr8+bPKaltaCT27ww 9ujQ4cxbFt+v1NiMXCSvZ1jNlR7pBQrGblQOrQBg1qWYjk527quPklOundLwEgpjDIBY kAf27d+MFLwo3Haet+GQ2s8fhzbEEuLWHS15EUUcdsJio0tKkplxRorFsa1I1Ajp54Hg G+m+xXqft9kFYRxvLVZxiQCTQh5GKl25EeTNgSvy2QYT+ObrCA7vVO9mKn7DBUdcN1Hd x9fw== X-Forwarded-Encrypted: i=1; AJvYcCXTV9VK3TWhGbwkWJD6qPjnjOaKB5qgNU3/MdrUWJHcE83vT3C99AV2IikUNZ3fBmBOnw45UO8URjsF44U=@vger.kernel.org X-Gm-Message-State: AOJu0Yx8djmDU1TuBZ1wAAieR82INuu2JA16868mr8J7D8KYUxrY6tMc Me2n+hIODx+/BnmcE9gwV1qySDFRRMpl5Cjqw14/FmIO45/0uSruqZbmEauKzPz/YYjnoyOiojS QZ8hI+tb4ea+QGSjMsEV48LwM0NrLmLJ2tOZL7/nEiRQpsjsFqdZCirZ7WnJIiaeDDWSItT819G Er4woe6SQjeQ== X-Gm-Gg: ASbGncvN4Dx2sEfPLBi5Hm9PXLOatDhGCxAkl/6x2Luzh0FaDTv+FlBSn/2cKDzZw/N M+3ZCmposrZTQNEFLRAgIBqQU12OsUnXMFxna/8chbygZ7Y2pYuee5fe+tU38ofSBGpCDE5b/4t rjy6TTbn8YE8ag5PZZBObCVScl+yE+OvQip3JYusC+/Mw1+ZfAfwTQ8KQGd1IcSx+HhPyekPHv5 C2eyE27Xgly7Xu0kvQoV5gRb7EJUyCQlXHH7J30jOkou/0jge3dQ+UaSw== X-Received: by 2002:a17:902:cec5:b0:219:d28a:ca23 with SMTP id d9443c01a7336-219e6f1484emr35635315ad.36.1734702167461; Fri, 20 Dec 2024 05:42:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IE0+o7XuJ3NsQg7m9m7Gszs7xbQkXpEKPiCC+7bq0dACwWfLK5OK/25UT8Pwg8Yjt1oW6/obQ== X-Received: by 2002:a17:902:cec5:b0:219:d28a:ca23 with SMTP id d9443c01a7336-219e6f1484emr35635015ad.36.1734702167074; Fri, 20 Dec 2024 05:42:47 -0800 (PST) Received: from z790sl.. ([240f:74:7be:1:3abc:18f3:dfe7:d8c3]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dc9cdd88sm28284935ad.122.2024.12.20.05.42.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Dec 2024 05:42:46 -0800 (PST) From: Koichiro Den To: linux-mm@kvack.org Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org Subject: [PATCH] vmstat: disable vmstat_work on vmstat_cpu_down_prep() Date: Fri, 20 Dec 2024 22:42:34 +0900 Message-ID: <20241220134234.3809621-1-koichiro.den@canonical.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Even after mm/vmstat:online teardown, shepherd may still queue work for the dying cpu until the cpu is removed from online mask. While it's quite rare, this means that after unbind_workers() unbinds a per-cpu kworker, it potentially runs vmstat_update for the dying CPU on an irrelevant cpu before entering STARTING section. When CONFIG_DEBUG_PREEMPT=3Dy, it results in the following error with the backtrace. BUG: using smp_processor_id() in preemptible [00000000] code: \ kworker/7:3/1702 caller is refresh_cpu_vm_stats+0x235/0x5f0 CPU: 0 UID: 0 PID: 1702 Comm: kworker/7:3 Tainted: G Tainted: [N]=3DTEST Workqueue: mm_percpu_wq vmstat_update Call Trace: dump_stack_lvl+0x8d/0xb0 check_preemption_disabled+0xce/0xe0 refresh_cpu_vm_stats+0x235/0x5f0 vmstat_update+0x17/0xa0 process_one_work+0x869/0x1aa0 worker_thread+0x5e5/0x1100 kthread+0x29e/0x380 ret_from_fork+0x2d/0x70 ret_from_fork_asm+0x1a/0x30 So, disable vmstat_work reliably on vmstat_cpu_down_prep(). Signed-off-by: Koichiro Den --- mm/vmstat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/vmstat.c b/mm/vmstat.c index 4d016314a56c..44e1d87dcf01 100644 --- a/mm/vmstat.c +++ b/mm/vmstat.c @@ -2154,7 +2154,7 @@ static int vmstat_cpu_online(unsigned int cpu) =20 static int vmstat_cpu_down_prep(unsigned int cpu) { - cancel_delayed_work_sync(&per_cpu(vmstat_work, cpu)); + disable_delayed_work_sync(&per_cpu(vmstat_work, cpu)); return 0; } =20 --=20 2.43.0