From mboxrd@z Thu Jan 1 00:00:00 1970 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 89764C5475B for ; Thu, 7 Mar 2024 02:33:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0CF196B00E0; Wed, 6 Mar 2024 21:33:07 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 07F9C6B00E1; Wed, 6 Mar 2024 21:33:07 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id EB0606B00E2; Wed, 6 Mar 2024 21:33:06 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id DCA196B00E0 for ; Wed, 6 Mar 2024 21:33:06 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 94AC4A168F for ; Thu, 7 Mar 2024 02:33:06 +0000 (UTC) X-FDA: 81868670772.07.CAA1CDA Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf22.hostedemail.com (Postfix) with ESMTP id 03630C0004 for ; Thu, 7 Mar 2024 02:33:04 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf22.hostedemail.com: domain of "SRS0=wXVh=KN=goodmis.org=rostedt@kernel.org" designates 139.178.84.217 as permitted sender) smtp.mailfrom="SRS0=wXVh=KN=goodmis.org=rostedt@kernel.org" ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709778785; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=kSKw/3fxy77Y6f8urqZ+CYmXE73dKpCAiigBK8PHD98=; b=6BdeHGeUj17+RvHSGvUDuEFrcodpYNsxKLa34fFJZ+ye4yh7PgBVosDjYi8s7rRjb3AuNY sSr0JFFFzm3/e3MbLl7RZfowlYiTnXYFgh1ynwr7AsFnxP3phPmj8oRVz3mAjWIdiI6L+D ygD8YpzpD0+wa812mUB/XtiitEQj4ss= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=none; dmarc=none; spf=pass (imf22.hostedemail.com: domain of "SRS0=wXVh=KN=goodmis.org=rostedt@kernel.org" designates 139.178.84.217 as permitted sender) smtp.mailfrom="SRS0=wXVh=KN=goodmis.org=rostedt@kernel.org" ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709778785; a=rsa-sha256; cv=none; b=y4AI6lHU9PNdDOmw6M3OhbCtfg5irEULUC/KKPjfCbwjoaOknFgyvJBOETrnHIClhLPzuA RVCLPV0QPT5CoBNMbmfvpeUDUaIXrkE/llGX7ZTh1HQRZW+DlgR1w1SjulRWQ+fQQaDTsj jmWRkgBXMS6/aCNG7M0s+lzbd+4LooQ= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id D4DAA61AB8; Thu, 7 Mar 2024 02:33:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4EF49C433F1; Thu, 7 Mar 2024 02:33:02 +0000 (UTC) Date: Wed, 6 Mar 2024 21:34:53 -0500 From: Steven Rostedt To: Josh Poimboeuf Cc: Jason Baron , Sam Sun , linux-kernel@vger.kernel.org, syzkaller@googlegroups.com, xrivendell7@gmail.com, ardb@kernel.org, peterz@infradead.org, linux-mm@kvack.org, akpm@linux-foundation.org, Paolo Bonzini Subject: Re: [Bug] WARNING in static_key_disable_cpuslocked Message-ID: <20240306213453.72f9a925@gandalf.local.home> In-Reply-To: <20240307013009.erbnug2mopx5yrnf@treble> References: <20240306105420.6a6bea2c@gandalf.local.home> <20240306193101.s2g33o4viqi2azf3@treble> <854e523c-c467-47f6-b977-933cbaadeb62@akamai.com> <20240306221650.sw3lha7kca2quv63@treble> <8f586bd2-c436-4334-92af-762a284e1101@akamai.com> <20240306234253.zporv6cypoc7yihs@treble> <20240307013009.erbnug2mopx5yrnf@treble> X-Mailer: Claws Mail 3.19.1 (GTK+ 2.24.33; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Rspam-User: X-Stat-Signature: zbmcehx3awzmbghd6bixo5bemts699ji X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 03630C0004 X-HE-Tag: 1709778784-449759 X-HE-Meta: U2FsdGVkX1/xLXS+SlocjeX7zABEAXKosZ4v4BKCnL4TmBZLyKljENPeYI0iHL4AhjGBDu4skthmNcz9KIqlRcscJWi12M2vS0W6jH9mbSD5T4AHq+iYFbpEF+t3VBZQgSuq03TAPEx0iUi9nQqo0rocayp13CCF4KmL8kscfK581FA8Oh0oBMwoJVQlZVkFeEuAXqSiED18xNRzM9N+PSpgjEZo3OclKBQ9ca0kSiyiL0BfTzfEya3RR//9e2pAdXskpYTE2P8eS8uV7AjlT2HQPQq7uA6/G7Nbo2xlwa5uzjRin2zTIQVeQo4TfNOrQw2NgwiE/A1lUMx2P+DmWSWLbk56zE7TozWncP1qX1eWp6LIFPM6b+38WrebSeayiaym3aL/4bk9ry/XiATp9DM0ZoYwClinIxpStYUl7whQ+R7UVLdO+X3fVCZIQHGKMkQIM8Gb9yQEgM8e8N3ci5dqWptVs6vBZM1oBQGX+u7BsJg/ztAK4zgwHR/sEbgL2V9cGLKGM9RBVv7UQSei/s8NURoKek2wYMWmriaiHmh3w3WeT3DrFgyzvpMBR2Z0zgrSH8XbsCZQ88dK9NozX5/PqL7cJUj1DbFaMe7pJO9A9Iz1v/bBUdk74qiHw1KbRCf7GooscVC4cX/QTpSs7Cza1mlW5p2w2C+5dR6syD7XcfKlL2NIb/I32fdhHIOi2+3ntTgiSNs49aBOq/JvW0R7RPVwYekO+5VMsd+4+dvy2czd9XbmTTExT2TU7JFGDzqku6CPDVhLT773XKSyJ9U7q9nYJphNTF9CdA8EPn6RPBDEcCzgChPm5ADGGB1HHf0h1CCdtI7L5fsrogHK+3DoFvik1pUywO7Gj/tKlFaEw3lD7U98L2zUpTYBHCadb2uYoVorssGs76eytlJDSzDaYX2wJ+A/Fcrdws/RQ48ZGKvu1AA43nDqt0fY1Qswyc8L1CAhO+pI02gQxQ8 FDPluqJj wKwJpJCY72hiJL+XNEMWTJBvdpA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Wed, 6 Mar 2024 17:30:09 -0800 Josh Poimboeuf wrote: > So, I think we can simplify this nicely by getting rid of the whole -1 > thing altogether: > > diff --git a/kernel/jump_label.c b/kernel/jump_label.c > index d9c822bbffb8..ef7eda7685b2 100644 > --- a/kernel/jump_label.c > +++ b/kernel/jump_label.c > @@ -194,20 +194,15 @@ void static_key_enable_cpuslocked(struct static_key *key) > STATIC_KEY_CHECK_USE(key); > lockdep_assert_cpus_held(); > > - if (atomic_read(&key->enabled) > 0) { > - WARN_ON_ONCE(atomic_read(&key->enabled) != 1); > + if (atomic_read(&key->enabled) == 1) > return; > - } > - > jump_label_lock(); > - if (atomic_read(&key->enabled) == 0) { > - atomic_set(&key->enabled, -1); > + > + if (atomic_cmpxchg(&key->enabled, 0, 1) == 0) > jump_label_update(key); > - /* > - * See static_key_slow_inc(). > - */ > - atomic_set_release(&key->enabled, 1); > - } > + else > + WARN_ON_ONCE(atomic_read(&key->enabled) != 1); > + > jump_label_unlock(); You may be able to clean it up more with: int tmp; tmp = atomic_read(&key->enabled); if (tmp == 1) return; jump_label_lock(); if (!tmp && atomic_try_cmpxchg(&key->enabled, &tmp, 1)) jump_label_update(key); else WARN_ON_ONCE(tmp != 1); jump_label_unlock(); ;-) -- Steve > } > EXPORT_SYMBOL_GPL(static_key_enable_cpuslocked); > @@ -225,14 +220,16 @@ void static_key_disable_cpuslocked(struct static_key *key) > STATIC_KEY_CHECK_USE(key); > lockdep_assert_cpus_held(); > > - if (atomic_read(&key->enabled) != 1) { > - WARN_ON_ONCE(atomic_read(&key->enabled) != 0); > + if (atomic_read(&key->enabled) == 0) > return; > - } > > jump_label_lock(); > - if (atomic_cmpxchg(&key->enabled, 1, 0)) > + > + if (atomic_cmpxchg(&key->enabled, 1, 0) == 1) > jump_label_update(key); > + else > + WARN_ON_ONCE(atomic_read(&key->enabled) != 0); > + > jump_label_unlock(); > } > EXPORT_SYMBOL_GPL(static_key_disable_cpuslocked);