Re: [PATCH v2 1/2] ata: libata-core: Skip HPA resize for locked drives

Damien Le Moal <[email protected]> Tue, 7 Jul 2026 15:02:24 +0900
Newsgroups org.kernel.vger.linux-ide,org.kernel.vger.linux-kernel
Organization Western Digital Research
Message-ID <[email protected]>
On 7/7/26 06:00, TJ Adams wrote:
> Skip HPA resize in ata_hpa_resize() if the drive is security locked.
> If the drive is locked, the command to read the native max address
> fails with -EACCES, which currently causes the sticky quirk
> ATA_QUIRK_BROKEN_HPA to be set on the device.
> 
> Setting this sticky quirk causes subsequent revalidations (after the
> drive is unlocked) to bypass HPA checks, preventing the unlocked drive
> from exposing its full native capacity without a reboot or device removal.
> 
> Signed-off-by: Terrence Adams <[email protected]>

Doesn't this need the same fixes tag as patch 2 ?

> ---
>  drivers/ata/libata-core.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
> index bdc88cf74709..3c06a15952f8 100644
> --- a/drivers/ata/libata-core.c
> +++ b/drivers/ata/libata-core.c
> @@ -1338,7 +1338,7 @@ static int ata_hpa_resize(struct ata_device *dev)
>  	/* do we need to do it? */
>  	if ((dev->class != ATA_DEV_ATA && dev->class != ATA_DEV_ZAC) ||
>  	    !ata_id_has_lba(dev->id) || !ata_id_hpa_enabled(dev->id) ||
> -	    (dev->quirks & ATA_QUIRK_BROKEN_HPA))
> +	    (dev->quirks & ATA_QUIRK_BROKEN_HPA) || ata_id_is_locked(dev->id))
>  		return 0;
>  
>  	/* read native max address */


-- 
Damien Le Moal
Western Digital Research