Re: [PATCH 3/4] drm: Reshuffle getfb error returns

2018-03-23 Thread Ville Syrjälä
On Fri, Mar 23, 2018 at 01:45:51PM +, Daniel Stone wrote:
> Make it a little more clear what's going on inside of getfb, and also
> make it easier to add alternate paths to get a handle in future.
> 
> Signed-off-by: Daniel Stone 

Much better.
Reviewed-by: Ville Syrjälä 

> ---
>  drivers/gpu/drm/drm_framebuffer.c | 33 +
>  1 file changed, 17 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_framebuffer.c 
> b/drivers/gpu/drm/drm_framebuffer.c
> index ad67203de715..6d5ff541225a 100644
> --- a/drivers/gpu/drm/drm_framebuffer.c
> +++ b/drivers/gpu/drm/drm_framebuffer.c
> @@ -468,29 +468,30 @@ int drm_mode_getfb(struct drm_device *dev,
>   goto out;
>   }
>  
> + if (!fb->funcs->create_handle) {
> + ret = -ENODEV;
> + goto out;
> + }
> +
>   r->height = fb->height;
>   r->width = fb->width;
>   r->depth = fb->format->depth;
>   r->bpp = fb->format->cpp[0] * 8;
>   r->pitch = fb->pitches[0];
> - if (fb->funcs->create_handle) {
> - if (drm_is_current_master(file_priv) || capable(CAP_SYS_ADMIN) 
> ||
> - drm_is_control_client(file_priv)) {
> - ret = fb->funcs->create_handle(fb, file_priv,
> -&r->handle);
> - } else {
> - /* GET_FB() is an unprivileged ioctl so we must not
> -  * return a buffer-handle to non-master processes! For
> -  * backwards-compatibility reasons, we cannot make
> -  * GET_FB() privileged, so just return an invalid handle
> -  * for non-masters. */
> - r->handle = 0;
> - ret = 0;
> - }
> - } else {
> - ret = -ENODEV;
> +
> + /* GET_FB() is an unprivileged ioctl so we must not return a
> +  * buffer-handle to non-master processes! For
> +  * backwards-compatibility reasons, we cannot make GET_FB() privileged,
> +  * so just return an invalid handle for non-masters. */
> + if (!drm_is_current_master(file_priv) && !capable(CAP_SYS_ADMIN) &&
> + !drm_is_control_client(file_priv)) {
> + r->handle = 0;
> + ret = 0;
> + goto out;
>   }
>  
> + ret = fb->funcs->create_handle(fb, file_priv, &r->handle);
> +
>  out:
>   drm_framebuffer_put(fb);
>  
> -- 
> 2.16.2
> 
> ___
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Ville Syrjälä
Intel OTC
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 3/4] drm: Reshuffle getfb error returns

2018-03-23 Thread Daniel Stone
Make it a little more clear what's going on inside of getfb, and also
make it easier to add alternate paths to get a handle in future.

Signed-off-by: Daniel Stone 
---
 drivers/gpu/drm/drm_framebuffer.c | 33 +
 1 file changed, 17 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/drm_framebuffer.c 
b/drivers/gpu/drm/drm_framebuffer.c
index ad67203de715..6d5ff541225a 100644
--- a/drivers/gpu/drm/drm_framebuffer.c
+++ b/drivers/gpu/drm/drm_framebuffer.c
@@ -468,29 +468,30 @@ int drm_mode_getfb(struct drm_device *dev,
goto out;
}
 
+   if (!fb->funcs->create_handle) {
+   ret = -ENODEV;
+   goto out;
+   }
+
r->height = fb->height;
r->width = fb->width;
r->depth = fb->format->depth;
r->bpp = fb->format->cpp[0] * 8;
r->pitch = fb->pitches[0];
-   if (fb->funcs->create_handle) {
-   if (drm_is_current_master(file_priv) || capable(CAP_SYS_ADMIN) 
||
-   drm_is_control_client(file_priv)) {
-   ret = fb->funcs->create_handle(fb, file_priv,
-  &r->handle);
-   } else {
-   /* GET_FB() is an unprivileged ioctl so we must not
-* return a buffer-handle to non-master processes! For
-* backwards-compatibility reasons, we cannot make
-* GET_FB() privileged, so just return an invalid handle
-* for non-masters. */
-   r->handle = 0;
-   ret = 0;
-   }
-   } else {
-   ret = -ENODEV;
+
+   /* GET_FB() is an unprivileged ioctl so we must not return a
+* buffer-handle to non-master processes! For
+* backwards-compatibility reasons, we cannot make GET_FB() privileged,
+* so just return an invalid handle for non-masters. */
+   if (!drm_is_current_master(file_priv) && !capable(CAP_SYS_ADMIN) &&
+   !drm_is_control_client(file_priv)) {
+   r->handle = 0;
+   ret = 0;
+   goto out;
}
 
+   ret = fb->funcs->create_handle(fb, file_priv, &r->handle);
+
 out:
drm_framebuffer_put(fb);
 
-- 
2.16.2

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel