From nobody Tue Apr 29 18:30:45 2025 X-Original-To: dev-commits-src-all@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 4Zn85L4blbz5vMt2; Tue, 29 Apr 2025 18:30:46 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (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-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Zn85K3nKCz4HW6; Tue, 29 Apr 2025 18:30:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1745951445; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=p6HhnwEXlrlet9ckgmPJ1sU41vBGoLtKZfkXchXqCJ0=; b=Hf/6I5uz8pm3Tc/ssI41ZC+2EcN9VwDSpFZIZ63FZKJNyuM1744bYs+y6OSI4VOxKa9nfy qeXjbfCPphWCdFLCC1LOSTgktEfqFSIQ+HiGPHFPdnXVY6OzNYCYTcZlW47l7zjvQOOBd4 E7CphfJxIGUyDABoQ0CXTLPQ8ljNTqQ6ahlMIyvVuLr1Sye0w3KXP2AZMP4dMSxfZcH+tV sTdDoPNarCXWOC97xitB4oBSODuhDs+74a5go2r/Oqp8UR8TyCqbBeu330AquP7kPX+6+G iXv0W71h6fa7Cw9TS30nPQZKMVHr+EX1ZURjMtqVx0U06HHYmLBBRF9Ro673lg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1745951445; a=rsa-sha256; cv=none; b=jkm4vBpEPuuCZRE7Gfl++CrFEuZlm41s7bx/QDknWTTyuSL40mQhs/+1Zp2qDEsQqrbj5z KLVui5QnciCo/n0wYDnfIiwoaiStxJepTdphO6R8c2S59tZzoWXWneZxzkpz6z8/lus4Zl 6MUP/bTWPdVJ2rcmcrqYfMHd6X3lCbjUucWNZcFHcAgffDIFBwWTFmSpPM0ODwmGP7rmht XOq8d2NHFHxjN8jEKxWJXhxsHp8kES9lBP4nYaPqZ3brbdjyRXAK8nNYHfi9ybnjLGmwII 4zigHIzbERxvMYPdMiioAiPsdiIcGmUV5dHCdEs3SLGyqE/P7trQ0McMxQIIXw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1745951445; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=p6HhnwEXlrlet9ckgmPJ1sU41vBGoLtKZfkXchXqCJ0=; b=ywX3StU8BnRj2o205DVWV1xm84w9k6kOGD0xsb2oUn3qtj20nb9K4xwNXZC/pIeAFy3WW/ arJ3uJZ2Jy+AqSyWaUPIEhdCNXuj8MhjEMmxNwuyz3FvCB5XuZk/Aa6AJVutzqYAgxmctW xj82qw5Bxr/QK5qzHuR6iYnIDsTse2pVbWSVa7tZd1VQoR2hsltmMpc+mfxzttbSgAOc6c 0I6W6TXvX57SoKopo+MD2aRTdibWCUsXfjEvT2jUEyxNVlqW5ZteHwIrsQEcScc8FeNvo8 B9q/YGLddTiU1LEx15RTEqbYjtNulbjgyAgu+jdCkx4EzYXPCob02LIXQgk1Ow== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Zn85K3Ng4zXb6; Tue, 29 Apr 2025 18:30:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 53TIUjNo022804; Tue, 29 Apr 2025 18:30:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 53TIUjMg022801; Tue, 29 Apr 2025 18:30:45 GMT (envelope-from git) Date: Tue, 29 Apr 2025 18:30:45 GMT Message-Id: <202504291830.53TIUjMg022801@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: 33bf58fbd8e5 - stable/14 - lockmgr/rmlock/rwlock/sx: Make various assertions more robust List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 33bf58fbd8e53c0313f7e8ada014a53527011c4f Auto-Submitted: auto-generated The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=33bf58fbd8e53c0313f7e8ada014a53527011c4f commit 33bf58fbd8e53c0313f7e8ada014a53527011c4f Author: John Baldwin AuthorDate: 2025-03-13 16:54:16 +0000 Commit: John Baldwin CommitDate: 2025-04-29 14:44:01 +0000 lockmgr/rmlock/rwlock/sx: Make various assertions more robust Print pointers to locks instead of their names to avoid a nested panic if the lock object is corrupted. Reviewed by: markj Sponsored by: AFRL, DARPA Differential Revision: https://reviews.freebsd.org/D49331 (cherry picked from commit a52a51a2d5900e475c3dc6203e09a376316ce90f) --- sys/kern/kern_lock.c | 4 ++-- sys/kern/kern_rmlock.c | 12 ++++++------ sys/kern/kern_rwlock.c | 24 ++++++++++++------------ sys/kern/kern_sx.c | 20 ++++++++++---------- 4 files changed, 30 insertions(+), 30 deletions(-) diff --git a/sys/kern/kern_lock.c b/sys/kern/kern_lock.c index 90b15e393f72..1dddbbacdc5d 100644 --- a/sys/kern/kern_lock.c +++ b/sys/kern/kern_lock.c @@ -1343,8 +1343,8 @@ __lockmgr_args(struct lock *lk, u_int flags, struct lock_object *ilk, ("%s: LK_INTERLOCK passed without valid interlock @ %s:%d", __func__, file, line)); KASSERT(kdb_active != 0 || !TD_IS_IDLETHREAD(curthread), - ("%s: idle thread %p on lockmgr %s @ %s:%d", __func__, curthread, - lk->lock_object.lo_name, file, line)); + ("%s: idle thread %p on lockmgr %p @ %s:%d", __func__, curthread, + lk, file, line)); class = (flags & LK_INTERLOCK) ? LOCK_CLASS(ilk) : NULL; diff --git a/sys/kern/kern_rmlock.c b/sys/kern/kern_rmlock.c index 6c7b78a0586d..bdee79e2cf1a 100644 --- a/sys/kern/kern_rmlock.c +++ b/sys/kern/kern_rmlock.c @@ -598,8 +598,8 @@ _rm_wlock_debug(struct rmlock *rm, const char *file, int line) return; KASSERT(kdb_active != 0 || !TD_IS_IDLETHREAD(curthread), - ("rm_wlock() by idle thread %p on rmlock %s @ %s:%d", - curthread, rm->lock_object.lo_name, file, line)); + ("rm_wlock() by idle thread %p on rmlock %p @ %s:%d", + curthread, rm, file, line)); KASSERT(!rm_destroyed(rm), ("rm_wlock() of destroyed rmlock @ %s:%d", file, line)); _rm_assert(rm, RA_UNLOCKED, file, line); @@ -643,14 +643,14 @@ _rm_rlock_debug(struct rmlock *rm, struct rm_priotracker *tracker, critical_enter(); KASSERT(rm_trackers_present(get_pcpu(), rm, curthread) == 0, - ("rm_rlock: recursed on non-recursive rmlock %s @ %s:%d\n", - rm->lock_object.lo_name, file, line)); + ("rm_rlock: recursed on non-recursive rmlock %p @ %s:%d\n", + rm, file, line)); critical_exit(); } #endif KASSERT(kdb_active != 0 || !TD_IS_IDLETHREAD(curthread), - ("rm_rlock() by idle thread %p on rmlock %s @ %s:%d", - curthread, rm->lock_object.lo_name, file, line)); + ("rm_rlock() by idle thread %p on rmlock %p @ %s:%d", + curthread, rm, file, line)); KASSERT(!rm_destroyed(rm), ("rm_rlock() of destroyed rmlock @ %s:%d", file, line)); if (!trylock) { diff --git a/sys/kern/kern_rwlock.c b/sys/kern/kern_rwlock.c index 5705de0f311f..d6fab5ba35bb 100644 --- a/sys/kern/kern_rwlock.c +++ b/sys/kern/kern_rwlock.c @@ -278,8 +278,8 @@ _rw_wlock_cookie(volatile uintptr_t *c, const char *file, int line) KASSERT(kdb_active != 0 || SCHEDULER_STOPPED() || !TD_IS_IDLETHREAD(curthread), - ("rw_wlock() by idle thread %p on rwlock %s @ %s:%d", - curthread, rw->lock_object.lo_name, file, line)); + ("rw_wlock() by idle thread %p on rwlock %p @ %s:%d", + curthread, rw, file, line)); KASSERT(rw->rw_lock != RW_DESTROYED, ("rw_wlock() of destroyed rwlock @ %s:%d", file, line)); WITNESS_CHECKORDER(&rw->lock_object, LOP_NEWORDER | LOP_EXCLUSIVE, file, @@ -311,8 +311,8 @@ __rw_try_wlock_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) return (1); KASSERT(kdb_active != 0 || !TD_IS_IDLETHREAD(td), - ("rw_try_wlock() by idle thread %p on rwlock %s @ %s:%d", - curthread, rw->lock_object.lo_name, file, line)); + ("rw_try_wlock() by idle thread %p on rwlock %p @ %s:%d", + curthread, rw, file, line)); KASSERT(rw->rw_lock != RW_DESTROYED, ("rw_try_wlock() of destroyed rwlock @ %s:%d", file, line)); @@ -665,13 +665,13 @@ __rw_rlock_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) KASSERT(kdb_active != 0 || SCHEDULER_STOPPED_TD(td) || !TD_IS_IDLETHREAD(td), - ("rw_rlock() by idle thread %p on rwlock %s @ %s:%d", - td, rw->lock_object.lo_name, file, line)); + ("rw_rlock() by idle thread %p on rwlock %p @ %s:%d", + td, rw, file, line)); KASSERT(rw->rw_lock != RW_DESTROYED, ("rw_rlock() of destroyed rwlock @ %s:%d", file, line)); KASSERT(rw_wowner(rw) != td, - ("rw_rlock: wlock already held for %s @ %s:%d", - rw->lock_object.lo_name, file, line)); + ("rw_rlock: wlock already held for %p @ %s:%d", + rw, file, line)); WITNESS_CHECKORDER(&rw->lock_object, LOP_NEWORDER, file, line, NULL); v = RW_READ_VALUE(rw); @@ -705,8 +705,8 @@ __rw_try_rlock_int(struct rwlock *rw LOCK_FILE_LINE_ARG_DEF) return (1); KASSERT(kdb_active != 0 || !TD_IS_IDLETHREAD(curthread), - ("rw_try_rlock() by idle thread %p on rwlock %s @ %s:%d", - curthread, rw->lock_object.lo_name, file, line)); + ("rw_try_rlock() by idle thread %p on rwlock %p @ %s:%d", + curthread, rw, file, line)); x = rw->rw_lock; for (;;) { @@ -951,8 +951,8 @@ __rw_wlock_hard(volatile uintptr_t *c, uintptr_t v LOCK_FILE_LINE_ARG_DEF) if (__predict_false(lv_rw_wowner(v) == (struct thread *)tid)) { KASSERT(rw->lock_object.lo_flags & LO_RECURSABLE, - ("%s: recursing but non-recursive rw %s @ %s:%d\n", - __func__, rw->lock_object.lo_name, file, line)); + ("%s: recursing but non-recursive rw %p @ %s:%d\n", + __func__, rw, file, line)); rw->rw_recurse++; atomic_set_ptr(&rw->rw_lock, RW_LOCK_WRITER_RECURSED); if (LOCK_LOG_TEST(&rw->lock_object, 0)) diff --git a/sys/kern/kern_sx.c b/sys/kern/kern_sx.c index 81e46fceed5e..ecac40217738 100644 --- a/sys/kern/kern_sx.c +++ b/sys/kern/kern_sx.c @@ -279,8 +279,8 @@ sx_try_slock_int(struct sx *sx LOCK_FILE_LINE_ARG_DEF) return (1); KASSERT(kdb_active != 0 || !TD_IS_IDLETHREAD(curthread), - ("sx_try_slock() by idle thread %p on sx %s @ %s:%d", - curthread, sx->lock_object.lo_name, file, line)); + ("sx_try_slock() by idle thread %p on sx %p @ %s:%d", + curthread, sx, file, line)); x = sx->sx_lock; for (;;) { @@ -318,8 +318,8 @@ _sx_xlock(struct sx *sx, int opts, const char *file, int line) KASSERT(kdb_active != 0 || SCHEDULER_STOPPED() || !TD_IS_IDLETHREAD(curthread), - ("sx_xlock() by idle thread %p on sx %s @ %s:%d", - curthread, sx->lock_object.lo_name, file, line)); + ("sx_xlock() by idle thread %p on sx %p @ %s:%d", + curthread, sx, file, line)); KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, ("sx_xlock() of destroyed sx @ %s:%d", file, line)); WITNESS_CHECKORDER(&sx->lock_object, LOP_NEWORDER | LOP_EXCLUSIVE, file, @@ -355,8 +355,8 @@ sx_try_xlock_int(struct sx *sx LOCK_FILE_LINE_ARG_DEF) return (1); KASSERT(kdb_active != 0 || !TD_IS_IDLETHREAD(td), - ("sx_try_xlock() by idle thread %p on sx %s @ %s:%d", - curthread, sx->lock_object.lo_name, file, line)); + ("sx_try_xlock() by idle thread %p on sx %p @ %s:%d", + curthread, sx, file, line)); KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, ("sx_try_xlock() of destroyed sx @ %s:%d", file, line)); @@ -624,8 +624,8 @@ _sx_xlock_hard(struct sx *sx, uintptr_t x, int opts LOCK_FILE_LINE_ARG_DEF) /* If we already hold an exclusive lock, then recurse. */ if (__predict_false(lv_sx_owner(x) == (struct thread *)tid)) { KASSERT((sx->lock_object.lo_flags & LO_RECURSABLE) != 0, - ("_sx_xlock_hard: recursed on non-recursive sx %s @ %s:%d\n", - sx->lock_object.lo_name, file, line)); + ("_sx_xlock_hard: recursed on non-recursive sx %p @ %s:%d\n", + sx, file, line)); sx->sx_recurse++; atomic_set_ptr(&sx->sx_lock, SX_LOCK_RECURSED); if (LOCK_LOG_TEST(&sx->lock_object, 0)) @@ -1257,8 +1257,8 @@ _sx_slock_int(struct sx *sx, int opts LOCK_FILE_LINE_ARG_DEF) KASSERT(kdb_active != 0 || SCHEDULER_STOPPED() || !TD_IS_IDLETHREAD(curthread), - ("sx_slock() by idle thread %p on sx %s @ %s:%d", - curthread, sx->lock_object.lo_name, file, line)); + ("sx_slock() by idle thread %p on sx %p @ %s:%d", + curthread, sx, file, line)); KASSERT(sx->sx_lock != SX_LOCK_DESTROYED, ("sx_slock() of destroyed sx @ %s:%d", file, line)); WITNESS_CHECKORDER(&sx->lock_object, LOP_NEWORDER, file, line, NULL);