aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/mthca
diff options
context:
space:
mode:
authorMarkus Elfring <elfring@users.sourceforge.net>2016-07-23 05:28:30 -0400
committerDoug Ledford <dledford@redhat.com>2016-08-03 21:03:35 -0400
commit380bae5bf2fb6db2cde514e4878a7964dc06c1fa (patch)
treec2b98847d7245e38e552660f0e3c476d604c81fa /drivers/infiniband/hw/mthca
parent3491ab63b45ea9b485683574081ed8535d42f2da (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.c41
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
190good: 190good:
@@ -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 279free_bh:
281out:
282 pci_dev_put(bridge);
283 kfree(bridge_header); 280 kfree(bridge_header);
281free_hca:
284 kfree(hca_header); 282 kfree(hca_header);
285 283put_dev:
284 pci_dev_put(bridge);
286 return err; 285 return err;
287} 286}