summaryrefslogtreecommitdiff
path: root/usr/src/cmd/format
diff options
context:
space:
mode:
authorbo zhou - Sun Microsystems - Beijing China <Bo.Zhou@Sun.COM>2010-03-12 14:09:07 +0800
committerbo zhou - Sun Microsystems - Beijing China <Bo.Zhou@Sun.COM>2010-03-12 14:09:07 +0800
commit4ee50ec31c8efdc951495f067c8455be6c35a7dc (patch)
tree58876b78084687ac4b8078c2c88ed3c7282a5633 /usr/src/cmd/format
parent438df353d54a243de0b7dd5687ba9b68c9c35db0 (diff)
downloadillumos-joyent-4ee50ec31c8efdc951495f067c8455be6c35a7dc.tar.gz
6928411 format core dumps while trying to access iSCSI disks formatted with 4k sector size
Diffstat (limited to 'usr/src/cmd/format')
-rw-r--r--usr/src/cmd/format/auto_sense.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/usr/src/cmd/format/auto_sense.c b/usr/src/cmd/format/auto_sense.c
index f96dd6146d..2ccd4620a0 100644
--- a/usr/src/cmd/format/auto_sense.c
+++ b/usr/src/cmd/format/auto_sense.c
@@ -829,6 +829,7 @@ auto_sense(
int force_generic = 0;
u_ioparam_t ioparam;
int deflt;
+ char *buf;
/*
* First, if expert mode, find out if the user
@@ -895,9 +896,13 @@ auto_sense(
err_print("disk name: `%s`\n", disk_name);
}
- if (scsi_rdwr(DIR_READ, fd, (diskaddr_t)0, 1, (caddr_t)label,
- F_SILENT, NULL))
+ buf = zalloc(cur_blksz);
+ if (scsi_rdwr(DIR_READ, fd, (diskaddr_t)0, 1, (caddr_t)buf,
+ F_SILENT, NULL)) {
+ free(buf);
return ((struct disk_type *)NULL);
+ }
+ free(buf);
/*
* Figure out which method we use for auto sense.