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

Commit cce13ff7 authored by Chris Wilson's avatar Chris Wilson Committed by Dave Airlie
Browse files

drm: Propagate error code from fb_create()



Change the interface to expect a PTR_ERR specifing the real error code
as opposed to assuming a NULL return => -EINVAL. Just once the user may
not be at fault!

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 0d18abed
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1682,9 +1682,9 @@ int drm_mode_addfb(struct drm_device *dev,
	/* TODO setup destructor callback */

	fb = dev->mode_config.funcs->fb_create(dev, file_priv, r);
	if (!fb) {
	if (IS_ERR(fb)) {
		DRM_ERROR("could not create framebuffer\n");
		ret = -EINVAL;
		ret = PTR_ERR(fb);
		goto out;
	}

+3 −3
Original line number Diff line number Diff line
@@ -5312,18 +5312,18 @@ intel_user_framebuffer_create(struct drm_device *dev,

	obj = drm_gem_object_lookup(dev, filp, mode_cmd->handle);
	if (!obj)
		return NULL;
		return ERR_PTR(-ENOENT);

	intel_fb = kzalloc(sizeof(*intel_fb), GFP_KERNEL);
	if (!intel_fb)
		return NULL;
		return ERR_PTR(-ENOMEM);

	ret = intel_framebuffer_init(dev, intel_fb,
				     mode_cmd, obj);
	if (ret) {
		drm_gem_object_unreference_unlocked(obj);
		kfree(intel_fb);
		return NULL;
		return ERR_PTR(ret);
	}

	return &intel_fb->base;
+3 −1
Original line number Diff line number Diff line
@@ -119,7 +119,9 @@ static int intelfb_create(struct intel_fbdev *ifbdev,

	info->par = ifbdev;

	intel_framebuffer_init(dev, &ifbdev->ifb, &mode_cmd, fbo);
	ret = intel_framebuffer_init(dev, &ifbdev->ifb, &mode_cmd, fbo);
	if (ret)
		goto out_unpin;

	fb = &ifbdev->ifb.base;

+3 −3
Original line number Diff line number Diff line
@@ -84,16 +84,16 @@ nouveau_user_framebuffer_create(struct drm_device *dev,

	gem = drm_gem_object_lookup(dev, file_priv, mode_cmd->handle);
	if (!gem)
		return NULL;
		return ERR_PTR(-ENOENT);

	nouveau_fb = kzalloc(sizeof(struct nouveau_framebuffer), GFP_KERNEL);
	if (!nouveau_fb)
		return NULL;
		return ERR_PTR(-ENOMEM);

	ret = nouveau_framebuffer_init(dev, nouveau_fb, mode_cmd, nouveau_gem_object(gem));
	if (ret) {
		drm_gem_object_unreference(gem);
		return NULL;
		return ERR_PTR(ret);
	}

	return &nouveau_fb->base;
+3 −4
Original line number Diff line number Diff line
@@ -888,13 +888,12 @@ radeon_user_framebuffer_create(struct drm_device *dev,
	if (obj ==  NULL) {
		dev_err(&dev->pdev->dev, "No GEM object associated to handle 0x%08X, "
			"can't create framebuffer\n", mode_cmd->handle);
		return NULL;
		return ERR_PTR(-ENOENT);
	}

	radeon_fb = kzalloc(sizeof(*radeon_fb), GFP_KERNEL);
	if (radeon_fb == NULL) {
		return NULL;
	}
	if (radeon_fb == NULL)
		return ERR_PTR(-ENOMEM);

	radeon_framebuffer_init(dev, radeon_fb, mode_cmd, obj);

Loading