kfree(buff);
                        return SCSI_DH_OK;
                }
-               if (!scsi_sense_valid(&sense_hdr)) {
+               if (retval < 0 || !scsi_sense_valid(&sense_hdr)) {
                        sdev_printk(KERN_INFO, sdev,
                                    "%s: rtpg failed, result %d\n",
                                    ALUA_DH_NAME, retval);
                        kfree(buff);
-                       if (driver_byte(retval) == DRIVER_ERROR)
+                       if (retval < 0)
                                return SCSI_DH_DEV_TEMP_BUSY;
                        if (host_byte(retval) == DID_NO_CONNECT)
                                return SCSI_DH_RES_TEMP_UNAVAIL;
        retval = submit_stpg(sdev, pg->group_id, &sense_hdr);
 
        if (retval) {
-               if (!scsi_sense_valid(&sense_hdr)) {
+               if (retval < 0 || !scsi_sense_valid(&sense_hdr)) {
                        sdev_printk(KERN_INFO, sdev,
                                    "%s: stpg failed, result %d",
                                    ALUA_DH_NAME, retval);
-                       if (driver_byte(retval) == DRIVER_ERROR)
+                       if (retval < 0)
                                return SCSI_DH_DEV_TEMP_BUSY;
                } else {
                        sdev_printk(KERN_INFO, sdev, "%s: stpg failed\n",