esas2r: Fix array overrun
[cascardo/linux.git] / drivers / scsi / esas2r / esas2r_ioctl.c
index baf9130..3e84834 100644 (file)
@@ -1360,14 +1360,15 @@ int esas2r_ioctl_handler(void *hostdata, int cmd, void __user *arg)
        if (ioctl->header.channel == 0xFF) {
                a = (struct esas2r_adapter *)hostdata;
        } else {
-               a = esas2r_adapters[ioctl->header.channel];
-               if (ioctl->header.channel >= MAX_ADAPTERS || (a == NULL)) {
+               if (ioctl->header.channel >= MAX_ADAPTERS ||
+                       esas2r_adapters[ioctl->header.channel] == NULL) {
                        ioctl->header.return_code = IOCTL_BAD_CHANNEL;
                        esas2r_log(ESAS2R_LOG_WARN, "bad channel value");
                        kfree(ioctl);
 
                        return -ENOTSUPP;
                }
+               a = esas2r_adapters[ioctl->header.channel];
        }
 
        switch (cmd) {