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);