From nobody Mon Jun 8 13:29:43 2026 Received: from mail-qk1-f178.google.com (mail-qk1-f178.google.com [209.85.222.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF87135F5E5 for ; Fri, 29 May 2026 03:15:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780024528; cv=none; b=pY8nv8p37d9CBZkA7Y4kuzDAW8YxqywaV1UI5CkziWDypEpXhj7qa7PDoFduHUiJDl7NyWuJckTZ3V63V8zZQiAtpQZeTiD3arOapotwV2lA22nDjRLbqw9kodR3Smqusic3IWGfQJkryfr+aIyBa+4rd+AZLLqfPsyMdO64b00= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780024528; c=relaxed/simple; bh=7C+kEFqILvut36qbuX/W3KJQNvUqBgHFoEpdrFMIn9E=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=e4rOLOd6pioeBUbKOJt60PO8UpX+0DFx92OoGX9fB0TEz9AeRrfRA+ZrFX85No/NYTb03Lo8RYyIWxCXQLjwDI66+gJo2lNZgRMw6h6ha7k7asiD06YCZUoWA3qHD7qrDjIhTAG1A74KzxuXtPOTyxAlXYwKACMmvPNpUaiIHaw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OAvrFI/y; arc=none smtp.client-ip=209.85.222.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OAvrFI/y" Received: by mail-qk1-f178.google.com with SMTP id af79cd13be357-914bd98faafso537210585a.0 for ; Thu, 28 May 2026 20:15:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780024527; x=1780629327; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=7VQKUmle+s6m6lEZBFzOZjbbNDmhgzc3MV2Qh5axEj8=; b=OAvrFI/y6AFTnQ1yq2TBy7X0QNRr3+VwyZjecCQwv01UKh5ti1QNnZ2PGaEMGeHdvI mvijKWLyzwDP2qLaakYr/swzIlaYDULpyURg/++GmwN69f4qxC8c5iWDRbZbKR8+IqrY z250wfyQOJZ3g/FEgfTJuh6Mpn/XUfmYQ+eMsWNr0ydaN+isJu+XnbZncTdt3fer076U bB1XavtUzya5iC4oYi8l7ogRF1ZtVyDOWznjMLwNrnujH0wXi0sise9etvZucxPswUF9 4hSzaGzamiP5tdIAyxQGZSNQN/Y1Loz0W+2+ys9mmxBc9bPrifT9mT6qHOWes2fY0aDL nhHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780024527; x=1780629327; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=7VQKUmle+s6m6lEZBFzOZjbbNDmhgzc3MV2Qh5axEj8=; b=jljiakiCvDSAg2qmV53cot9ZYBY2ToHWBhQD9xgGvX5QvdG+6vjqbf0SH7IifjXmSW zODUj7ZSG0JeibJnbgVemhgO+T0OWqcMxxUA0OOvXwZCjgGnNSeo+3tZEZHxp1knftBY 7YLHivtrFAL6H7+9rBLbl+5qak3zoIw0ljniW/hZZw/f5FFIK8xDhgEUispZXETYVZ5m ZMV9cxkDZc7z5MV4QXntZXY0hjrgp2idkE1eUnhgwmvZOg63x0+fZdx/mFU36+XiTtiG D2/lXcuELcL0o1zlo5yrcsTRauKi+7hUHNSWuTuYqNu0Uck81VVrgls1ECJ6o/Jmto1s /bFw== X-Forwarded-Encrypted: i=1; AFNElJ9TVOwASdRhBj3+S/ldxKI8kKodCusZmeAQK3zMAH/zQuo5chNYc7jMobxaMhK4xRU1xlgOBc64MRSdlQM=@vger.kernel.org X-Gm-Message-State: AOJu0YweAVnsq22rcY7WKOEDz3ab5LFoMsD0JZjfUUuQBjVOFBkOmzjq Mbe+ijoevhzgtCOlwdsmYQUdS13LpJNGxGk0zPqG3q0ncnkPGOD2qpL/ X-Gm-Gg: Acq92OHwUSABwCoaxtRAQEHGsKS61PIfU5pQU2CxONuENjChsOooO4Zg33ePdouzo9W K7x2uOBUv9Rea1xsIKn1dEODf6BEdqTm9sVO1/reBPN7HW3YissqgY+yXSn+GJ0kzWjERGD+Ylm QeJ6al8WgRA/y+EfJb/TyhYJyJydwLyBN5lPSHp2Y0JotTN9gJKOSOvvyvV8GMdDOW1KyRnvgSp xmMABJewHwW0tAzIcbQQr+/QReoilwjW3m9yp7Zn42PKn5b/s2LWG5fWDKp8x3GeHQMkJ3jqsFr 44F4HByktRrm9LBRm3kJz7B74e5dBI5cElm5IEomwmKPEZ/ls6ZQCOGLYQdKqvvXhhNnYfOtRgY Kys+O/89f8esGM0e3kEb5jx4Y3GlZlhsgzmh5BvCL8tJzkNAW/yiDGQSWXp8/W9Y9eOn6htPBff u+1xprJOSfBB08FESv+ygAfmg9rdNtdyvdnisnkOmIZCraQnJB39E= X-Received: by 2002:a05:620a:319f:b0:914:c0e8:22e with SMTP id af79cd13be357-9152ff5f1aamr139261485a.58.1780024526592; Thu, 28 May 2026 20:15:26 -0700 (PDT) Received: from i4-gl-tmk5904.ad.psu.edu ([130.203.156.186]) by smtp.gmail.com with ESMTPSA id af79cd13be357-91532626961sm37414885a.32.2026.05.28.20.15.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 May 2026 20:15:26 -0700 (PDT) From: Yuho Choi To: SeongJae Park , Andrew Morton Cc: damon@lists.linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Yuho Choi Subject: [PATCH v1] mm/damon/stat: roll back context on damon_call() failure Date: Thu, 28 May 2026 23:15:19 -0400 Message-ID: <20260529031519.1617000-1-dbgh9129@gmail.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" damon_stat_start() allocates and starts damon_stat_context before registering the repeated damon_call() callback. If damon_call() fails, the function currently returns the error while leaving the context allocated and stored in the global pointer. The retry-time cleanup added for this path only runs if users try to enable DAMON_STAT again. If no retry happens, the failed start leaves the context allocated indefinitely. Roll back the failed start by stopping the kdamond before destroying the context and clearing the global pointer. damon_stop() waits for a live kdamond via kthread_stop_put(); if the worker has already completed teardown, there is no kdamond left to wait on and the context can be destroyed. Fixes: 405f61996d9d ("mm/damon/stat: use damon_call() repeat mode instead o= f damon_callback") Signed-off-by: Yuho Choi --- mm/damon/stat.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mm/damon/stat.c b/mm/damon/stat.c index 3951b762cbdd..7f222b5b7193 100644 --- a/mm/damon/stat.c +++ b/mm/damon/stat.c @@ -266,7 +266,14 @@ static int damon_stat_start(void) =20 damon_stat_last_refresh_jiffies =3D jiffies; call_control.data =3D damon_stat_context; - return damon_call(damon_stat_context, &call_control); + err =3D damon_call(damon_stat_context, &call_control); + if (err) { + damon_stop(&damon_stat_context, 1); + damon_destroy_ctx(damon_stat_context); + damon_stat_context =3D NULL; + return err; + } + return 0; } =20 static void damon_stat_stop(void) --=20 2.43.0