* [PATCH 1/2] drm: vmwgfx: remove drm_driver::master_set() return typ
@ 2020-05-29 21:48 Emil Velikov
2020-05-29 21:48 ` [PATCH 2/2] drm/auth: drop unnessesary variable assignments Emil Velikov
2020-05-30 7:44 ` [PATCH 1/2] drm: vmwgfx: remove drm_driver::master_set() return typ Sam Ravnborg
0 siblings, 2 replies; 5+ messages in thread
From: Emil Velikov @ 2020-05-29 21:48 UTC (permalink / raw)
To: dri-devel
Cc: David Airlie, VMware Graphics, Roland Scheidegger, emil.l.velikov
The function always returns zero (success). Ideally we'll remove it all
together - although that's requires a little more work.
For now, we can drop the return type and simplify the drm core code
surrounding it.
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: VMware Graphics <linux-graphics-maintainer@vmware.com>
Cc: Roland Scheidegger <sroland@vmware.com>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
---
VMWare team, I'm planning to push this via drm-misc. Review, ack and
comments are appreciated.
---
drivers/gpu/drm/drm_auth.c | 33 +++++++----------------------
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 8 +++----
include/drm/drm_drv.h | 4 ++--
3 files changed, 13 insertions(+), 32 deletions(-)
diff --git a/drivers/gpu/drm/drm_auth.c b/drivers/gpu/drm/drm_auth.c
index 800ac39f3213..db701a9e9393 100644
--- a/drivers/gpu/drm/drm_auth.c
+++ b/drivers/gpu/drm/drm_auth.c
@@ -122,27 +122,19 @@ struct drm_master *drm_master_create(struct drm_device *dev)
return master;
}
-static int drm_set_master(struct drm_device *dev, struct drm_file *fpriv,
- bool new_master)
+static void drm_set_master(struct drm_device *dev, struct drm_file *fpriv,
+ bool new_master)
{
- int ret = 0;
-
dev->master = drm_master_get(fpriv->master);
- if (dev->driver->master_set) {
- ret = dev->driver->master_set(dev, fpriv, new_master);
- if (unlikely(ret != 0)) {
- drm_master_put(&dev->master);
- }
- }
+ if (dev->driver->master_set)
+ dev->driver->master_set(dev, fpriv, new_master);
- fpriv->was_master = (ret == 0);
- return ret;
+ fpriv->was_master = true;
}
static int drm_new_set_master(struct drm_device *dev, struct drm_file *fpriv)
{
struct drm_master *old_master;
- int ret;
lockdep_assert_held_once(&dev->master_mutex);
@@ -157,22 +149,12 @@ static int drm_new_set_master(struct drm_device *dev, struct drm_file *fpriv)
fpriv->is_master = 1;
fpriv->authenticated = 1;
- ret = drm_set_master(dev, fpriv, true);
- if (ret)
- goto out_err;
+ drm_set_master(dev, fpriv, true);
if (old_master)
drm_master_put(&old_master);
return 0;
-
-out_err:
- /* drop references and restore old master on failure */
- drm_master_put(&fpriv->master);
- fpriv->master = old_master;
- fpriv->is_master = 0;
-
- return ret;
}
/*
@@ -265,7 +247,8 @@ int drm_setmaster_ioctl(struct drm_device *dev, void *data,
goto out_unlock;
}
- ret = drm_set_master(dev, file_priv, false);
+ ret = 0;
+ drm_set_master(dev, file_priv, false);
out_unlock:
mutex_unlock(&dev->master_mutex);
return ret;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index c2247a893ed4..470428387878 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -1129,9 +1129,9 @@ static long vmw_compat_ioctl(struct file *filp, unsigned int cmd,
}
#endif
-static int vmw_master_set(struct drm_device *dev,
- struct drm_file *file_priv,
- bool from_open)
+static void vmw_master_set(struct drm_device *dev,
+ struct drm_file *file_priv,
+ bool from_open)
{
/*
* Inform a new master that the layout may have changed while
@@ -1139,8 +1139,6 @@ static int vmw_master_set(struct drm_device *dev,
*/
if (!from_open)
drm_sysfs_hotplug_event(dev);
-
- return 0;
}
static void vmw_master_drop(struct drm_device *dev,
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index bb924cddc09c..835c38a76ef6 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -311,8 +311,8 @@ struct drm_driver {
*
* Called whenever the minor master is set. Only used by vmwgfx.
*/
- int (*master_set)(struct drm_device *dev, struct drm_file *file_priv,
- bool from_open);
+ void (*master_set)(struct drm_device *dev, struct drm_file *file_priv,
+ bool from_open);
/**
* @master_drop:
*
--
2.25.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] drm/auth: drop unnessesary variable assignments
2020-05-29 21:48 [PATCH 1/2] drm: vmwgfx: remove drm_driver::master_set() return typ Emil Velikov
@ 2020-05-29 21:48 ` Emil Velikov
2020-05-30 7:48 ` Sam Ravnborg
2020-05-30 7:44 ` [PATCH 1/2] drm: vmwgfx: remove drm_driver::master_set() return typ Sam Ravnborg
1 sibling, 1 reply; 5+ messages in thread
From: Emil Velikov @ 2020-05-29 21:48 UTC (permalink / raw)
To: dri-devel; +Cc: David Airlie, emil.l.velikov
The variables are already the exact same value or will be overwritten
shortly afterwords. In either case there's no functional difference.
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
---
drivers/gpu/drm/drm_auth.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/drm_auth.c b/drivers/gpu/drm/drm_auth.c
index db701a9e9393..5ae5623f2482 100644
--- a/drivers/gpu/drm/drm_auth.c
+++ b/drivers/gpu/drm/drm_auth.c
@@ -215,7 +215,7 @@ drm_master_check_perm(struct drm_device *dev, struct drm_file *file_priv)
int drm_setmaster_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv)
{
- int ret = 0;
+ int ret;
mutex_lock(&dev->master_mutex);
@@ -282,7 +282,6 @@ int drm_dropmaster_ioctl(struct drm_device *dev, void *data,
if (file_priv->master->lessor != NULL) {
DRM_DEBUG_LEASE("Attempt to drop lessee %d as master\n", file_priv->master->lessee_id);
- ret = -EINVAL;
goto out_unlock;
}
--
2.25.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] drm: vmwgfx: remove drm_driver::master_set() return typ
2020-05-29 21:48 [PATCH 1/2] drm: vmwgfx: remove drm_driver::master_set() return typ Emil Velikov
2020-05-29 21:48 ` [PATCH 2/2] drm/auth: drop unnessesary variable assignments Emil Velikov
@ 2020-05-30 7:44 ` Sam Ravnborg
1 sibling, 0 replies; 5+ messages in thread
From: Sam Ravnborg @ 2020-05-30 7:44 UTC (permalink / raw)
To: Emil Velikov; +Cc: David Airlie, Roland Scheidegger, VMware Graphics, dri-devel
Hi Emil.
On Fri, May 29, 2020 at 10:48:06PM +0100, Emil Velikov wrote:
> The function always returns zero (success). Ideally we'll remove it all
> together - although that's requires a little more work.
>
> For now, we can drop the return type and simplify the drm core code
> surrounding it.
>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Cc: VMware Graphics <linux-graphics-maintainer@vmware.com>
> Cc: Roland Scheidegger <sroland@vmware.com>
> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Nice cleanup.
> ---
> VMWare team, I'm planning to push this via drm-misc. Review, ack and
> comments are appreciated.
> ---
> drivers/gpu/drm/drm_auth.c | 33 +++++++----------------------
> drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 8 +++----
> include/drm/drm_drv.h | 4 ++--
> 3 files changed, 13 insertions(+), 32 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_auth.c b/drivers/gpu/drm/drm_auth.c
> index 800ac39f3213..db701a9e9393 100644
> --- a/drivers/gpu/drm/drm_auth.c
> +++ b/drivers/gpu/drm/drm_auth.c
> @@ -122,27 +122,19 @@ struct drm_master *drm_master_create(struct drm_device *dev)
> return master;
> }
>
> -static int drm_set_master(struct drm_device *dev, struct drm_file *fpriv,
> - bool new_master)
> +static void drm_set_master(struct drm_device *dev, struct drm_file *fpriv,
> + bool new_master)
> {
> - int ret = 0;
> -
> dev->master = drm_master_get(fpriv->master);
> - if (dev->driver->master_set) {
> - ret = dev->driver->master_set(dev, fpriv, new_master);
> - if (unlikely(ret != 0)) {
> - drm_master_put(&dev->master);
> - }
> - }
> + if (dev->driver->master_set)
> + dev->driver->master_set(dev, fpriv, new_master);
>
> - fpriv->was_master = (ret == 0);
> - return ret;
> + fpriv->was_master = true;
> }
>
> static int drm_new_set_master(struct drm_device *dev, struct drm_file *fpriv)
> {
> struct drm_master *old_master;
> - int ret;
>
> lockdep_assert_held_once(&dev->master_mutex);
>
> @@ -157,22 +149,12 @@ static int drm_new_set_master(struct drm_device *dev, struct drm_file *fpriv)
> fpriv->is_master = 1;
> fpriv->authenticated = 1;
>
> - ret = drm_set_master(dev, fpriv, true);
> - if (ret)
> - goto out_err;
> + drm_set_master(dev, fpriv, true);
>
> if (old_master)
> drm_master_put(&old_master);
>
> return 0;
> -
> -out_err:
> - /* drop references and restore old master on failure */
> - drm_master_put(&fpriv->master);
> - fpriv->master = old_master;
> - fpriv->is_master = 0;
> -
> - return ret;
> }
>
> /*
> @@ -265,7 +247,8 @@ int drm_setmaster_ioctl(struct drm_device *dev, void *data,
> goto out_unlock;
> }
>
> - ret = drm_set_master(dev, file_priv, false);
> + ret = 0;
This assignment is redundant.
ret is assigned a value here:
ret = drm_master_check_perm(dev, file_priv);
if (ret)
goto out_unlock;
And all other places it is assigned and then goto out_unlock
The assignment when declared is btw. also redundant but that I think is
outside the scope of this patch.
If you remove the redundant assignment to ret then the patch is:
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
> + drm_set_master(dev, file_priv, false);
> out_unlock:
> mutex_unlock(&dev->master_mutex);
> return ret;
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index c2247a893ed4..470428387878 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -1129,9 +1129,9 @@ static long vmw_compat_ioctl(struct file *filp, unsigned int cmd,
> }
> #endif
>
> -static int vmw_master_set(struct drm_device *dev,
> - struct drm_file *file_priv,
> - bool from_open)
> +static void vmw_master_set(struct drm_device *dev,
> + struct drm_file *file_priv,
> + bool from_open)
> {
> /*
> * Inform a new master that the layout may have changed while
> @@ -1139,8 +1139,6 @@ static int vmw_master_set(struct drm_device *dev,
> */
> if (!from_open)
> drm_sysfs_hotplug_event(dev);
> -
> - return 0;
> }
>
> static void vmw_master_drop(struct drm_device *dev,
> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
> index bb924cddc09c..835c38a76ef6 100644
> --- a/include/drm/drm_drv.h
> +++ b/include/drm/drm_drv.h
> @@ -311,8 +311,8 @@ struct drm_driver {
> *
> * Called whenever the minor master is set. Only used by vmwgfx.
> */
> - int (*master_set)(struct drm_device *dev, struct drm_file *file_priv,
> - bool from_open);
> + void (*master_set)(struct drm_device *dev, struct drm_file *file_priv,
> + bool from_open);
> /**
> * @master_drop:
> *
> --
> 2.25.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] drm/auth: drop unnessesary variable assignments
2020-05-29 21:48 ` [PATCH 2/2] drm/auth: drop unnessesary variable assignments Emil Velikov
@ 2020-05-30 7:48 ` Sam Ravnborg
2020-05-30 12:13 ` Emil Velikov
0 siblings, 1 reply; 5+ messages in thread
From: Sam Ravnborg @ 2020-05-30 7:48 UTC (permalink / raw)
To: Emil Velikov; +Cc: David Airlie, dri-devel
Hi Emil.
On Fri, May 29, 2020 at 10:48:07PM +0100, Emil Velikov wrote:
> The variables are already the exact same value or will be overwritten
> shortly afterwords. In either case there's no functional difference.
s/afterwords/afterwards/
>
> Cc: David Airlie <airlied@linux.ie>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
> ---
> drivers/gpu/drm/drm_auth.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_auth.c b/drivers/gpu/drm/drm_auth.c
> index db701a9e9393..5ae5623f2482 100644
> --- a/drivers/gpu/drm/drm_auth.c
> +++ b/drivers/gpu/drm/drm_auth.c
> @@ -215,7 +215,7 @@ drm_master_check_perm(struct drm_device *dev, struct drm_file *file_priv)
> int drm_setmaster_ioctl(struct drm_device *dev, void *data,
> struct drm_file *file_priv)
> {
> - int ret = 0;
> + int ret;
This was the redundant asignment I mentioned in first mail - good.
>
> mutex_lock(&dev->master_mutex);
>
> @@ -282,7 +282,6 @@ int drm_dropmaster_ioctl(struct drm_device *dev, void *data,
>
> if (file_priv->master->lessor != NULL) {
> DRM_DEBUG_LEASE("Attempt to drop lessee %d as master\n", file_priv->master->lessee_id);
> - ret = -EINVAL;
This is wrong. ret is 0 when this code is reached, so we loose the error
value if this code-path is triggered.
Or I miss something??
Sam
> goto out_unlock;
> }
>
> --
> 2.25.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] drm/auth: drop unnessesary variable assignments
2020-05-30 7:48 ` Sam Ravnborg
@ 2020-05-30 12:13 ` Emil Velikov
0 siblings, 0 replies; 5+ messages in thread
From: Emil Velikov @ 2020-05-30 12:13 UTC (permalink / raw)
To: Sam Ravnborg; +Cc: David Airlie, ML dri-devel
On Sat, 30 May 2020 at 08:48, Sam Ravnborg <sam@ravnborg.org> wrote:
>
> Hi Emil.
>
> On Fri, May 29, 2020 at 10:48:07PM +0100, Emil Velikov wrote:
> > The variables are already the exact same value or will be overwritten
> > shortly afterwords. In either case there's no functional difference.
> s/afterwords/afterwards/
>
> >
> > Cc: David Airlie <airlied@linux.ie>
> > Cc: Daniel Vetter <daniel@ffwll.ch>
> > Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
> > ---
> > drivers/gpu/drm/drm_auth.c | 3 +--
> > 1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_auth.c b/drivers/gpu/drm/drm_auth.c
> > index db701a9e9393..5ae5623f2482 100644
> > --- a/drivers/gpu/drm/drm_auth.c
> > +++ b/drivers/gpu/drm/drm_auth.c
> > @@ -215,7 +215,7 @@ drm_master_check_perm(struct drm_device *dev, struct drm_file *file_priv)
> > int drm_setmaster_ioctl(struct drm_device *dev, void *data,
> > struct drm_file *file_priv)
> > {
> > - int ret = 0;
> > + int ret;
>
> This was the redundant asignment I mentioned in first mail - good.
> >
> > mutex_lock(&dev->master_mutex);
> >
> > @@ -282,7 +282,6 @@ int drm_dropmaster_ioctl(struct drm_device *dev, void *data,
> >
> > if (file_priv->master->lessor != NULL) {
> > DRM_DEBUG_LEASE("Attempt to drop lessee %d as master\n", file_priv->master->lessee_id);
> > - ret = -EINVAL;
> This is wrong. ret is 0 when this code is reached, so we loose the error
> value if this code-path is triggered.
> Or I miss something??
>
A few lines above [1] - there's unconditional ret = -EINVAL. Although
the set<>drop paths are pretty asymmetric and misleading.
Let me respin the series.
-Emil
[1] https://cgit.freedesktop.org/drm/drm-misc/tree/drivers/gpu/drm/drm_auth.c?id=6015002ece38dac85a373f041e0302781de7474b#n293
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-05-30 12:17 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-29 21:48 [PATCH 1/2] drm: vmwgfx: remove drm_driver::master_set() return typ Emil Velikov
2020-05-29 21:48 ` [PATCH 2/2] drm/auth: drop unnessesary variable assignments Emil Velikov
2020-05-30 7:48 ` Sam Ravnborg
2020-05-30 12:13 ` Emil Velikov
2020-05-30 7:44 ` [PATCH 1/2] drm: vmwgfx: remove drm_driver::master_set() return typ Sam Ravnborg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).