diff options
| author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-12-13 23:07:50 +0100 | 
|---|---|---|
| committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-01-20 15:57:57 +0100 | 
| commit | af26ef3b3978349cfbd864163a6ebb4906b733b5 (patch) | |
| tree | 38efb55b2aac85582180caa018c26b7c3202e77c /drivers/gpu/drm/drm_crtc.c | |
| parent | 0ae6d7bc0e70dafc1739d50b2b8d9d7c61968395 (diff) | |
| download | olio-linux-3.10-af26ef3b3978349cfbd864163a6ebb4906b733b5.tar.xz olio-linux-3.10-af26ef3b3978349cfbd864163a6ebb4906b733b5.zip  | |
drm/<drivers>: Unified handling of unimplemented fb->create_handle
Some drivers don't have real ->create_handle callbacks.
- cirrus/ast/mga200: Returns either 0 or -EINVAL.
- udl: Didn't even bother with a callback, leading to a nice
  userspace-triggerable OOPS.
- vmwgfx: This driver bothered with an implementation to return 0 as
  the handle (which is the canonical no-obj gem handle).
All have in common that ->create_handle doesn't really make too much
sense for them - that ioctl is used only for seamless fb takeover in
the radeon/nouveau/i915 ddx drivers. So allow drivers to not implement
this and return a consistent -ENODEV.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
| -rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 5 | 
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 8d665fafc15..a9abf49bb3e 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -2384,7 +2384,10 @@ int drm_mode_getfb(struct drm_device *dev,  	r->depth = fb->depth;  	r->bpp = fb->bits_per_pixel;  	r->pitch = fb->pitches[0]; -	fb->funcs->create_handle(fb, file_priv, &r->handle); +	if (fb->funcs->create_handle) +		ret = fb->funcs->create_handle(fb, file_priv, &r->handle); +	else +		ret = -ENODEV;  out:  	mutex_unlock(&dev->mode_config.mutex);  |