ata: libata: ata_{sff|std}_prereset() always return 0
authorSergey Shtylyov <s.shtylyov@omp.ru>
Wed, 2 Feb 2022 20:07:45 +0000 (23:07 +0300)
committerDamien Le Moal <damien.lemoal@opensource.wdc.com>
Thu, 3 Feb 2022 00:04:33 +0000 (09:04 +0900)
ata_std_prereset() always returns 0, hence the check in ata_sff_prereset()
is pointless and thus it also can return only 0 (however, we cannot change
the prototypes of ata_{sff|std}_prereset() as they implement the driver's
prereset() method).

Found by Linux Verification Center (linuxtesting.org) with the SVACE static
analysis tool.

Signed-off-by: Sergey Shtylyov <s.shtylyov@omp.ru>
Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
drivers/ata/libata-core.c
drivers/ata/libata-sff.c

index 67f8802..3ceda1f 100644 (file)
@@ -3568,7 +3568,7 @@ EXPORT_SYMBOL_GPL(ata_wait_after_reset);
  *     Kernel thread context (may sleep)
  *
  *     RETURNS:
- *     0 on success, -errno otherwise.
+ *     Always 0.
  */
 int ata_std_prereset(struct ata_link *link, unsigned long deadline)
 {
index 7521782..c9dbfb3 100644 (file)
@@ -1708,16 +1708,15 @@ EXPORT_SYMBOL_GPL(ata_sff_thaw);
  *     Kernel thread context (may sleep)
  *
  *     RETURNS:
- *     0 on success, -errno otherwise.
+ *     Always 0.
  */
 int ata_sff_prereset(struct ata_link *link, unsigned long deadline)
 {
        struct ata_eh_context *ehc = &link->eh_context;
        int rc;
 
-       rc = ata_std_prereset(link, deadline);
-       if (rc)
-               return rc;
+       /* The standard prereset is best-effort and always returns 0 */
+       ata_std_prereset(link, deadline);
 
        /* if we're about to do hardreset, nothing more to do */
        if (ehc->i.action & ATA_EH_HARDRESET)