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 4BBB4C54E41 for ; Wed, 6 Mar 2024 19:31:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BC8236B0075; Wed, 6 Mar 2024 14:31:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id B77FB6B007E; Wed, 6 Mar 2024 14:31:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A670E6B0080; Wed, 6 Mar 2024 14:31:10 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 966D56B0075 for ; Wed, 6 Mar 2024 14:31:10 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 682F2A0459 for ; Wed, 6 Mar 2024 19:31:10 +0000 (UTC) X-FDA: 81867607500.24.54E3E63 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by imf15.hostedemail.com (Postfix) with ESMTP id 6CC98A002D for ; Wed, 6 Mar 2024 19:31:08 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=JpdDGX21; spf=pass (imf15.hostedemail.com: domain of jpoimboe@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=jpoimboe@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709753468; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=H1tFRJPoBfMnmnp2p1XkhFnLQlEgWoWAk31q70MEZG8=; b=zgzijU0wHJHj+8YlFY6RvBYF9g/oMIwrF31HMuG6OdtJ5Z2NB7veyAbh0JIVVqsnE5Nebh zENJ7w3g5Lp4r2m0vRFjNayhT5HtZDOytqUEsCDaEc0warMlw1JJ4kqRfDBTfsZELN4NnG KJTZk34G5LTXGLyKt4L3g/lN6aKBGeA= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=JpdDGX21; spf=pass (imf15.hostedemail.com: domain of jpoimboe@kernel.org designates 145.40.73.55 as permitted sender) smtp.mailfrom=jpoimboe@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709753468; a=rsa-sha256; cv=none; b=7IHerofmMS2YnvrK0qsOli/0X97HxNYKmEBYrnj8EoCyn0tc09RcJx5vPEVrM+MfFxjVGP +Z/CmdqWW3VyGAXQcOkGnAYl01bKdzS3PMP0y/4UT8UHWsKAkAEu1uCNhownxqkFcqT8hz +jymbL1bR2li2OJRlKM/Qu20aY9oR1c= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 115A1CE10C8; Wed, 6 Mar 2024 19:31:04 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DE88FC433C7; Wed, 6 Mar 2024 19:31:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1709753463; bh=dZejzDtOwNBcY1Csz/PwMQsoTNS21ghdsMm5cjM+xQ0=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=JpdDGX21PfDcW40OoRhD8mgrM6fbccviuPt8URrm/zYuiz7cdKa1ikDblf2PuZK7q qz+D++q5QIATixs2NuP7oHxKi9A3ksnffg4Q0FOJAcyGeT94Go4BqURlK7WZyGLkX4 BjH3HeFocLRB7grjDJ0jE6UTZoNT5BSgczHXJ5Q19jDo1KmfQyZ1I6OZ+ve8PmT8IC WUtOo3hebAiJA6SudCa2DPPQbuJwChT3v95aS596Ogl/O9ch9o7c8e+8IwBFCF+aUN iO6GmsHFGcvs/aRgeH8qw0pUU8J/pn3y95tkyJEJEKmC90kyU1ND6F6Tarf5rGJBSx ZzAmZ1H28CB4w== Date: Wed, 6 Mar 2024 11:31:01 -0800 From: Josh Poimboeuf To: Steven Rostedt Cc: Sam Sun , linux-kernel@vger.kernel.org, syzkaller@googlegroups.com, xrivendell7@gmail.com, ardb@kernel.org, jbaron@akamai.com, peterz@infradead.org, linux-mm@kvack.org, akpm@linux-foundation.org, Paolo Bonzini Subject: Re: [Bug] WARNING in static_key_disable_cpuslocked Message-ID: <20240306193101.s2g33o4viqi2azf3@treble> References: <20240306105420.6a6bea2c@gandalf.local.home> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20240306105420.6a6bea2c@gandalf.local.home> X-Rspamd-Queue-Id: 6CC98A002D X-Rspam-User: X-Stat-Signature: 1cmugg6b89j7wr85oe98gckau4ioyxk3 X-Rspamd-Server: rspam01 X-HE-Tag: 1709753468-557137 X-HE-Meta: U2FsdGVkX19usK9+E1+d03R6WR3srrSFpYz09+lyXLy6kI8qOXhX7V6oLY+xf/7CYSNFpU5HorLQ8PpPf1QQJ3anhYrm6dg5S8pP5tsSCEqNq6gcjwMxDvkt6pPUh0P2KLY72lRk/62SS4ECTbvkODAD+JQJxBSFudqg831MC9TwZ5aiTx+0FCxlS+wKLWkebDRcEysjwHbInstqMSrpg4k4XEk3owl41Jffi0wo3B44eHVfZGxWak/154PyLLxtK1ZdB02gRbsvW/BDgel7kf30dxJ7gizzRt4WstkQW6WXh6oqp0+9y90Jb6LjZ/htCCFm96zXSfuRmjreQz1smUhmEOhpPxY84zuzyj38qOk6hIYQYXiSaZOH51a2BmhlWELZZgQerwNDXqVp07Vahtu+kTGwVE31BD/zDoKgFTFhMG8P3CLGt/zpBKGtExCvp21XRfj+zcXo9wzhzTOvdDW4ZzamGQJwQn01q5dOCA1DquTqT0fb7MeiXozDuKnjg9m6wJvQO4cYnn+JpXcz/wCF/4XxqHMFxEqPB7jfN6KIMUBWU0/IBUGawwScKMJQWJP9aFVJuTDv7267jORXZmYFrxZMToLpdbhON0/rSgcb3ly2mjWmTGqmry/KSJIoWIPYLEkpUaI6Fjdkqrik6FE1KP0Kl7S5XfLnKsf6Yt5fXnx8ym0vuB0TODeY0kN/W/O2ilVPZT5dNqOwKpptiZGHF/u//qb1m3SrO3RvH1k71M+bcJq+28jSidkdVk1GULYslISjN5a4xFd1L9gbP734MMnX//2NculDNn0PYlDxcMQDXOXEoumRbQylCABd/t2cmjzGrkNH9yN6CFWLYPVV6ibPh/JojrS3jzFud/5/2wMfPsZK7UBf0wrvVrsT2g1V4mXw2pdQKjaNra8Ra8o1Xksh3QKFpA1RyBb2R5icNCSnUW4tLQ== 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, Mar 06, 2024 at 10:54:20AM -0500, Steven Rostedt wrote: > Now I guess the question is, why is something trying to disable something > that is not enabled? Is the above scenario OK? Or should the users of > static_key also prevent this? Apparently that's an allowed scenario, as the jump label code seems to be actively trying to support it. Basically the last one "wins". See for example: 1dbb6704de91 ("jump_label: Fix concurrent static_key_enable/disable()") Also the purpose of the first atomic_read() is to do a quick test before grabbing the jump lock. So instead of grabbing the jump lock earlier, it should actually do the first test atomically: diff --git a/kernel/jump_label.c b/kernel/jump_label.c index d9c822bbffb8..f29c47930d46 100644 --- a/kernel/jump_label.c +++ b/kernel/jump_label.c @@ -191,11 +191,14 @@ EXPORT_SYMBOL_GPL(static_key_slow_inc); void static_key_enable_cpuslocked(struct static_key *key) { + int tmp; + STATIC_KEY_CHECK_USE(key); lockdep_assert_cpus_held(); - if (atomic_read(&key->enabled) > 0) { - WARN_ON_ONCE(atomic_read(&key->enabled) != 1); + tmp = atomic_read(&key->enabled); + if (tmp != 0) { + WARN_ON_ONCE(tmp != 1); return; } @@ -222,11 +225,14 @@ EXPORT_SYMBOL_GPL(static_key_enable); void static_key_disable_cpuslocked(struct static_key *key) { + int tmp; + STATIC_KEY_CHECK_USE(key); lockdep_assert_cpus_held(); - if (atomic_read(&key->enabled) != 1) { - WARN_ON_ONCE(atomic_read(&key->enabled) != 0); + tmp = atomic_read(&key->enabled); + if (tmp != 1) { + WARN_ON_ONCE(tmp != 0); return; }