diff options
| author | Markus Elfring <elfring@users.sourceforge.net> | 2016-07-23 05:28:30 -0400 |
|---|---|---|
| committer | Doug Ledford <dledford@redhat.com> | 2016-08-03 21:03:35 -0400 |
| commit | 380bae5bf2fb6db2cde514e4878a7964dc06c1fa (patch) | |
| tree | c2b98847d7245e38e552660f0e3c476d604c81fa /drivers/infiniband/hw/mthca | |
| parent | 3491ab63b45ea9b485683574081ed8535d42f2da (diff) | |
IB/mthca: Clean up error unwind flow in mthca_reset()
The kfree() function was called in a few cases by the mthca_reset()
function during error handling even if the passed variables "bridge_header"
and "hca_header" contained a null pointer.
Adjust jump targets according to the Linux coding style convention.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/mthca')
| -rw-r--r-- | drivers/infiniband/hw/mthca/mthca_reset.c | 41 |
1 files changed, 20 insertions, 21 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_reset.c b/drivers/infiniband/hw/mthca/mthca_reset.c index c5216542477c..6727af27c017 100644 --- a/drivers/infiniband/hw/mthca/mthca_reset.c +++ b/drivers/infiniband/hw/mthca/mthca_reset.c | |||
| @@ -98,7 +98,7 @@ int mthca_reset(struct mthca_dev *mdev) | |||
| 98 | err = -ENOMEM; | 98 | err = -ENOMEM; |
| 99 | mthca_err(mdev, "Couldn't allocate memory to save HCA " | 99 | mthca_err(mdev, "Couldn't allocate memory to save HCA " |
| 100 | "PCI header, aborting.\n"); | 100 | "PCI header, aborting.\n"); |
| 101 | goto out; | 101 | goto put_dev; |
| 102 | } | 102 | } |
| 103 | 103 | ||
| 104 | for (i = 0; i < 64; ++i) { | 104 | for (i = 0; i < 64; ++i) { |
| @@ -108,7 +108,7 @@ int mthca_reset(struct mthca_dev *mdev) | |||
| 108 | err = -ENODEV; | 108 | err = -ENODEV; |
| 109 | mthca_err(mdev, "Couldn't save HCA " | 109 | mthca_err(mdev, "Couldn't save HCA " |
| 110 | "PCI header, aborting.\n"); | 110 | "PCI header, aborting.\n"); |
| 111 | goto out; | 111 | goto free_hca; |
| 112 | } | 112 | } |
| 113 | } | 113 | } |
| 114 | 114 | ||
| @@ -121,7 +121,7 @@ int mthca_reset(struct mthca_dev *mdev) | |||
| 121 | err = -ENOMEM; | 121 | err = -ENOMEM; |
| 122 | mthca_err(mdev, "Couldn't allocate memory to save HCA " | 122 | mthca_err(mdev, "Couldn't allocate memory to save HCA " |
| 123 | "bridge PCI header, aborting.\n"); | 123 | "bridge PCI header, aborting.\n"); |
| 124 | goto out; | 124 | goto free_hca; |
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | for (i = 0; i < 64; ++i) { | 127 | for (i = 0; i < 64; ++i) { |
| @@ -131,7 +131,7 @@ int mthca_reset(struct mthca_dev *mdev) | |||
| 131 | err = -ENODEV; | 131 | err = -ENODEV; |
| 132 | mthca_err(mdev, "Couldn't save HCA bridge " | 132 | mthca_err(mdev, "Couldn't save HCA bridge " |
| 133 | "PCI header, aborting.\n"); | 133 | "PCI header, aborting.\n"); |
| 134 | goto out; | 134 | goto free_bh; |
| 135 | } | 135 | } |
| 136 | } | 136 | } |
| 137 | bridge_pcix_cap = pci_find_capability(bridge, PCI_CAP_ID_PCIX); | 137 | bridge_pcix_cap = pci_find_capability(bridge, PCI_CAP_ID_PCIX); |
| @@ -139,7 +139,7 @@ int mthca_reset(struct mthca_dev *mdev) | |||
| 139 | err = -ENODEV; | 139 | err = -ENODEV; |
| 140 | mthca_err(mdev, "Couldn't locate HCA bridge " | 140 | mthca_err(mdev, "Couldn't locate HCA bridge " |
| 141 | "PCI-X capability, aborting.\n"); | 141 | "PCI-X capability, aborting.\n"); |
| 142 | goto out; | 142 | goto free_bh; |
| 143 | } | 143 | } |
| 144 | } | 144 | } |
| 145 | 145 | ||
| @@ -152,7 +152,7 @@ int mthca_reset(struct mthca_dev *mdev) | |||
| 152 | err = -ENOMEM; | 152 | err = -ENOMEM; |
| 153 | mthca_err(mdev, "Couldn't map HCA reset register, " | 153 | mthca_err(mdev, "Couldn't map HCA reset register, " |
| 154 | "aborting.\n"); | 154 | "aborting.\n"); |
| 155 | goto out; | 155 | goto free_bh; |
| 156 | } | 156 | } |
| 157 | 157 | ||
| 158 | writel(MTHCA_RESET_VALUE, reset); | 158 | writel(MTHCA_RESET_VALUE, reset); |
| @@ -172,7 +172,7 @@ int mthca_reset(struct mthca_dev *mdev) | |||
| 172 | err = -ENODEV; | 172 | err = -ENODEV; |
| 173 | mthca_err(mdev, "Couldn't access HCA after reset, " | 173 | mthca_err(mdev, "Couldn't access HCA after reset, " |
| 174 | "aborting.\n"); | 174 | "aborting.\n"); |
| 175 | goto out; | 175 | goto free_bh; |
| 176 | } | 176 | } |
| 177 | 177 | ||
| 178 | if (v != 0xffffffff) | 178 | if (v != 0xffffffff) |
| @@ -184,7 +184,7 @@ int mthca_reset(struct mthca_dev *mdev) | |||
| 184 | err = -ENODEV; | 184 | err = -ENODEV; |
| 185 | mthca_err(mdev, "PCI device did not come back after reset, " | 185 | mthca_err(mdev, "PCI device did not come back after reset, " |
| 186 | "aborting.\n"); | 186 | "aborting.\n"); |
| 187 | goto out; | 187 | goto free_bh; |
| 188 | } | 188 | } |
| 189 | 189 | ||
| 190 | good: | 190 | good: |
| @@ -195,14 +195,14 @@ good: | |||
| 195 | err = -ENODEV; | 195 | err = -ENODEV; |
| 196 | mthca_err(mdev, "Couldn't restore HCA bridge Upstream " | 196 | mthca_err(mdev, "Couldn't restore HCA bridge Upstream " |
| 197 | "split transaction control, aborting.\n"); | 197 | "split transaction control, aborting.\n"); |
| 198 | goto out; | 198 | goto free_bh; |
| 199 | } | 199 | } |
| 200 | if (pci_write_config_dword(bridge, bridge_pcix_cap + 0xc, | 200 | if (pci_write_config_dword(bridge, bridge_pcix_cap + 0xc, |
| 201 | bridge_header[(bridge_pcix_cap + 0xc) / 4])) { | 201 | bridge_header[(bridge_pcix_cap + 0xc) / 4])) { |
| 202 | err = -ENODEV; | 202 | err = -ENODEV; |
| 203 | mthca_err(mdev, "Couldn't restore HCA bridge Downstream " | 203 | mthca_err(mdev, "Couldn't restore HCA bridge Downstream " |
| 204 | "split transaction control, aborting.\n"); | 204 | "split transaction control, aborting.\n"); |
| 205 | goto out; | 205 | goto free_bh; |
| 206 | } | 206 | } |
| 207 | /* | 207 | /* |
| 208 | * Bridge control register is at 0x3e, so we'll | 208 | * Bridge control register is at 0x3e, so we'll |
| @@ -216,7 +216,7 @@ good: | |||
| 216 | err = -ENODEV; | 216 | err = -ENODEV; |
| 217 | mthca_err(mdev, "Couldn't restore HCA bridge reg %x, " | 217 | mthca_err(mdev, "Couldn't restore HCA bridge reg %x, " |
| 218 | "aborting.\n", i); | 218 | "aborting.\n", i); |
| 219 | goto out; | 219 | goto free_bh; |
| 220 | } | 220 | } |
| 221 | } | 221 | } |
| 222 | 222 | ||
| @@ -225,7 +225,7 @@ good: | |||
| 225 | err = -ENODEV; | 225 | err = -ENODEV; |
| 226 | mthca_err(mdev, "Couldn't restore HCA bridge COMMAND, " | 226 | mthca_err(mdev, "Couldn't restore HCA bridge COMMAND, " |
| 227 | "aborting.\n"); | 227 | "aborting.\n"); |
| 228 | goto out; | 228 | goto free_bh; |
| 229 | } | 229 | } |
| 230 | } | 230 | } |
| 231 | 231 | ||
| @@ -235,7 +235,7 @@ good: | |||
| 235 | err = -ENODEV; | 235 | err = -ENODEV; |
| 236 | mthca_err(mdev, "Couldn't restore HCA PCI-X " | 236 | mthca_err(mdev, "Couldn't restore HCA PCI-X " |
| 237 | "command register, aborting.\n"); | 237 | "command register, aborting.\n"); |
| 238 | goto out; | 238 | goto free_bh; |
| 239 | } | 239 | } |
| 240 | } | 240 | } |
| 241 | 241 | ||
| @@ -246,7 +246,7 @@ good: | |||
| 246 | err = -ENODEV; | 246 | err = -ENODEV; |
| 247 | mthca_err(mdev, "Couldn't restore HCA PCI Express " | 247 | mthca_err(mdev, "Couldn't restore HCA PCI Express " |
| 248 | "Device Control register, aborting.\n"); | 248 | "Device Control register, aborting.\n"); |
| 249 | goto out; | 249 | goto free_bh; |
| 250 | } | 250 | } |
| 251 | linkctl = hca_header[(hca_pcie_cap + PCI_EXP_LNKCTL) / 4]; | 251 | linkctl = hca_header[(hca_pcie_cap + PCI_EXP_LNKCTL) / 4]; |
| 252 | if (pcie_capability_write_word(mdev->pdev, PCI_EXP_LNKCTL, | 252 | if (pcie_capability_write_word(mdev->pdev, PCI_EXP_LNKCTL, |
| @@ -254,7 +254,7 @@ good: | |||
| 254 | err = -ENODEV; | 254 | err = -ENODEV; |
| 255 | mthca_err(mdev, "Couldn't restore HCA PCI Express " | 255 | mthca_err(mdev, "Couldn't restore HCA PCI Express " |
| 256 | "Link control register, aborting.\n"); | 256 | "Link control register, aborting.\n"); |
| 257 | goto out; | 257 | goto free_bh; |
| 258 | } | 258 | } |
| 259 | } | 259 | } |
| 260 | 260 | ||
| @@ -266,7 +266,7 @@ good: | |||
| 266 | err = -ENODEV; | 266 | err = -ENODEV; |
| 267 | mthca_err(mdev, "Couldn't restore HCA reg %x, " | 267 | mthca_err(mdev, "Couldn't restore HCA reg %x, " |
| 268 | "aborting.\n", i); | 268 | "aborting.\n", i); |
| 269 | goto out; | 269 | goto free_bh; |
| 270 | } | 270 | } |
| 271 | } | 271 | } |
| 272 | 272 | ||
| @@ -275,13 +275,12 @@ good: | |||
| 275 | err = -ENODEV; | 275 | err = -ENODEV; |
| 276 | mthca_err(mdev, "Couldn't restore HCA COMMAND, " | 276 | mthca_err(mdev, "Couldn't restore HCA COMMAND, " |
| 277 | "aborting.\n"); | 277 | "aborting.\n"); |
| 278 | goto out; | ||
| 279 | } | 278 | } |
| 280 | 279 | free_bh: | |
| 281 | out: | ||
| 282 | pci_dev_put(bridge); | ||
| 283 | kfree(bridge_header); | 280 | kfree(bridge_header); |
| 281 | free_hca: | ||
| 284 | kfree(hca_header); | 282 | kfree(hca_header); |
| 285 | 283 | put_dev: | |
| 284 | pci_dev_put(bridge); | ||
| 286 | return err; | 285 | return err; |
| 287 | } | 286 | } |
