Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp6183566rwb; Tue, 22 Nov 2022 09:47:04 -0800 (PST) X-Google-Smtp-Source: AA0mqf6hG3nXaXg1i9tOjnhpDEd3cnbNkn80q+UQ8U2OexY2aLcAGeNwrrtj6CIvcCgHFphVoUbO X-Received: by 2002:a05:6a00:1d0b:b0:574:24cc:8aa7 with SMTP id a11-20020a056a001d0b00b0057424cc8aa7mr2359829pfx.45.1669139224679; Tue, 22 Nov 2022 09:47:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669139224; cv=none; d=google.com; s=arc-20160816; b=YWsItnAjYAgsBe+9xsgBTxJbNiNNfQ5qDXvqfV6oMimutxEgtTnCfKD/YQqVMpEBSI FPPSL06V2b5C81GPGSyA58FIOf3oj4IsOCfixBmOSZbLD0f31rNMnVD3z/Ro4iG+NkFx UcMzD1zLJ9wxRq9Ik9D2u/p8zSJEnJZd9gbwXKE107IHU2oTGp9j5cqrBKdz+mR9Lq1i hdWdIHt6GXLOuy2hiToQJuoeFbRMg/70CEisWmk7UcHF/kTayXuC8ETZLtsLtVhRIBgT 8Nm6eh7UiZgi7YR0KpkqLsyDE3YP2Z1nTh3H86TkSs9UiHNtTY/u8UvI0C+qr8WXq2+t xa9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:mime-version:references:subject:cc:to:from :dkim-signature:dkim-signature:message-id; bh=idu06WOJve3djJAPc7BtVv8nMt9NfLYdyVD3CA4QRcI=; b=UYv6GeuCq7a32aWEKVffnH43Wo4YM9TXildLmu8pYVMCKwcIotEJvzvsd2pjTlCyIX L3OHTfHCuUgGxg751cC0+cH4m6htCYmqCx1hcw9aFSFrCkE9Fpk5JLLAc0pdVadTki5G Ii6YVODY1Nm+oSo3WNiPV9qP740kBvkPQ+03Y72essjhdwhBdLycU4Ff1CEYe3TKYuCX gUQsakgJnUcshvnbbOQ1IQqRB/PCPACIyS4nXxkp+pKzHVL6r6MhujuTvAiMO5yCeXhF 25AA41OwNQb3qZIAeRjW9bYUc6AFVqB/TxDgnh56QpYnt0f1gvaby4HqwkMyc7NC/gFA Pb6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=ZYvUvpFj; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q93-20020a17090a1b6600b0020d4f9a4b4dsi12346319pjq.49.2022.11.22.09.46.51; Tue, 22 Nov 2022 09:47:04 -0800 (PST) Received-SPF: pass (google.com: domain of linux-bluetooth-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; dkim=pass header.i=@linutronix.de header.s=2020 header.b=ZYvUvpFj; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-bluetooth-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-bluetooth-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234418AbiKVRp3 (ORCPT + 99 others); Tue, 22 Nov 2022 12:45:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59262 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233498AbiKVRpS (ORCPT ); Tue, 22 Nov 2022 12:45:18 -0500 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D382B65F0; Tue, 22 Nov 2022 09:44:55 -0800 (PST) Message-ID: <20221122173648.442211558@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1669139094; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=idu06WOJve3djJAPc7BtVv8nMt9NfLYdyVD3CA4QRcI=; b=ZYvUvpFjYwMgT90NqNqJBAbZfVeA9cpTH1StBL/7CEhaN1Eq0Dd2LV2hvVdA6iYh+VHsI8 cpetnVScKynrAMAhftuD15H4UgmFS2eeZsYfUBJkiQy59KnMQmBDDla7WfWPkkqjz3+REB ynTYR1170fjBoPjitNb3xtKOD6uqeQcXWuKV2Cbb/3ekBYOQH9tEBfbF8H48YGtHWrP9ZS aTw+sTG3Xd4vEM8RtxB+VpLpwlIpeu3xCPoRIuidkXwpPqtJ5oCsZK9I5wtY/He7YMMDrY ldAn5GL9cQtjsXDUINMmI9pQWCTsQ+xJv1Bz94gSOeN+XYT9eDeu+XQsTOrXKg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1669139094; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=idu06WOJve3djJAPc7BtVv8nMt9NfLYdyVD3CA4QRcI=; b=Uqc/eiX6vOdogzxNUrmROEQVX+aY9FcykUIR2w245p5xg67epAVFF2IuQAObckDw+Tdtch s+j0sOk47YO1grDA== From: Thomas Gleixner To: LKML Cc: Linus Torvalds , Steven Rostedt , Anna-Maria Behnsen , Peter Zijlstra , Stephen Boyd , Guenter Roeck , Andrew Morton , Julia Lawall , Arnd Bergmann , Viresh Kumar , Marc Zyngier , Marcel Holtmann , Johan Hedberg , Luiz Augusto von Dentz , linux-bluetooth@vger.kernel.org, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org Subject: [patch V2 06/17] timers: Replace BUG_ON()s References: <20221122171312.191765396@linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Date: Tue, 22 Nov 2022 18:44:53 +0100 (CET) X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS 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-bluetooth@vger.kernel.org The timer code still has a few BUG_ON()s left which are crashing the kernel in situations where it still can recover or simply refuse to take an action. Remove the one in the hotplug callback which checks for the CPU being offline. If that happens then the whole hotplug machinery will explode in colourful ways. Replace the rest with WARN_ON_ONCE() and conditional returns where appropriate. Signed-off-by: Thomas Gleixner Tested-by: Guenter Roeck --- kernel/time/timer.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) --- a/kernel/time/timer.c +++ b/kernel/time/timer.c @@ -1193,7 +1193,8 @@ EXPORT_SYMBOL(timer_reduce); */ void add_timer(struct timer_list *timer) { - BUG_ON(timer_pending(timer)); + if (WARN_ON_ONCE(timer_pending(timer))) + return; __mod_timer(timer, timer->expires, MOD_TIMER_NOTPENDING); } EXPORT_SYMBOL(add_timer); @@ -1210,7 +1211,8 @@ void add_timer_on(struct timer_list *tim struct timer_base *new_base, *base; unsigned long flags; - BUG_ON(timer_pending(timer) || !timer->function); + if (WARN_ON_ONCE(timer_pending(timer) || !timer->function)) + return; new_base = get_timer_cpu_base(timer->flags, cpu); @@ -2017,8 +2019,6 @@ int timers_dead_cpu(unsigned int cpu) struct timer_base *new_base; int b, i; - BUG_ON(cpu_online(cpu)); - for (b = 0; b < NR_BASES; b++) { old_base = per_cpu_ptr(&timer_bases[b], cpu); new_base = get_cpu_ptr(&timer_bases[b]); @@ -2035,7 +2035,8 @@ int timers_dead_cpu(unsigned int cpu) */ forward_timer_base(new_base); - BUG_ON(old_base->running_timer); + WARN_ON_ONCE(old_base->running_timer); + old_base->running_timer = NULL; for (i = 0; i < WHEEL_SIZE; i++) migrate_timer_list(new_base, old_base->vectors + i);