From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 72FA93BBA04 for ; Thu, 30 Jul 2026 20:48:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785444495; cv=none; b=nkpwJfcMuAG6pIVBbSwIzFOv+gVQ7rRG9O7ZhIKpUU9UyO+o/zURcOVIzWVbj83BMP1H8ve0IWzC/Tf5she4KCGreorIaU9Ef1w9z1zd05hSIX83wIJBfYnWnZd+qh6lq6zcEL2BpsiOGlG3IG37XPrh0mIgeRGf2YA3iQE+i7I= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785444495; c=relaxed/simple; bh=SZUBalN3fJqY2DHoeYGQNW6Ni/i7A61VoThyuTT7XVQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Im/giAEEejrP6+5ddCDxiPSBNFsJzBEbrDdPmfn7rISZz+k8YBxCs7R3/OVLlUUYgizwFntMuMoqk4CvbDGFYj3QdybgYdGo9DgMvj2x4b91vCFt+Nux/r8uWHPNnTlU9OoU5lCsDGgiTD7LyxuSOhb+9l9nOakY0Z8l4ItOQ14= 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=BKK3JBdH; arc=none smtp.client-ip=209.85.128.45 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="BKK3JBdH" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-49557167508so1679525e9.1 for ; Thu, 30 Jul 2026 13:48:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785444493; x=1786049293; 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:content-type; bh=M5BxE/t23ijz33IZ7iaZiV0IxU7JLoT1VOJQBQHoWO0=; b=BKK3JBdHKFx8cWHRUDi9kYUeiMSh0qMezDTgSVYSxCRiPAaarfqmJLc1hU8EOa9v6s v5DxtfvAcvuU52ACkqVC9jrIVWQ/yBExSQqEFSzKQ7g+wL78c13Lc9A3C6AhaaxPe9G2 nNjVD3l5P1ybc6LO2I4X7zpBd7TJGDH6wvd3tO5RwzpnDGjYoPQWFNdME25zOwj1Xs1B cmP6Q7IBxpMcUdP4Xe5ZZ6td0wl19DCAPusFIbQyVFFIXSCT7kZOZB3wZy4H1lRJ8Ju9 MyTMi5SN/1n/QZddxargDcjf1FnsmYFxx5mdM5532FVDL5caKQWMIYdAbsvS9oIwKdiD V/Vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785444493; x=1786049293; 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:content-type; bh=M5BxE/t23ijz33IZ7iaZiV0IxU7JLoT1VOJQBQHoWO0=; b=CjhgEh2p+a268sg+LpuMrMOsQzETI58G/bvJPG5il50aprZcvJ/bpjTEpda7/WqQ3a jkrhP8fjgXSF2qJ9gE5Ld1b/L5Q+EYvVvY+9g9uy/opW6zbbJtL1V6yvh2J4zi7QFrPj sq4LvdaK9W3WzWIVDsXtAR599/ZMRpvokdk6cM90PXinlnGmEGhyxO1YyvCxy1sVEwg3 ypzz6kNiV3njgIizI+mggf4Ucfm7ePecbpLMU549Gbk0esvYCSDcpELOeu+sdA/7XMSJ lwcUKf74JXtgZrU27wm0eOdwUEoATxnZQ29HIiEL/Op5qRvEI6fRrkqj6dmAs/94ZQKt LRKQ== X-Forwarded-Encrypted: i=1; AHgh+Rp7w0Ota0B8OOdRMba6RDwhOiNRPb3KWlVuLdtyJG1w2R25GenORSh2DWw+cSaXMZKchQrBNnqm4H5hhAs=@vger.kernel.org X-Gm-Message-State: AOJu0YzK6SMBAOh1sZbXLz9lwniwwlLLAvDMNLAV20OZ8W54bzard0iI Kk9HoUSGBLKhD9nCDcsbB21mC+nOiXoupxaT99+MIP+gsRHE3uNd9DM= X-Gm-Gg: AR+sD12ENnNYnD3Hws1xzJPey3rjxD9cSwiXMuCyHfsxD46OfFq/YwHw9Hggv3rj7dF wttWPZg+TNhsvVHreHRB3sv1/afYfThzSbPLIMYXWo0/TmO7R/GVCRoPkdqkQT/KfamIb7NwFxe ab9KjyQq9rxy8K8nQoDo4y7GeQh1PdKbk47LZTlzMZotMAIaGwQscrqbj+tjbHnOxBBcztmFnqr 6P523kadmY2KN+kwamf9ohoCMiHS70yvVW4IqH9ba1GPWPm3Nx3OZ2hRCvVHOvRDZjtNj4okbgE thZbsl3BqJIQ5tRjOWX/x/oVotGemc5Jhlh+FkC4nkGcG5gv+Ns5lMAwKnb+GPFbQAwc71oUwWR 9kKT63C5MvSVF6bkvkV9A20DRnqg7W2Bg2ZhuSIrh34uIBFQjuJFGu3K9eiy7bjbeesDWuyOwf6 Z8ulNauwjtvWdnaTiEQ1ZtOW11FalcJYgeDijBVHfzos7bSUulA8O3rRXIsafWIY1PDfHf7U2ak 3qaq1J7PK6fX65KGXokMxqUowHO5t469clwtj8xcZ6FUW1Br1Cj8zv28FPuAqlkejSpaa/Wt6kK tXQ8LZnyk8nzZpw= X-Received: by 2002:a05:600c:19cc:b0:495:4e1d:82df with SMTP id 5b1f17b1804b1-49800e93cbfmr57370965e9.10.1785444492686; Thu, 30 Jul 2026 13:48:12 -0700 (PDT) Received: from archtop.localdomain (92-242-248-69.broadband.mtnet.hr. [92.242.248.69]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-498010aaceasm85398185e9.12.2026.07.30.13.48.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jul 2026 13:48:12 -0700 (PDT) From: Jakov Novak To: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-kernel-mentees@lists.linux.dev, Andrew Morton , David Hildenbrand , Lorenzo Stoakes Cc: Zi Yan , Baolin Wang , "\\ Liam R . Howlett \\ " , Nico Pache , Ryan Roberts , Dev Jain , Barry Song , Lance Yang , Usama Arif , Shuah Khan , Jakov Novak Subject: [PATCH v3] mm/khugepaged: replace mutex_lock/mutex_unlock usage with guard macro Date: Thu, 30 Jul 2026 22:47:24 +0200 Message-ID: <20260730204724.16912-1-jakovnovak30@gmail.com> X-Mailer: git-send-email 2.55.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Currently, khugepaged locks the khugepaged_mutex in two functions: start_stop_khugepaged and khugepaged_min_free_kbytes_update. Remove mutex_lock/mutex_unlock usage in these functions and replace it with the guard macro. This makes the code more readable (removing a goto statement) and makes it harder to introduce bugs in the future. No functional changes introduced. Signed-off-by: Jakov Novak Reviewed-by: Dev Jain Reviewed-by: Lorenzo Stoakes (ARM) Reviewed-by: Andrew Morton Reviewed-by: Zi Yan --- v2: - Added #include to the includes at the top of the file - Moved err declaration to the scope where it's used in start_stop_khugepaged - Made default case return 0 instead of err in start_stop_khugepaged v3: - Moved new thread creation logic inside if (!khugepaged_thread) block in start_stop_khugepaged - Removed suboptimal err variable mm/khugepaged.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 617bca76db49..97f61a050f7c 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include "internal.h" @@ -3111,18 +3112,19 @@ void set_recommended_min_free_kbytes(void) int start_stop_khugepaged(void) { - int err = 0; - - mutex_lock(&khugepaged_mutex); + guard(mutex)(&khugepaged_mutex); if (hugepage_enabled()) { - if (!khugepaged_thread) - khugepaged_thread = kthread_run(khugepaged, NULL, - "khugepaged"); - if (IS_ERR(khugepaged_thread)) { - pr_err("khugepaged: kthread_run(khugepaged) failed\n"); - err = PTR_ERR(khugepaged_thread); - khugepaged_thread = NULL; - goto fail; + if (!khugepaged_thread) { + struct task_struct *new_thread = kthread_run(khugepaged, + NULL, + "khugepaged"); + + if (IS_ERR(new_thread)) { + pr_err("khugepaged: kthread_run(khugepaged) failed\n"); + return PTR_ERR(new_thread); + } + + khugepaged_thread = new_thread; } if (!list_empty(&khugepaged_scan.mm_head)) @@ -3132,17 +3134,14 @@ int start_stop_khugepaged(void) khugepaged_thread = NULL; } set_recommended_min_free_kbytes(); -fail: - mutex_unlock(&khugepaged_mutex); - return err; + return 0; } void khugepaged_min_free_kbytes_update(void) { - mutex_lock(&khugepaged_mutex); + guard(mutex)(&khugepaged_mutex); if (hugepage_enabled() && khugepaged_thread) set_recommended_min_free_kbytes(); - mutex_unlock(&khugepaged_mutex); } bool current_is_khugepaged(void) -- 2.55.0