Commit ca971ea3 authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by Benjamin Herrenschmidt

ps3fb: Correct handling of device opening in ps3fb_probe()

- ps3_open_hv_device() returns a standard error value,
  - Add missing call to ps3_close_hv_device() in the error path.
Signed-off-by: default avatarGeert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
Cc: linux-fbdev-devel@lists.sourceforge.net
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent bb94f077
...@@ -985,7 +985,7 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev) ...@@ -985,7 +985,7 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev)
{ {
struct fb_info *info; struct fb_info *info;
struct ps3fb_par *par; struct ps3fb_par *par;
int retval = -ENOMEM; int retval;
u64 ddr_lpar = 0; u64 ddr_lpar = 0;
u64 lpar_dma_control = 0; u64 lpar_dma_control = 0;
u64 lpar_driver_info = 0; u64 lpar_driver_info = 0;
...@@ -1003,8 +1003,8 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev) ...@@ -1003,8 +1003,8 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev)
return -ENOMEM; return -ENOMEM;
} }
status = ps3_open_hv_device(dev); retval = ps3_open_hv_device(dev);
if (status) { if (retval) {
dev_err(&dev->core, "%s: ps3_open_hv_device failed\n", dev_err(&dev->core, "%s: ps3_open_hv_device failed\n",
__func__); __func__);
goto err; goto err;
...@@ -1027,7 +1027,8 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev) ...@@ -1027,7 +1027,8 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev)
"%s: lv1_gpu_context_attribute DISPLAY_SYNC failed: " "%s: lv1_gpu_context_attribute DISPLAY_SYNC failed: "
"%d\n", "%d\n",
__func__, status); __func__, status);
goto err; retval = -ENODEV;
goto err_close_device;
} }
#endif #endif
#ifdef HEAD_B #ifdef HEAD_B
...@@ -1040,7 +1041,8 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev) ...@@ -1040,7 +1041,8 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev)
"%s: lv1_gpu_context_attribute DISPLAY_SYNC failed: " "%s: lv1_gpu_context_attribute DISPLAY_SYNC failed: "
"%d\n", "%d\n",
__func__, status); __func__, status);
goto err; retval = -ENODEV;
goto err_close_device;
} }
#endif #endif
...@@ -1057,7 +1059,7 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev) ...@@ -1057,7 +1059,7 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev)
if (status) { if (status) {
dev_err(&dev->core, "%s: lv1_gpu_memory_allocate failed: %d\n", dev_err(&dev->core, "%s: lv1_gpu_memory_allocate failed: %d\n",
__func__, status); __func__, status);
goto err; goto err_close_device;
} }
dev_dbg(&dev->core, "ddr:lpar:0x%llx\n", ddr_lpar); dev_dbg(&dev->core, "ddr:lpar:0x%llx\n", ddr_lpar);
...@@ -1221,6 +1223,8 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev) ...@@ -1221,6 +1223,8 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev)
lv1_gpu_context_free(ps3fb.context_handle); lv1_gpu_context_free(ps3fb.context_handle);
err_gpu_memory_free: err_gpu_memory_free:
lv1_gpu_memory_free(ps3fb.memory_handle); lv1_gpu_memory_free(ps3fb.memory_handle);
err_close_device:
ps3_close_hv_device(dev);
err: err:
return retval; return retval;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment