From: Niklas Cassel Date: Thu, 15 May 2025 13:56:24 +0000 (+0200) Subject: ata: libata-eh: Add ata_eh_set_lpm() WARN_ON_ONCE X-Git-Tag: v6.16-rc1~65^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=62eef53ab5ede2dba18ce4c5e7d031e05ab74025;p=thirdparty%2Flinux.git ata: libata-eh: Add ata_eh_set_lpm() WARN_ON_ONCE link->lpm_policy is initialized to ATA_LPM_UNKNOWN in ata_eh_reset(). ata_eh_set_lpm() is then only called if link->lpm_policy != ap->target_lpm_policy (after reset) and then only if link->lpm_policy > ATA_LPM_MAX_POWER (before revalidation). This means that ata_eh_set_lpm() is currently never called with policy == ATA_LPM_UNKNOWN. Add a WARN_ON_ONCE so that it is more obvious from reading the code that this function is never called with policy == ATA_LPM_UNKNOWN. Signed-off-by: Niklas Cassel Signed-off-by: Damien Le Moal --- diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index f39756a267514..89b7b2139a163 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c @@ -3442,6 +3442,13 @@ static int ata_eh_set_lpm(struct ata_link *link, enum ata_lpm_policy policy, (link->flags & ATA_LFLAG_NO_LPM) || (ap && !ap->ops->set_lpm)) return 0; + /* + * This function currently assumes that it will never be supplied policy + * ATA_LPM_UNKNOWN. + */ + if (WARN_ON_ONCE(policy == ATA_LPM_UNKNOWN)) + return 0; + /* * DIPM is enabled only for ATA_LPM_MIN_POWER, * ATA_LPM_MIN_POWER_WITH_PARTIAL, and ATA_LPM_MED_POWER_WITH_DIPM, as