Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -985,7 +985,7 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev)
{
	struct fb_info *info;
	struct ps3fb_par *par;
	int retval = -ENOMEM;
	int retval;
	u64 ddr_lpar = 0;
	u64 lpar_dma_control = 0;
	u64 lpar_driver_info = 0;
@@ -1003,8 +1003,8 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev)
		return -ENOMEM;
	}

	status = ps3_open_hv_device(dev);
	if (status) {
	retval = ps3_open_hv_device(dev);
	if (retval) {
		dev_err(&dev->core, "%s: ps3_open_hv_device failed\n",
			__func__);
		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: "
			"%d\n",
			__func__, status);
		goto err;
		retval = -ENODEV;
		goto err_close_device;
	}
#endif
#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: "
			"%d\n",
			__func__, status);
		goto err;
		retval = -ENODEV;
		goto err_close_device;
	}
#endif

@@ -1057,7 +1059,7 @@ static int __devinit ps3fb_probe(struct ps3_system_bus_device *dev)
	if (status) {
		dev_err(&dev->core, "%s: lv1_gpu_memory_allocate failed: %d\n",
			__func__, status);
		goto err;
		goto err_close_device;
	}
	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)
	lv1_gpu_context_free(ps3fb.context_handle);
err_gpu_memory_free:
	lv1_gpu_memory_free(ps3fb.memory_handle);
err_close_device:
	ps3_close_hv_device(dev);
err:
	return retval;
}