summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/scsi
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/io/scsi')
-rw-r--r--usr/src/uts/common/io/scsi/targets/sd.c13
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);