From nobody Thu Jun 25 03:08:56 2026 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 4gm3fw6Dq5z6hL7l for ; Thu, 25 Jun 2026 03:08:56 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gm3fw43JTz3vJp for ; Thu, 25 Jun 2026 03:08:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1782356936; 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=VFAuaSoe45wWPkQL8SsGNxCT1naS/dqnHmvQqp96xOw=; b=ZTJ4/a0n7ylSI6zi+//h42WDLIgHJ5DNWzJHGDoY0Vzuc0xSboOvFSUPB2aHJG+Z6QrJSI 7mPxX5/FSPVjt6WRLSzXblPMmvYLSVsGvNpApGGdJVZvxf0OV3xbOVOyNhskrWB3nwE5Gl +8vgEJKjLMcLjHawnY+0LTijx90e3R9u8+6URB44Mb3JLBzfLpbasaD7XxI0WZf3qsjLqB +z8KdoG3AZY8ZY/xzhmf3Hz4x9pGLP3wkVGCvGKY/iCTFB2aYCLQvknTBp8ipniKOih/YD kH4iIfJU5ZfgY6Fn3pwRMFDbnSqaG6cvyTiXD8jWUcVuWvfEzyPiyGYA8BT5IA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1782356936; a=rsa-sha256; cv=none; b=UOdttxoaFVOJJkSIGiR2blkcz4S3uXNCZvRq0Veg/UCRpGdNRgOhxrolctJV6TpbbjJDq3 DpeiMwe9HXxhbw0RAjb0vu/7AyH0AbM5+KXGQmJmNE68G4KmrXfocClA9Ol/Z1uw2SiqS8 3f0L1CugQpJI9+wwpgRKQGcmrX8R2doA/zam6dkY7aHao5x6bO04CYio4vpSCK501q7nAO dTO33G2yk90z+Y4W4W5cr664wfLrcGZVOqXs2k8jjW7SmYEZF+j/f7H2uv9BQaMDZys68/ pNgnSVNlIHlGBEqewhKMEwc7bDeUAXJZ+KOK08gBoV5wRheJ6TSRhvzZYci3tQ== 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=1782356936; 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=VFAuaSoe45wWPkQL8SsGNxCT1naS/dqnHmvQqp96xOw=; b=KvF77W6/bfvHpCmc6IWmpHRimSPmiV5ekz2g/brVjYQRGYJcQ6C6o/r6Z3mJhe9UnBOTiV 5ZqLIOzc/uAL5xDIk5jAXa0Tv2GpmQUKn6fk9oSIq1h80eso2rym2BwfLAOVEQ3E7hlCem RohTDKFCDnmW1nTkKfJyAz8XIsOGuml0FiEmjQVjRlEVJiIlETW+36brS50a9voS+MTluf 2IDOvAmH/yGd5Vm6qMD3qp/4pwBHKZvUl5g0BXe+NZhEbHFSY/mrVA8mxrUcSHbatikuSy BX58h4x0kvZG4te+K0KTmghJsk8mhCX3ApTneRItSbUYRiVe+d73PSFCIVm8uA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4gm3fw0gg4zpMt for ; Thu, 25 Jun 2026 03:08:56 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1c118 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 25 Jun 2026 03:08:56 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kyle Evans Subject: git: 4ffa7e126ed0 - main - kern: osd: trash a slot's methods upon deregistration 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 List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kevans X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4ffa7e126ed0081b804bda6fb71a60acf49dabda Auto-Submitted: auto-generated Date: Thu, 25 Jun 2026 03:08:56 +0000 Message-Id: <6a3c9bc8.1c118.366e5286@gitrepo.freebsd.org> The branch main has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=4ffa7e126ed0081b804bda6fb71a60acf49dabda commit 4ffa7e126ed0081b804bda6fb71a60acf49dabda Author: Kyle Evans AuthorDate: 2026-06-25 03:08:05 +0000 Commit: Kyle Evans CommitDate: 2026-06-25 03:08:24 +0000 kern: osd: trash a slot's methods upon deregistration This both lets us quickly identify a slot that's been deallocated while debugging, and forces us to take a fault if something tries to call one of the methods anyways somehow with osd_destructors[slot - 1] == NULL. Reviewed by: imp, jamie Differential Revision: https://reviews.freebsd.org/D48075 --- sys/kern/kern_osd.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/sys/kern/kern_osd.c b/sys/kern/kern_osd.c index b64735e7f93a..94377b39dbc1 100644 --- a/sys/kern/kern_osd.c +++ b/sys/kern/kern_osd.c @@ -180,6 +180,18 @@ osd_deregister(u_int type, u_int slot) osdm[type].osd_destructors[slot - 1] = NULL; OSD_DEBUG("Slot deregistration (type=%u, slot=%u).", type, slot); +#ifdef INVARIANTS + /* + * We trash the slot's osd_methods upon deregistration so that we take + * a fault if something calls them, rather than potentially + * inadvertently executing some arbitrary function if another module's + * been mapped over the one that deregistered. + */ + for (u_int method = 0; method < osdm[type].osd_nmethods; method++) { + OSD_METHOD(osdm[type], slot, method) = (void *)0xdeadc0de; + } +#endif + rm_wunlock(&osdm[type].osd_object_lock); sx_xunlock(&osdm[type].osd_module_lock); }