Module Name: src Committed By: riastradh Date: Mon Jul 1 22:12:57 UTC 2024
Modified Files: src/sys/ufs/ext2fs: ext2fs_vfsops.c Log Message: ext2fs: Fix indexing of group descriptors on disk. XXX Evidently we need some more automatic tests for this! PR kern/58388 To generate a diff of this commit: cvs rdiff -u -r1.225 -r1.226 src/sys/ufs/ext2fs/ext2fs_vfsops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/ufs/ext2fs/ext2fs_vfsops.c diff -u src/sys/ufs/ext2fs/ext2fs_vfsops.c:1.225 src/sys/ufs/ext2fs/ext2fs_vfsops.c:1.226 --- src/sys/ufs/ext2fs/ext2fs_vfsops.c:1.225 Sun Aug 27 16:35:51 2023 +++ src/sys/ufs/ext2fs/ext2fs_vfsops.c Mon Jul 1 22:12:56 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: ext2fs_vfsops.c,v 1.225 2023/08/27 16:35:51 christos Exp $ */ +/* $NetBSD: ext2fs_vfsops.c,v 1.226 2024/07/01 22:12:56 riastradh Exp $ */ /* * Copyright (c) 1989, 1991, 1993, 1994 @@ -60,7 +60,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ext2fs_vfsops.c,v 1.225 2023/08/27 16:35:51 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ext2fs_vfsops.c,v 1.226 2024/07/01 22:12:56 riastradh Exp $"); #if defined(_KERNEL_OPT) #include "opt_compat_netbsd.h" @@ -653,7 +653,8 @@ ext2fs_reload(struct mount *mp, kauth_cr return error; } e2fs_cgload(bp->b_data, - &fs->e2fs_gd[i * fs->e2fs_bsize / sizeof(struct ext2_gd)], + &fs->e2fs_gd[i * + (fs->e2fs_bsize >> fs->e2fs_group_desc_shift)], fs->e2fs_bsize, fs->e2fs_group_desc_shift); brelse(bp, 0); } @@ -770,8 +771,8 @@ ext2fs_mountfs(struct vnode *devvp, stru m_fs->e2fs_bsize, 0, &bp); if (error) goto out1; - e2fs_cgload(bp->b_data, &m_fs->e2fs_gd[i * m_fs->e2fs_bsize - / sizeof(struct ext2_gd)], + e2fs_cgload(bp->b_data, &m_fs->e2fs_gd[i * + (m_fs->e2fs_bsize >> m_fs->e2fs_group_desc_shift)], m_fs->e2fs_bsize, m_fs->e2fs_group_desc_shift); brelse(bp, 0); bp = NULL; @@ -1334,8 +1335,8 @@ ext2fs_cgupdate(struct ufsmount *mp, int bp = getblk(mp->um_devvp, EXT2_FSBTODB(fs, fs->e2fs.e2fs_first_dblock + 1 /* superblock */ + i), fs->e2fs_bsize, 0, 0); - e2fs_cgsave(&fs->e2fs_gd[ - i * fs->e2fs_bsize / sizeof(struct ext2_gd)], + e2fs_cgsave(&fs->e2fs_gd[i * + (m_fs->e2fs_bsize >> m_fs->e2fs_group_desc_shift)], bp->b_data, fs->e2fs_bsize, fs->e2fs_group_desc_shift); if (waitfor == MNT_WAIT) error = bwrite(bp);