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: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> Cc: linux-fbdev-devel@lists.sourceforge.net Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
committed by
Benjamin Herrenschmidt
parent
bb94f077e5
commit
ca971ea39f
@@ -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)
|
|||||||
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)
|
|||||||
"%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)
|
|||||||
"%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)
|
|||||||
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 @@ err_gpu_context_free:
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user