| From 14d03024780d92ce0e9c3c7ed6011e44d4f40ec3 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 1 Jul 2025 21:53:16 +0900 |
| Subject: ata: libata-sata: Disallow changing LPM state if not supported |
| |
| From: Damien Le Moal <dlemoal@kernel.org> |
| |
| [ 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 | 5 +++++ |
| 1 file changed, 5 insertions(+) |
| |
| diff --git a/drivers/ata/libata-sata.c b/drivers/ata/libata-sata.c |
| index 71a00842eb5e..b75999388bf0 100644 |
| --- a/drivers/ata/libata-sata.c |
| +++ b/drivers/ata/libata-sata.c |
| @@ -812,6 +812,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) { |
| -- |
| 2.39.5 |
| |