diff options
Diffstat (limited to 'usr/src/uts/common/io/scsi')
-rw-r--r-- | usr/src/uts/common/io/scsi/targets/sd.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/usr/src/uts/common/io/scsi/targets/sd.c b/usr/src/uts/common/io/scsi/targets/sd.c index eb694bd3bb..4784fdeec4 100644 --- a/usr/src/uts/common/io/scsi/targets/sd.c +++ b/usr/src/uts/common/io/scsi/targets/sd.c @@ -24090,13 +24090,24 @@ sd_get_media_info_ext(dev_t dev, caddr_t arg, int flag) { struct dk_minfo_ext mie; int rval = 0; + size_t len; rval = sd_get_media_info_com(dev, &mie.dki_media_type, &mie.dki_lbsize, &mie.dki_capacity, &mie.dki_pbsize); if (rval) return (rval); - if (ddi_copyout(&mie, arg, sizeof (struct dk_minfo_ext), flag)) + + switch (ddi_model_convert_from(flag & FMODELS)) { + case DDI_MODEL_ILP32: + len = sizeof (struct dk_minfo_ext32); + break; + default: + len = sizeof (struct dk_minfo_ext); + break; + } + + if (ddi_copyout(&mie, arg, len, flag)) rval = EFAULT; return (rval); |