diff options
| author | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2005-08-23 18:55:38 +0000 |
|---|---|---|
| committer | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2005-08-23 18:55:38 +0000 |
| commit | a180109fa37a25871f867f898421bcb0c2b5e853 (patch) | |
| tree | 19b6c2e3f0210fe91f65b2e98bd3435a91664248 | |
| parent | b192b1d38ee55d66cc1371fb7eee1992fb16d4f5 (diff) | |
Notes
| -rw-r--r-- | sys/geom/label/g_label_ext2fs.c | 3 | ||||
| -rw-r--r-- | sys/geom/label/g_label_reiserfs.c | 16 |
2 files changed, 13 insertions, 6 deletions
diff --git a/sys/geom/label/g_label_ext2fs.c b/sys/geom/label/g_label_ext2fs.c index 18252378143e4..379785f54558b 100644 --- a/sys/geom/label/g_label_ext2fs.c +++ b/sys/geom/label/g_label_ext2fs.c @@ -58,6 +58,9 @@ g_label_ext2fs_taste(struct g_consumer *cp, char *label, size_t size) 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; diff --git a/sys/geom/label/g_label_reiserfs.c b/sys/geom/label/g_label_reiserfs.c index 8ef1ec89d699f..c2bee7165c45e 100644 --- a/sys/geom/label/g_label_reiserfs.c +++ b/sys/geom/label/g_label_reiserfs.c @@ -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 *cp, char *label, size_t size) 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; |
