drm/vc4: fix wrong filp usage in gem_info debugfs node 89/219489/1 accepted/tizen/unified/20191206.053941 submit/tizen/20191206.014708
authorSeung-Woo Kim <sw0312.kim@samsung.com>
Thu, 5 Dec 2019 07:52:29 +0000 (16:52 +0900)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Thu, 5 Dec 2019 08:04:41 +0000 (17:04 +0900)
After the mainline commit 65101d8c9108 ("drm/vc4: Expose
performance counters to userspace") applied in v4.17, vc4 drm
has its own filp. So gem_info filp usage is not proper. Fix the
wrong filp usage in gem_info debugfs node.

Change-Id: I526a888f345378d66f96e9d6cd3d19527e56ddaa
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
drivers/gpu/drm/vc4/vc4_bo.c
drivers/gpu/drm/vc4/vc4_drv.h

index 87bdab9..c1bae46 100644 (file)
@@ -109,8 +109,8 @@ static int vc4_gem_one_info(int id, void *ptr, void *data)
 {
        struct drm_gem_object *obj = (struct drm_gem_object *)ptr;
        struct vc4_gem_info_data *gem_info_data = data;
-       struct drm_vc4_file_private *file_priv =
-               gem_info_data->filp->driver_priv;
+       struct vc4_file *vc4file = gem_info_data->filp->driver_priv;
+       struct drm_vc4_file_private *file_priv = &vc4file->priv;
 
        if (!obj) {
                DRM_ERROR("failed to get drm_gem_object\n");
@@ -570,7 +570,8 @@ struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t unaligned_size,
 
 static void vc4_gem_register_pid(struct drm_file *file_priv)
 {
-       struct drm_vc4_file_private *driver_priv = file_priv->driver_priv;
+       struct vc4_file *vc4file = file_priv->driver_priv;
+       struct drm_vc4_file_private *driver_priv = &vc4file->priv;
 
        if (!driver_priv->pid && !driver_priv->tgid) {
                driver_priv->pid = task_pid_nr(current);
index c2b0773..03b0220 100644 (file)
@@ -554,6 +554,11 @@ struct vc4_exec_info {
        struct vc4_perfmon *perfmon;
 };
 
+struct drm_vc4_file_private {
+       pid_t                           pid;
+       pid_t                           tgid;
+};
+
 /* Per-open file private data. Any driver-specific resource that has to be
  * released when the DRM file is closed should be placed here.
  */
@@ -562,6 +567,7 @@ struct vc4_file {
                struct idr idr;
                struct mutex lock;
        } perfmon;
+       struct drm_vc4_file_private priv;
 };
 
 static inline struct vc4_exec_info *
@@ -815,11 +821,6 @@ bool vc4_check_tex_size(struct vc4_exec_info *exec,
 struct vc4_validated_shader_info *
 vc4_validate_shader(struct drm_gem_cma_object *shader_obj);
 
-struct drm_vc4_file_private {
-       pid_t                           pid;
-       pid_t                           tgid;
-};
-
 int vc4_debugfs_gem_info(struct seq_file *m, void *data);
 int vc4_drm_gem_prime_fd_to_handle(struct drm_device *dev,
                struct drm_file *file_priv, int prime_fd, uint32_t *handle);