From nobody Sat Aug 30 22:58:14 2025 X-Original-To: dev-commits-src-branches@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 4cDrCC0vnhz66Mkr; Sat, 30 Aug 2025 22:58:15 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cDrCC04kpz3PVq; Sat, 30 Aug 2025 22:58:15 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1756594695; 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=DxxSs7DvCVOlD1lfLFwb2r08qTQRf14JmU1SnYfueB4=; b=xIh9SIerPoAf387crCwKUSi0PF5SydXLNAOQoCX0y+UzhrEFeIm6IsZRPOLejPnqXNfAPw MH5zHzsayQZxmJfk1gmaCm/zNU+sjfNa0ZsIbV2GVgbBg/mbuRfmzF5o4hlTPjz1u6hJ2g l5ayNiJo/Q53PXXObg0AHmLYOGUWTgz668nd0LdL5QEwQzhvpdwQo7oZ7oipml57OhjPYg zh2Vxd7+9F7uN4tSRgJgQQsQrvDh5ZYwc+Kv73zJwaPgmTMq/dgU6QC5kJQ9sHVTisGcgI GZw7qEAPYj3XkKREsRtA/3LTdLvPSrmUygqVuSw1Qin7pwCb80sIoA2llJjitw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1756594695; 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=DxxSs7DvCVOlD1lfLFwb2r08qTQRf14JmU1SnYfueB4=; b=BqM9jHMnDkez5keiPwniCVRPXrU+nRSMlVije6wPYCL3LAmJP5lR/RUHNdPtl9i8nnEMGH N/Eo4HpMG+em6DtdL87FwpFUTFMUbTPaiG9OohKjBkOFygeRsMFE9QCsq3u26fwH+OUCPJ D3PGyUGiUIJ60sOvsEV+1GqiqXRKdNSfpmr2x3teuTONvfraYQw2WXxS3oilpz9r10LxgP IH3T5EXX43tBD9VwxjVKALFaT+CnjXdMMck38+3qplInjA+oukQ1bGVs6/suBLeV1JmBd0 byZ4mYtSC5Sa6Cqa9Mawm1Ja3XSJPiyrKklGktmIEX9aoOOaPU1Yr4v1NsObDg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1756594695; a=rsa-sha256; cv=none; b=EsnXlRymqsQ2ax0xopGQqrDNl8x64vfZYKjrFopw6Kt9KbLuYdEpAZ86z2dYzBxOVrUqI2 Ng5Dmd3RaJHHqtXFjPqP7KjbiErMbwr3aXU7g3TTWg3O/fzFHUhzYMFipvnPc8utvGYtWV 2iUdJ49chLUIbqPEWXggOk7yc/pmDRieRBjNyR/VzjB08uAGaCi2tYLHvnXq2hfvZMJEnw +29r0yblynSz/mg3sXl8iyj7Obabf10Fm57HaBEIss0SlgOcSt+HCo8Lfj66ovtg9CGHV3 r42tAOiIH6KX/UlkP9sPeoI6x25NiQz/9Jfh+q8PCudIiEGl2+SxM8Ixs87rsg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none 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 4cDrCB6nBYzmt7; Sat, 30 Aug 2025 22:58:14 +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 57UMwEKJ080565; Sat, 30 Aug 2025 22:58:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 57UMwEJ9080562; Sat, 30 Aug 2025 22:58:14 GMT (envelope-from git) Date: Sat, 30 Aug 2025 22:58:14 GMT Message-Id: <202508302258.57UMwEJ9080562@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kirk McKusick Subject: git: 727bc500264b - stable/14 - Bail out of corrupt directory entries during boot List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mckusick X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 727bc500264bffc48b699a88e00a0baa14cbe73d Auto-Submitted: auto-generated The branch stable/14 has been updated by mckusick: URL: https://cgit.FreeBSD.org/src/commit/?id=727bc500264bffc48b699a88e00a0baa14cbe73d commit 727bc500264bffc48b699a88e00a0baa14cbe73d Author: Kirk McKusick AuthorDate: 2025-08-22 05:33:48 +0000 Commit: Kirk McKusick CommitDate: 2025-08-30 22:56:26 +0000 Bail out of corrupt directory entries during boot Reported-by: Daniel O'Connor darius-dons.net.au MFC-after: 1 week Sponsored-by: Netflix Differential-Revision: https://reviews.freebsd.org/D2844 (cherry picked from commit 690ae8a2025ca1ce58d08a90a1df1645c81392ea) --- stand/libsa/ufs.c | 6 ++++++ stand/libsa/ufsread.c | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/stand/libsa/ufs.c b/stand/libsa/ufs.c index e1d540ed2321..7782ba370272 100644 --- a/stand/libsa/ufs.c +++ b/stand/libsa/ufs.c @@ -890,6 +890,12 @@ ufs_readdir(struct open_file *f, struct dirent *d) if (error) return (error); dp = (struct direct *)buf; + /* + * Check for corrupt directory entry and bail out rather + * than spin forever hoping that the user has other options. + */ + if (dp->d_reclen == 0) + return (0); fp->f_seekp += dp->d_reclen; } while (dp->d_ino == (ino_t)0); diff --git a/stand/libsa/ufsread.c b/stand/libsa/ufsread.c index 0f9b9bb4e2fb..86ac8fbbbab7 100644 --- a/stand/libsa/ufsread.c +++ b/stand/libsa/ufsread.c @@ -108,6 +108,13 @@ fsfind(const char *name, ufs_ino_t * ino) *ino = d.d_ino; return d.d_type; } + /* + * Check for corrupt directory entry and bail out + * rather than spin forever hoping that the user + * has other options. + */ + if (d.d_reclen == 0) + return 0; s += d.d_reclen; } if (n != -1 && ls)