Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp538408rwd; Wed, 7 Jun 2023 03:42:21 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7pfHgYi7jdZGzFefyyur2jtcaVC8GRY/Wm3nCYBoqZLtT30i1T3lHvrjOmeb81CtBZGEUf X-Received: by 2002:a05:6a21:7883:b0:10f:be0:4dce with SMTP id bf3-20020a056a21788300b0010f0be04dcemr3269732pzc.8.1686134541148; Wed, 07 Jun 2023 03:42:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686134541; cv=none; d=google.com; s=arc-20160816; b=JEgz+T60eqAK6Q9NNO4hCyXK/QqZP1O+M6bJU+4klse4Y8fD/gZLRYAxSMmkfDWCy3 xsoeynP2M3Poz8ZMLpLsEnx/3Fwj424bAJ9jdiP7TG34ebJvuyf1a3QngqaR8M3g4kfT kmE+VXlIiMz/t7ehjXJHspaY6R0mew7bgpQ3Ck2zUffsLOKLQKKbRsrRDyp5/S0TnoVx axgjCSNn/02sMY+tZcCqs+ubqh1wiMAHPs/WKUE0YsGzv3bn9EWdFW8ZRGFLZRvJE0SX zDACqRDdEnZg/zA8wTZEUOLpbCI4Zk1UlI8dMdHH3YspcYNaiwH9uMFepS9n0konxDTT Th5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=fOZOPJHH1mGBvMOas1Sh59BC7G/zSaCCWkXg3T2RxCo=; b=Y+w6pe737z+1tH7nfqAABo1Dqszv21VItnt/l5iUjcO9YcvUK506/W7YO4bQHifJQv NjvPTEXS7VuVIUaM42/MNVQ2ldJ/ZKg+5pE0HRyJyFDMxG+DQf6wc7IAKaA5aAqbZEEO sHcegStmkcEpJuHe4OHb0yNvHJInCuTkYr2NK1UGMPn8qGyoNy6NspRftgdD1abZQseK QV0KkgdTZuzB5ilFjpynk5Hf6Q1AU/C0De8X9n8wHCrzFSv0qo+BmmV3fG6+rpkZLXwM tW1cH4OiaXIW07GoX++3fQyJcf6LL5fEpseJ5knXGEJjXuBbRu9rsj5aNxAocU6aUCO7 lUKg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s28-20020a63925c000000b005428de93a2asi8925115pgn.142.2023.06.07.03.42.06; Wed, 07 Jun 2023 03:42:21 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239629AbjFGKTX (ORCPT + 99 others); Wed, 7 Jun 2023 06:19:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44162 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239569AbjFGKTO (ORCPT ); Wed, 7 Jun 2023 06:19:14 -0400 Received: from www262.sakura.ne.jp (www262.sakura.ne.jp [202.181.97.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 29C2F1FC2 for ; Wed, 7 Jun 2023 03:19:06 -0700 (PDT) Received: from fsav414.sakura.ne.jp (fsav414.sakura.ne.jp [133.242.250.113]) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTP id 357AJ45u053811; Wed, 7 Jun 2023 19:19:04 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) Received: from www262.sakura.ne.jp (202.181.97.72) by fsav414.sakura.ne.jp (F-Secure/fsigk_smtp/550/fsav414.sakura.ne.jp); Wed, 07 Jun 2023 19:19:04 +0900 (JST) X-Virus-Status: clean(F-Secure/fsigk_smtp/550/fsav414.sakura.ne.jp) Received: from [192.168.1.6] (M106072142033.v4.enabler.ne.jp [106.72.142.33]) (authenticated bits=0) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTPSA id 357AJ49C053807 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NO); Wed, 7 Jun 2023 19:19:04 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) Message-ID: <492fe2ae-5141-d548-ebd5-62f5fe2e57f7@I-love.SAKURA.ne.jp> Date: Wed, 7 Jun 2023 19:19:02 +0900 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.11.2 Subject: [PATCH v2] debugobjects: recheck debug_objects_enabled before reporting Content-Language: en-US To: Thomas Gleixner , syzbot , syzkaller-bugs@googlegroups.com Cc: linux-kernel@vger.kernel.org, Stephen Boyd , Andrew Morton , Peter Zijlstra , wuchi References: <0000000000003a2f8505fcd5f06b@google.com> <1af29817-4698-c5ac-cf63-0dad289e740f@I-love.SAKURA.ne.jp> <871qiokyma.ffs@tglx> From: Tetsuo Handa In-Reply-To: <871qiokyma.ffs@tglx> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_NONE,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org syzbot is reporting false positive ODEBUG message immediately after ODEBUG was disabled due to OOM. We should recheck debug_objects_enabled before reporting. [ 1062.309646][T22911] ODEBUG: Out of memory. ODEBUG disabled [ 1062.886755][ T5171] ------------[ cut here ]------------ [ 1062.892770][ T5171] ODEBUG: assert_init not available (active state 0) object: ffffc900056afb20 object type: timer_list hint: process_timeout+0x0/0x40 CPU 0 [ T5171] CPU 1 [T22911] -------------- -------------- debug_object_assert_init() { if (!debug_objects_enabled) return; db = get_bucket((unsigned long) addr); // Finds a bucket, but... lookup_object_or_alloc() { debug_objects_enabled = 0; return NULL; } debug_objects_oom() { pr_warn("Out of memory. ODEBUG disabled\n"); // all buckets get emptied here, and } lookup_object_or_alloc(addr, db, descr, false, true) { // this bucket is already empty. return ERR_PTR(-ENOENT); } // Emits false positive warning. debug_print_object(&o, "assert_init"); } Reported-by: syzbot Closes: https://syzkaller.appspot.com/bug?extid=7937ba6a50bdd00fffdf Suggested-by: Thomas Gleixner Signed-off-by: Tetsuo Handa --- Changes in v2: No need to turn off debug_objects_enabled from debug_objects_oom(). lib/debugobjects.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/debugobjects.c b/lib/debugobjects.c index 984985c39c9b..ab3bbcb78471 100644 --- a/lib/debugobjects.c +++ b/lib/debugobjects.c @@ -498,6 +498,15 @@ static void debug_print_object(struct debug_obj *obj, char *msg) const struct debug_obj_descr *descr = obj->descr; static int limit; + /* + * Don't report if lookup_object_or_alloc() by the current thread + * failed because lookup_object_or_alloc()/debug_objects_oom() by + * concurrent thread turned off debug_objects_enabled and cleared + * the hash buckets. + */ + if (!debug_objects_enabled) + return; + if (limit < 5 && descr != descr_test) { void *hint = descr->debug_hint ? descr->debug_hint(obj->object) : NULL; -- 2.18.4