@@ -242,10 +242,17 @@ void ata_scsi_set_sense_information(struct ata_device *dev,
242
242
*/
243
243
static void ata_scsi_set_passthru_sense_fields (struct ata_queued_cmd * qc )
244
244
{
245
+ struct ata_device * dev = qc -> dev ;
245
246
struct scsi_cmnd * cmd = qc -> scsicmd ;
246
247
struct ata_taskfile * tf = & qc -> result_tf ;
247
248
unsigned char * sb = cmd -> sense_buffer ;
248
249
250
+ if (!(qc -> flags & ATA_QCFLAG_RTF_FILLED )) {
251
+ ata_dev_dbg (dev ,
252
+ "missing result TF: can't set ATA PT sense fields\n" );
253
+ return ;
254
+ }
255
+
249
256
if ((sb [0 ] & 0x7f ) >= 0x72 ) {
250
257
unsigned char * desc ;
251
258
u8 len ;
@@ -923,10 +930,17 @@ static void ata_to_sense_error(u8 drv_stat, u8 drv_err, u8 *sk, u8 *asc,
923
930
*/
924
931
static void ata_gen_passthru_sense (struct ata_queued_cmd * qc )
925
932
{
933
+ struct ata_device * dev = qc -> dev ;
926
934
struct scsi_cmnd * cmd = qc -> scsicmd ;
927
935
struct ata_taskfile * tf = & qc -> result_tf ;
928
936
u8 sense_key , asc , ascq ;
929
937
938
+ if (!(qc -> flags & ATA_QCFLAG_RTF_FILLED )) {
939
+ ata_dev_dbg (dev ,
940
+ "missing result TF: can't generate ATA PT sense data\n" );
941
+ return ;
942
+ }
943
+
930
944
/*
931
945
* Use ata_to_sense_error() to map status register bits
932
946
* onto sense key, asc & ascq.
@@ -967,6 +981,13 @@ static void ata_gen_ata_sense(struct ata_queued_cmd *qc)
967
981
ata_scsi_set_sense (dev , cmd , NOT_READY , 0x04 , 0x21 );
968
982
return ;
969
983
}
984
+
985
+ if (!(qc -> flags & ATA_QCFLAG_RTF_FILLED )) {
986
+ ata_dev_dbg (dev ,
987
+ "missing result TF: can't generate sense data\n" );
988
+ return ;
989
+ }
990
+
970
991
/* Use ata_to_sense_error() to map status register bits
971
992
* onto sense key, asc & ascq.
972
993
*/
0 commit comments