From nobody Sat Oct 08 00:39:11 2022 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 4MkmWz5H8wz4fGGy; Sat, 8 Oct 2022 00:39:11 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4MkmWz4sMxz3pQX; Sat, 8 Oct 2022 00:39:11 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1665189551; 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=YN0ce6PeJBcS9rWQ73AAjBwN5OY6cniaaqZLIZKJVsg=; b=r7CSro7gf+59fzgSaRXcQbhwiquRA68HNTTIB2C+H5JjcG1EgKbxfNBMJfeDgcj8BkV7R5 gh/rqxDQlUmw82alSI08hQlZ1NAIgQAyk79qRfPYiCBvZRgkP9pIutCLJtRU02Mhv16G82 PCh4KOJOxCjGbcZMNyTJG/y8E6Ebiyq15PnbhmIqE3ipzLsOg5fs7T+ZpCS/RwIhkB4PcS gKwVZIrr00/NVI0c5uMiM/dFDCXoLBAIRXA17wlvy9OuboRVPQwG25ENzYPe7fPrxPqYrR Q+1elQcuha7IdQYf49BvqWf0uRcLE4lkVChYlngfEDTB2x5xdECCea/N+1Sthg== 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 4MkmWz3ph4zmKL; Sat, 8 Oct 2022 00:39:11 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 2980dBNa034405; Sat, 8 Oct 2022 00:39:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2980dB9k034404; Sat, 8 Oct 2022 00:39:11 GMT (envelope-from git) Date: Sat, 8 Oct 2022 00:39:11 GMT Message-Id: <202210080039.2980dB9k034404@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Konstantin Belousov Subject: git: 55b41282d698 - stable/13 - FFS: truncate write if it would exceed the fs max file size or RLIMIT_FSIZE 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: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 55b41282d698bed4b3bb75b74265992c2cf5f42b Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1665189551; 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=YN0ce6PeJBcS9rWQ73AAjBwN5OY6cniaaqZLIZKJVsg=; b=AusL8OHgtcDahgJcce8B8IA/JDE+bD/0Y1JrTj7EqJnofnRVIWZpfT2M/1g1C/Trt50YLb BiU30Tm0S4OZKbk+N1pB6IQGYrGJamMRJQcJ2nEM7iFQW0lx3c/kM4JOGcpPj/9PkouDzY S1JPQUaxKakyQEK+TwvdjolzGiU0DLRhBOciYA6gJ70ogzUtKgQQpcQu8P7mDRPs8Q/Tc8 z1VFkh+cHgXQHopxEoLMAWehP7K5wYgXqPPfPVhbrmijy4WPLyOoJkXkcm8jJ45IqENe7q W0rgxxpSvFxctjdGv2OHdB8p5XenKXzWjZCZegUdFWLP5mkmwMpV2VUYvlLAZQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1665189551; a=rsa-sha256; cv=none; b=ebV1GYMv8KnPdlSIk/0/FKAc/0NjSikoJduVVVTi/DPPSQmNOFv82Ko7WhrO/ARUAykBhj w04GFhToNLkntmF6dn/pg8uTsrzhAPi/c7Inon/LFhZ3B/LFVjoLYfhUCsr6qYtyz3uGDJ xLx58oMauc3m6ikZbJ4Jcaw8CoxQVJLq6m5nc+PdkNF77jceWWhio2IG8SV7pzlsGQJCFi 7eflw10dp57WrSYUklfWJNAtK/LDg5IqJ2VvJphzr838xyWfwMMo2Xyzj3yqvbdqcxzk25 ulF9jxpVPDztKf7Mrf7V6VAQVOrgo0eTG+4HiHjqMuMdD9/iUP7tccdyVB2Rrg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=55b41282d698bed4b3bb75b74265992c2cf5f42b commit 55b41282d698bed4b3bb75b74265992c2cf5f42b Author: Konstantin Belousov AuthorDate: 2022-09-18 11:48:40 +0000 Commit: Konstantin Belousov CommitDate: 2022-10-08 00:29:36 +0000 FFS: truncate write if it would exceed the fs max file size or RLIMIT_FSIZE PR: 164793 (cherry picked from commit 87525ef94007c792c6745db7938251a663ca5706) --- sys/ufs/ffs/ffs_vnops.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c index a37b0f6e679c..bfba15a55872 100644 --- a/sys/ufs/ffs/ffs_vnops.c +++ b/sys/ufs/ffs/ffs_vnops.c @@ -838,7 +838,7 @@ ffs_write( struct buf *bp; ufs_lbn_t lbn; off_t osize; - ssize_t resid; + ssize_t resid, r; int seqcount; int blkoffset, error, flags, ioflag, size, xfersize; @@ -887,15 +887,17 @@ ffs_write( KASSERT(uio->uio_resid >= 0, ("ffs_write: uio->uio_resid < 0")); KASSERT(uio->uio_offset >= 0, ("ffs_write: uio->uio_offset < 0")); fs = ITOFS(ip); - if ((uoff_t)uio->uio_offset + uio->uio_resid > fs->fs_maxfilesize) - return (EFBIG); + /* * Maybe this should be above the vnode op call, but so long as * file servers have no limits, I don't think it matters. */ - error = vn_rlimit_fsize(vp, uio, uio->uio_td); - if (error != 0) + error = vn_rlimit_fsizex(vp, uio, fs->fs_maxfilesize, &r, + uio->uio_td); + if (error != 0) { + vn_rlimit_fsizex_res(uio, r); return (error); + } resid = uio->uio_resid; osize = ip->i_size; @@ -1035,6 +1037,7 @@ ffs_write( if (ffs_fsfail_cleanup(VFSTOUFS(vp->v_mount), error)) error = ENXIO; } + vn_rlimit_fsizex_res(uio, r); return (error); }