From nobody Thu Jan 30 10:32:58 2025 X-Original-To: current@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4YkFjL1HG5z5ltG4 for ; Thu, 30 Jan 2025 10:33:10 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from kib.kiev.ua (kib.kiev.ua [IPv6:2001:470:d5e7:1::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4YkFjK4xJ2z3ZZt for ; Thu, 30 Jan 2025 10:33:09 +0000 (UTC) (envelope-from kostikbel@gmail.com) Authentication-Results: mx1.freebsd.org; none Received: from tom.home (kib@localhost [127.0.0.1] (may be forged)) by kib.kiev.ua (8.18.1/8.18.1) with ESMTP id 50UAWxc8006741; Thu, 30 Jan 2025 12:33:02 +0200 (EET) (envelope-from kostikbel@gmail.com) DKIM-Filter: OpenDKIM Filter v2.10.3 kib.kiev.ua 50UAWxc8006741 Received: (from kostik@localhost) by tom.home (8.18.1/8.18.1/Submit) id 50UAWwY5006734; Thu, 30 Jan 2025 12:32:58 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: tom.home: kostik set sender to kostikbel@gmail.com using -f Date: Thu, 30 Jan 2025 12:32:58 +0200 From: Konstantin Belousov To: "Bjoern A. Zeeb" Cc: current@freebsd.org Subject: Re: ddb reset command results in LOR and panic? (audit related?) Message-ID: References: List-Id: Discussions about the use of FreeBSD-current List-Archive: https://lists.freebsd.org/archives/freebsd-current List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-current@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_00, DKIM_ADSP_CUSTOM_MED,FORGED_GMAIL_RCVD,FREEMAIL_FROM, NML_ADSP_CUSTOM_MED autolearn=no autolearn_force=no version=4.0.1 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on tom.home X-Rspamd-Queue-Id: 4YkFjK4xJ2z3ZZt X-Spamd-Bar: ---- X-Rspamd-Pre-Result: action=no action; module=replies; Message is reply to one we originated X-Spamd-Result: default: False [-4.00 / 15.00]; REPLY(-4.00)[]; ASN(0.00)[asn:6939, ipnet:2001:470::/32, country:US] On Thu, Jan 30, 2025 at 02:37:53AM +0000, Bjoern A. Zeeb wrote: > Hi. > > I broke into the kernel debugger after some driver went haywire. > > Upon typing reset to restart the machine I got the below. > How can we still report a LOR and panic on a lock when we > are resetting the machine from ddb? > > /bz > > db> reset > lock order reversal: (sleepable after non-sleepable) > 1st 0xfffff800031dfb40 thread (thread, sleep mutex) @ /sys/kern/subr_taskqueue.c:519 > 2nd 0xffffffff81cdecd0 audit_worker_lock (audit_worker_lock, sx) @ /sys/security/audit/audit_worker.c:512 > panic: lock (sx) kernel linker not locked @ /sys/kern/kern_linker.c:1130 > cpuid = 3 > time = 1738203974 > KDB: stack backtrace: > db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe0068c67180 > vpanic() at vpanic+0x136/frame 0xfffffe0068c672b0 > panic() at panic+0x43/frame 0xfffffe0068c67310 > witness_unlock() at witness_unlock+0x154/frame 0xfffffe0068c67340 > _sx_sunlock_int() at _sx_sunlock_int+0x4a/frame 0xfffffe0068c67370 > linker_search_symbol_name_flags() at linker_search_symbol_name_flags+0x90/frame 0xfffffe0068c673a0 > stack_sbuf_print_flags() at stack_sbuf_print_flags+0x8e/frame 0xfffffe0068c67430 > witness_checkorder() at witness_checkorder+0xbf6/frame 0xfffffe0068c675f0 > _sx_xlock() at _sx_xlock+0x60/frame 0xfffffe0068c67630 > audit_rotate_vnode() at audit_rotate_vnode+0xd0/frame 0xfffffe0068c67740 > kern_reboot() at kern_reboot+0x2a3/frame 0xfffffe0068c67780 > db_reset() at db_reset+0x108/frame 0xfffffe0068c677b0 This happens IMO due to audit shutdown hook which tried to do VFS ops during panic, then it went south. Perhaps something like this would fix your immediate issue. diff --git a/sys/security/audit/audit.c b/sys/security/audit/audit.c index 269e62db454a..8a9865bf233b 100644 --- a/sys/security/audit/audit.c +++ b/sys/security/audit/audit.c @@ -396,7 +396,8 @@ SYSINIT(audit_init, SI_SUB_AUDIT, SI_ORDER_FIRST, audit_init, NULL); void audit_shutdown(void *arg, int howto) { - + if (KERNEL_PANICED()) + return; audit_rotate_vnode(NULL, NULL); } (not even compiled).