|
@@ -3198,10 +3198,11 @@ static int query_disk(struct aac_dev *dev, void __user *arg)
|
|
|
return -EBUSY;
|
|
|
if (copy_from_user(&qd, arg, sizeof (struct aac_query_disk)))
|
|
|
return -EFAULT;
|
|
|
- if (qd.cnum == -1)
|
|
|
+ if (qd.cnum == -1) {
|
|
|
+ if (qd.id < 0 || qd.id >= dev->maximum_num_containers)
|
|
|
+ return -EINVAL;
|
|
|
qd.cnum = qd.id;
|
|
|
- else if ((qd.bus == -1) && (qd.id == -1) && (qd.lun == -1))
|
|
|
- {
|
|
|
+ } else if ((qd.bus == -1) && (qd.id == -1) && (qd.lun == -1)) {
|
|
|
if (qd.cnum < 0 || qd.cnum >= dev->maximum_num_containers)
|
|
|
return -EINVAL;
|
|
|
qd.instance = dev->scsi_host_ptr->host_no;
|