Index: g_label_ext2fs.c =================================================================== RCS file: /usr/repo/src/sys/geom/label/g_label_ext2fs.c,v retrieving revision 1.1 diff -u -p -r1.1 g_label_ext2fs.c --- g_label_ext2fs.c 12 Aug 2005 00:27:45 -0000 1.1 +++ g_label_ext2fs.c 23 Aug 2005 18:45:27 -0000 @@ -58,6 +58,9 @@ g_label_ext2fs_taste(struct g_consumer * pp = cp->provider; label[0] = '\0'; + if ((EXT2FS_SB_OFFSET % pp->sectorsize) != 0) + return; + fs = (e2sb_t *)g_read_data(cp, EXT2FS_SB_OFFSET, pp->sectorsize, NULL); if (fs == NULL) return; Index: g_label_reiserfs.c =================================================================== RCS file: /usr/repo/src/sys/geom/label/g_label_reiserfs.c,v retrieving revision 1.1 diff -u -p -r1.1 g_label_reiserfs.c --- g_label_reiserfs.c 12 Aug 2005 00:27:45 -0000 1.1 +++ g_label_reiserfs.c 23 Aug 2005 18:48:37 -0000 @@ -49,11 +49,17 @@ typedef struct resiserfs_sb { } reiserfs_sb_t; static reiserfs_sb_t * -g_label_reiserfs_read_super(struct g_consumer *cp, off_t offset, off_t len) +g_label_reiserfs_read_super(struct g_consumer *cp, off_t offset) { reiserfs_sb_t *fs; + u_int secsize; - fs = (reiserfs_sb_t *)g_read_data(cp, offset, len, NULL); + secsize = cp->provider->sectorsize; + + if ((offset % secsize) != 0) + return (NULL); + + fs = (reiserfs_sb_t *)g_read_data(cp, offset, secsize, NULL); if (fs == NULL) return (NULL); @@ -77,12 +83,10 @@ g_label_reiserfs_taste(struct g_consumer label[0] = '\0'; /* Try old format */ - fs = g_label_reiserfs_read_super(cp, REISERFS_OLD_DISK_OFFSET, - pp->sectorsize); + fs = g_label_reiserfs_read_super(cp, REISERFS_OLD_DISK_OFFSET); if (fs == NULL) { /* Try new format */ - fs = g_label_reiserfs_read_super(cp, REISERFS_NEW_DISK_OFFSET, - pp->sectorsize); + fs = g_label_reiserfs_read_super(cp, REISERFS_NEW_DISK_OFFSET); } if (fs == NULL) return;