struct scsi_mode_data data;
        struct scsi_sense_hdr sshdr;
        static const char temp[] = "temporary ";
-       int len;
+       int len, ret;
 
        if (sdp->type != TYPE_DISK && sdp->type != TYPE_ZBC)
                /* no cache control on RBC devices; theoretically they
         */
        data.device_specific = 0;
 
-       if (scsi_mode_select(sdp, 1, sp, buffer_data, len, SD_TIMEOUT,
-                            sdkp->max_retries, &data, &sshdr)) {
-               if (scsi_sense_valid(&sshdr))
+       ret = scsi_mode_select(sdp, 1, sp, buffer_data, len, SD_TIMEOUT,
+                              sdkp->max_retries, &data, &sshdr);
+       if (ret) {
+               if (ret > 0 && scsi_sense_valid(&sshdr))
                        sd_print_sense_hdr(sdkp, &sshdr);
                return -EINVAL;
        }