changeset 3128:b20f40f4804e

6479845 panic when loading kmdb during install of snv_100906
author af
date Thu, 16 Nov 2006 03:35:05 -0800
parents 73afde3df4cf
children dcdb639d141d
files usr/src/common/fs/ufsops.c
diffstat 1 files changed, 6 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/common/fs/ufsops.c	Wed Nov 15 21:19:01 2006 -0800
+++ b/usr/src/common/fs/ufsops.c	Thu Nov 16 03:35:05 2006 -0800
@@ -218,14 +218,6 @@
 	daddr32_t *db;
 	devid_t	*devp;
 
-	/* These are the pools of buffers, etc. */
-	/* Compilers like to play with alignment, so force the issue here */
-	static union {
-		char		*blk[NIADDR + 1];
-		daddr32_t	*dummy;
-	} b;
-	daddr32_t blknos[NIADDR + 1];
-
 	devp = filep->fi_devp;
 	inodep = filep->fi_inode;
 	db = inodep->i_db;
@@ -266,16 +258,12 @@
 	 * fetch through the indirect blocks
 	 */
 	for (; j <= NIADDR; j++) {
-		if (blknos[j] != nb) {
-			filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs, nb);
-			filep->fi_count = devp->un_fs.di_fs.fs_bsize;
-			filep->fi_memp = 0;
-			if (diskread(filep) != 0)
-				return (0);
-			b.blk[j] = filep->fi_memp;
-			blknos[j] = nb;
-		}
-		bap = (daddr32_t *)b.blk[j];
+		filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs, nb);
+		filep->fi_count = devp->un_fs.di_fs.fs_bsize;
+		filep->fi_memp = 0;
+		if (diskread(filep) != 0)
+			return (0);
+		bap = (daddr32_t *)filep->fi_memp;
 		sh /= NINDIR(&devp->un_fs.di_fs);
 		i = (bn / sh) % NINDIR(&devp->un_fs.di_fs);
 		nb = bap[i];