forked from mirrors/linux
		
	ata: libata: add missing ata_identify_page_supported() calls
ata_dev_config_ncq_prio() and ata_dev_config_devslp() both access pages of the IDENTIFY DEVICE data log. Before calling ata_read_log_page(), make sure to check for the existence of the IDENTIFY DEVICE data log and of the log page accessed using ata_identify_page_supported(). This avoids useless error messages from ata_read_log_page() and failures with some LLDD scsi drivers using libsas. Reported-by: Nikolay <knv418@gmail.com> Cc: stable@kernel.org # 5.15 Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com> Tested-by: Matthew Perkowski <mgperkow@gmail.com>
This commit is contained in:
		
							parent
							
								
									23ef63d5e1
								
							
						
					
					
						commit
						06f6c4c6c3
					
				
					 1 changed files with 5 additions and 1 deletions
				
			
		|  | @ -2178,6 +2178,9 @@ static void ata_dev_config_ncq_prio(struct ata_device *dev) | |||
| 	struct ata_port *ap = dev->link->ap; | ||||
| 	unsigned int err_mask; | ||||
| 
 | ||||
| 	if (!ata_identify_page_supported(dev, ATA_LOG_SATA_SETTINGS)) | ||||
| 		return; | ||||
| 
 | ||||
| 	err_mask = ata_read_log_page(dev, | ||||
| 				     ATA_LOG_IDENTIFY_DEVICE, | ||||
| 				     ATA_LOG_SATA_SETTINGS, | ||||
|  | @ -2454,7 +2457,8 @@ static void ata_dev_config_devslp(struct ata_device *dev) | |||
| 	 * Check device sleep capability. Get DevSlp timing variables | ||||
| 	 * from SATA Settings page of Identify Device Data Log. | ||||
| 	 */ | ||||
| 	if (!ata_id_has_devslp(dev->id)) | ||||
| 	if (!ata_id_has_devslp(dev->id) || | ||||
| 	    !ata_identify_page_supported(dev, ATA_LOG_SATA_SETTINGS)) | ||||
| 		return; | ||||
| 
 | ||||
| 	err_mask = ata_read_log_page(dev, | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Damien Le Moal
						Damien Le Moal