diff options
author | Noralf Trønnes <noralf@tronnes.org> | 2018-06-18 17:17:29 +0300 |
---|---|---|
committer | Noralf Trønnes <noralf@tronnes.org> | 2018-06-25 17:18:39 +0300 |
commit | 7eeaeb90a6a5c8dc0de9bbb16a12d474d31d820e (patch) | |
tree | 998004082bd4e11ea4de823b31c1d8637403dab4 /drivers/gpu/drm/drm_file.c | |
parent | 1572042a4ab25567e4785b53b947729dfa2dac99 (diff) | |
download | linux-7eeaeb90a6a5c8dc0de9bbb16a12d474d31d820e.tar.xz |
drm/file: Don't set master on in-kernel clients
It only makes sense for userspace clients.
Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20180618141739.48151-3-noralf@tronnes.org
Diffstat (limited to 'drivers/gpu/drm/drm_file.c')
-rw-r--r-- | drivers/gpu/drm/drm_file.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/gpu/drm/drm_file.c b/drivers/gpu/drm/drm_file.c index c0410b833043..66bb403dc8ab 100644 --- a/drivers/gpu/drm/drm_file.c +++ b/drivers/gpu/drm/drm_file.c @@ -155,17 +155,8 @@ struct drm_file *drm_file_alloc(struct drm_minor *minor) goto out_prime_destroy; } - if (drm_is_primary_client(file)) { - ret = drm_master_open(file); - if (ret) - goto out_close; - } - return file; -out_close: - if (dev->driver->postclose) - dev->driver->postclose(dev, file); out_prime_destroy: if (drm_core_check_feature(dev, DRIVER_PRIME)) drm_prime_destroy_file_private(&file->prime); @@ -365,6 +356,7 @@ static int drm_open_helper(struct file *filp, struct drm_minor *minor) { struct drm_device *dev = minor->dev; struct drm_file *priv; + int ret; if (filp->f_flags & O_EXCL) return -EBUSY; /* No exclusive opens */ @@ -379,6 +371,14 @@ static int drm_open_helper(struct file *filp, struct drm_minor *minor) if (IS_ERR(priv)) return PTR_ERR(priv); + if (drm_is_primary_client(priv)) { + ret = drm_master_open(priv); + if (ret) { + drm_file_free(priv); + return ret; + } + } + filp->private_data = priv; filp->f_mode |= FMODE_UNSIGNED_OFFSET; priv->filp = filp; |