PCI: Improve __pci_read_base() robustness
authorMarc Gonzalez <marc_gonzalez@sigmadesigns.com>
Mon, 10 Apr 2017 17:46:54 +0000 (19:46 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 18 Apr 2017 19:11:10 +0000 (14:11 -0500)
Local variables 'l' and 'sz' are uninitialized.  Normally, they would
be initialized by pci_read_config_dword() but when an error occurs,
some drivers immediately return an error code, which leaves the
argument uninitialized.

Provide a safe initial value to make the code more robust.

Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/probe.c

index dfc9a27941418976c0fadee7e6628531fbb47613..f2bd0024cb880cc979ed2dcc1174aa30cadfe708 100644 (file)
@@ -175,7 +175,7 @@ static inline unsigned long decode_bar(struct pci_dev *dev, u32 bar)
 int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
                    struct resource *res, unsigned int pos)
 {
-       u32 l, sz, mask;
+       u32 l = 0, sz = 0, mask;
        u64 l64, sz64, mask64;
        u16 orig_cmd;
        struct pci_bus_region region, inverted_region;