diff options
| author | bo zhou - Sun Microsystems - Beijing China <Bo.Zhou@Sun.COM> | 2010-03-12 14:09:07 +0800 |
|---|---|---|
| committer | bo zhou - Sun Microsystems - Beijing China <Bo.Zhou@Sun.COM> | 2010-03-12 14:09:07 +0800 |
| commit | 4ee50ec31c8efdc951495f067c8455be6c35a7dc (patch) | |
| tree | 58876b78084687ac4b8078c2c88ed3c7282a5633 /usr/src/cmd/format | |
| parent | 438df353d54a243de0b7dd5687ba9b68c9c35db0 (diff) | |
| download | illumos-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.c | 9 |
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. |
