PCI: pciehp: Refactor infinite loop in pcie_poll_cmd()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 8 Nov 2019 11:18:55 +0000 (13:18 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 12 Nov 2019 00:15:36 +0000 (18:15 -0600)
Infinite timeout loops are hard to read. Refactor it to plausible 'do {}
while ()'.

Note, the supplied timeout can't be negative for current use, though if
it's not dividable to 10, we may go below 0, that's why type of the
parameter is int. And thus, we may move the check to the loop condition.

No functional change intended.

Link: https://lore.kernel.org/r/20191108111855.85866-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Andrew Murray <andrew.murray@arm.com>
drivers/pci/hotplug/pciehp_hpc.c

index 86d97f3112f023086ffd591f06387dd5c3021119..764384153c7df771a4b714f4c336786e0e2bfd68 100644 (file)
@@ -68,7 +68,7 @@ static int pcie_poll_cmd(struct controller *ctrl, int timeout)
        struct pci_dev *pdev = ctrl_dev(ctrl);
        u16 slot_status;
 
-       while (true) {
+       do {
                pcie_capability_read_word(pdev, PCI_EXP_SLTSTA, &slot_status);
                if (slot_status == (u16) ~0) {
                        ctrl_info(ctrl, "%s: no response from device\n",
@@ -81,11 +81,9 @@ static int pcie_poll_cmd(struct controller *ctrl, int timeout)
                                                   PCI_EXP_SLTSTA_CC);
                        return 1;
                }
-               if (timeout < 0)
-                       break;
                msleep(10);
                timeout -= 10;
-       }
+       } while (timeout >= 0);
        return 0;       /* timeout */
 }