]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ata: libata-sata: Disallow changing LPM state if not supported
authorDamien Le Moal <dlemoal@kernel.org>
Tue, 1 Jul 2025 12:53:16 +0000 (21:53 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Aug 2025 14:22:40 +0000 (16:22 +0200)
[ Upstream commit 413e800cadbf67550d76c77c230b2ecd96bce83a ]

Modify ata_scsi_lpm_store() to return an error if a user attempts to set
a link power management policy for a port that does not support LPM,
that is, ports flagged with ATA_FLAG_NO_LPM.

Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Niklas Cassel <cassel@kernel.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Link: https://lore.kernel.org/r/20250701125321.69496-6-dlemoal@kernel.org
Signed-off-by: Niklas Cassel <cassel@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/ata/libata-sata.c

index 45656067c547a8b506631be099f3bfb02f29d1ff..d5c97dba2dd4198adbb7bfc5d923d9cd33a10e48 100644 (file)
@@ -815,6 +815,11 @@ static ssize_t ata_scsi_lpm_store(struct device *device,
 
        spin_lock_irqsave(ap->lock, flags);
 
+       if (ap->flags & ATA_FLAG_NO_LPM) {
+               count = -EOPNOTSUPP;
+               goto out_unlock;
+       }
+
        ata_for_each_link(link, ap, EDGE) {
                ata_for_each_dev(dev, &ap->link, ENABLED) {
                        if (dev->horkage & ATA_HORKAGE_NOLPM) {