From nobody Tue Jul 29 20:54:41 2025 X-Original-To: dev-commits-src-main@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 4bs6zP435Hz63PXj; Tue, 29 Jul 2025 20:54:41 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4bs6zP3BsPz43B3; Tue, 29 Jul 2025 20:54:41 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753822481; 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=r6GVvLKS4FBYjXL1SF9lWqvOo9UCZkT5tEUimjC71AY=; b=DZzegmrLiWAkiaHj3HVdtTDBGtHpEPir5K6/Ew/tVuZRhPW76itSIjLnED7Q6BBQ4oWQfA tA39n+gd2EBAXzIUPKciZumjlyfHSzuVDcoJN1Z3i1n6hcp2RD1rOdw3yXopEcxxW56V4B T947/BbKhM/VmxEvtvxwTpAqR/xUyMxlqakK5+sfbp6aIL1XaldJZfEKAnCYD5h+pRkkV6 TqPExoqw6gWA03LkPoIrpcB6/0Hi5FweOv+fFZpUSAB+TIxa4iPb+MjdoPFFu1bz+yffUI LUIuJR65ym8L8ZP6tvygDS+thhh+E/nh8f4ZEmm/k1cXo8Hna6N746Hoj19oHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1753822481; 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=r6GVvLKS4FBYjXL1SF9lWqvOo9UCZkT5tEUimjC71AY=; b=wCCt8sEk6W1QcXACUnQhzX0FOM4gIjUE5kxw6Uh5Y+DiK+fV2cOB+KOXHDjwI+hLEmIyHl b1R2VRjDEzkxIHIZMRi4SYkBF/myO9bpR2uVTmNQKFNe0VEfoQYgzpAyTUHYpnGONJa8SJ 9GKZYKgRUNNwDQau8NzbqnAqTgR/AobZZp+TfyG1nG6cGuaX2q1TF9le0VVk13nFo9B6tK To6f1blWaAMSzr2uU+JEsQzV2n0PCNboqVnqGMYffhqoa9XZnhIIUiHo7Lmaw5rMZzQ3SF h6cN40XR0qywSgWzhYFqD9VKAqZ2sTOyLYl3ENrECl1gOsFO2PyMC+Cgkdpamw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1753822481; a=rsa-sha256; cv=none; b=GRd6IRbr5vz+Igcjly1kJeDPpdb/jOQeDzXOJTfs5eHmv+FdfXvgoIxP6w8Cm34SqlK8WZ 7RenDS/i0tRV35Otcnc2kDefm4T+Np77Bl3ZwWSx3AkiJgxHQx8kXgc/9MF9yJ2AxECpPb XGkGzk5+QXX/5a1gHwW6LoU5b/F+AeCvQJYhOqGrpa/6t04ebA+8/ipvvjRpptdK+sxEmx lgaKTSqvUdcPBOESjLGzbgHFKsobsc3ihvazQSNtzsJIgouDkiZ94Nrmu8EJa/scyDjeSC 2+Fyw9f/rFO0pB8qaWuRvxDu1zivnMuelYBDzd8e3EPuseuDpk5h1Mt6aU56mQ== 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 4bs6zP2p8GznkZ; Tue, 29 Jul 2025 20:54:41 +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 56TKsfE6059258; Tue, 29 Jul 2025 20:54:41 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 56TKsfaN059255; Tue, 29 Jul 2025 20:54:41 GMT (envelope-from git) Date: Tue, 29 Jul 2025 20:54:41 GMT Message-Id: <202507292054.56TKsfaN059255@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: aa42e4984997 - main - sys_swapon: reject too small devices List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: aa42e4984997c9d3aa5d30534bdaf760e613e97b Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=aa42e4984997c9d3aa5d30534bdaf760e613e97b commit aa42e4984997c9d3aa5d30534bdaf760e613e97b Author: Konstantin Belousov AuthorDate: 2025-07-29 16:30:28 +0000 Commit: Konstantin Belousov CommitDate: 2025-07-29 20:54:16 +0000 sys_swapon: reject too small devices blist_create() panics on zero nblks. Reported by: olivier Reviewed by: alc, markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D51618 --- sys/sys/exterr_cat.h | 1 + sys/vm/swap_pager.c | 17 +++++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/sys/sys/exterr_cat.h b/sys/sys/exterr_cat.h index a8e1f56e132e..80cff53b3576 100644 --- a/sys/sys/exterr_cat.h +++ b/sys/sys/exterr_cat.h @@ -19,6 +19,7 @@ #define EXTERR_CAT_INOTIFY 5 #define EXTERR_CAT_GENIO 6 #define EXTERR_CAT_BRIDGE 7 +#define EXTERR_CAT_SWAP 8 #endif diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c index d6bd06226d04..327cac661044 100644 --- a/sys/vm/swap_pager.c +++ b/sys/vm/swap_pager.c @@ -65,9 +65,9 @@ * from: Utah $Hdr: swap_pager.c 1.4 91/04/30$ */ -#include #include "opt_vm.h" +#define EXTERR_CATEGORY EXTERR_CAT_SWAP #include #include #include @@ -76,6 +76,7 @@ #include #include #include +#include #include #include #include @@ -2686,7 +2687,7 @@ swapon_check_swzone(void) } } -static void +static int swaponsomething(struct vnode *vp, void *id, u_long nblks, sw_strategy_t *strategy, sw_close_t *close, dev_t dev, int flags) { @@ -2701,6 +2702,8 @@ swaponsomething(struct vnode *vp, void *id, u_long nblks, */ nblks &= ~(ctodb(1) - 1); nblks = dbtoc(nblks); + if (nblks == 0) + return (EXTERROR(EINVAL, "swap device too small")); sp = malloc(sizeof *sp, M_VMPGDATA, M_WAITOK | M_ZERO); sp->sw_blist = blist_create(nblks, M_WAITOK); @@ -2742,6 +2745,8 @@ swaponsomething(struct vnode *vp, void *id, u_long nblks, swp_sizecheck(); mtx_unlock(&sw_dev_mtx); EVENTHANDLER_INVOKE(swapon, sp); + + return (0); } /* @@ -3286,10 +3291,10 @@ swapongeom_locked(struct cdev *dev, struct vnode *vp) return (error); } nblks = pp->mediasize / DEV_BSIZE; - swaponsomething(vp, cp, nblks, swapgeom_strategy, + error = swaponsomething(vp, cp, nblks, swapgeom_strategy, swapgeom_close, dev2udev(dev), (pp->flags & G_PF_ACCEPT_UNMAPPED) != 0 ? SW_UNMAPPED : 0); - return (0); + return (error); } static int @@ -3378,9 +3383,9 @@ swaponvp(struct thread *td, struct vnode *vp, u_long nblks) if (error != 0) return (error); - swaponsomething(vp, vp, nblks, swapdev_strategy, swapdev_close, + error = swaponsomething(vp, vp, nblks, swapdev_strategy, swapdev_close, NODEV, 0); - return (0); + return (error); } static int