CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Tvrtko Ursulin <[email protected]>
TO: [email protected]
CC: Chris Wilson <[email protected]>

Hi Tvrtko,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on drm-intel/for-linux-next]
[also build test WARNING on v5.7-rc1 next-20200415]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    
https://github.com/0day-ci/linux/commits/Tvrtko-Ursulin/Per-client-engine-busyness/20200416-032109
base:   git://anongit.freedesktop.org/drm-intel for-linux-next
reproduce:
        # apt-get install sparse
        # sparse version: 
        make ARCH=x86_64 allmodconfig
        make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
:::::: branch date: 11 hours ago
:::::: commit date: 11 hours ago

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <[email protected]>


sparse warnings: (new ones prefixed by >>)

   drivers/gpu/drm/i915/i915_drm_client.c:130:23: sparse: warning: incorrect 
type in argument 1 (different address spaces)
>> drivers/gpu/drm/i915/i915_drm_client.c:130:23: sparse:    expected struct 
>> pid *pid
>> drivers/gpu/drm/i915/i915_drm_client.c:130:23: sparse:    got struct pid 
>> [noderef] <asn:4> *pid
   drivers/gpu/drm/i915/i915_drm_client.c:131:21: sparse: warning: incorrect 
type in argument 1 (different address spaces)
>> drivers/gpu/drm/i915/i915_drm_client.c:131:21: sparse:    expected void 
>> const *
>> drivers/gpu/drm/i915/i915_drm_client.c:131:21: sparse:    got char [noderef] 
>> <asn:4> *name
   drivers/gpu/drm/i915/i915_drm_client.c:232:17: sparse: error: incompatible 
types in comparison expression (different address spaces):
>> drivers/gpu/drm/i915/i915_drm_client.c:232:17: sparse:    struct pid *
>> drivers/gpu/drm/i915/i915_drm_client.c:232:17: sparse:    struct pid 
>> [noderef] <asn:4> *

# 
https://github.com/0day-ci/linux/commit/68e51ee0010d0e158add87c4362668f009fc8130
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 68e51ee0010d0e158add87c4362668f009fc8130
vim +130 drivers/gpu/drm/i915/i915_drm_client.c

d76ac5524c4129 Tvrtko Ursulin 2020-04-15  104  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  105  static int
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  106  
__i915_drm_client_register(struct i915_drm_client *client,
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  107                      struct 
task_struct *task)
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  108  {
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  109   struct i915_drm_clients 
*clients = client->clients;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  110   char *name;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  111   int ret;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  112  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  113   name = kstrdup(task->comm, 
GFP_KERNEL);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  114   if (!name)
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  115           return -ENOMEM;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  116  
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  117   rcu_assign_pointer(client->pid, 
get_task_pid(task, PIDTYPE_PID));
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  118   
rcu_assign_pointer(client->name, name);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  119  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  120   if (!clients->root)
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  121           return 0; /* 
intel_fbdev_init registers a client before sysfs */
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  122  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  123   ret = 
__client_register_sysfs(client);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  124   if (ret)
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  125           goto err_sysfs;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  126  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  127   return 0;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  128  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  129  err_sysfs:
d76ac5524c4129 Tvrtko Ursulin 2020-04-15 @130   put_pid(client->pid);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15 @131   kfree(client->name);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  132  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  133   return ret;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  134  }
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  135  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  136  static void
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  137  
__i915_drm_client_unregister(struct i915_drm_client *client)
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  138  {
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  139   
__client_unregister_sysfs(client);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  140  
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  141   
put_pid(rcu_replace_pointer(client->pid, NULL, true));
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  142   
kfree(rcu_replace_pointer(client->name, NULL, true));
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  143  }
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  144  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  145  struct i915_drm_client *
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  146  i915_drm_client_add(struct 
i915_drm_clients *clients, struct task_struct *task)
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  147  {
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  148   struct i915_drm_client *client;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  149   int ret;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  150  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  151   client = 
kzalloc(sizeof(*client), GFP_KERNEL);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  152   if (!client)
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  153           return ERR_PTR(-ENOMEM);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  154  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  155   kref_init(&client->kref);
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  156   
mutex_init(&client->update_lock);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  157   client->clients = clients;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  158  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  159   ret = 
xa_alloc_cyclic(&clients->xarray, &client->id, client,
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  160                         
xa_limit_32b, &clients->next_id, GFP_KERNEL);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  161   if (ret)
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  162           goto err_id;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  163  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  164   ret = 
__i915_drm_client_register(client, task);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  165   if (ret)
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  166           goto err_register;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  167  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  168   return client;
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  169  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  170  err_register:
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  171   xa_erase(&clients->xarray, 
client->id);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  172  err_id:
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  173   kfree(client);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  174  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  175   return ERR_PTR(ret);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  176  }
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  177  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  178  void 
__i915_drm_client_free(struct kref *kref)
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  179  {
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  180   struct i915_drm_client *client =
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  181           container_of(kref, 
typeof(*client), kref);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  182  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  183   
__i915_drm_client_unregister(client);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  184   
xa_erase(&client->clients->xarray, client->id);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  185   kfree_rcu(client, rcu);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  186  }
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  187  
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  188  void 
i915_drm_client_close(struct i915_drm_client *client)
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  189  {
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  190   
GEM_BUG_ON(READ_ONCE(client->closed));
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  191   WRITE_ONCE(client->closed, 
true);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  192   i915_drm_client_put(client);
d76ac5524c4129 Tvrtko Ursulin 2020-04-15  193  }
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  194  
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  195  struct client_update_free {
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  196   struct rcu_head rcu;
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  197   struct pid *pid;
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  198   char *name;
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  199  };
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  200  
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  201  static void 
__client_update_free(struct rcu_head *rcu)
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  202  {
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  203   struct client_update_free *old 
= container_of(rcu, typeof(*old), rcu);
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  204  
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  205   put_pid(old->pid);
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  206   kfree(old->name);
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  207   kfree(old);
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  208  }
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  209  
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  210  int
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  211  i915_drm_client_update(struct 
i915_drm_client *client,
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  212                  struct 
task_struct *task)
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  213  {
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  214   struct drm_i915_private *i915 =
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  215           
container_of(client->clients, typeof(*i915), clients);
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  216   struct client_update_free *old;
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  217   struct pid *pid;
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  218   char *name;
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  219   int ret;
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  220  
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  221   old = kmalloc(sizeof(*old), 
GFP_KERNEL);
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  222   if (!old)
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  223           return -ENOMEM;
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  224  
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  225   ret = 
mutex_lock_interruptible(&client->update_lock);
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  226   if (ret)
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  227           goto out_free;
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  228  
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  229   pid = get_task_pid(task, 
PIDTYPE_PID);
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  230   if (!pid)
68e51ee0010d0e Tvrtko Ursulin 2020-04-15  231           goto out_pid;
68e51ee0010d0e Tvrtko Ursulin 2020-04-15 @232   if (pid == client->pid)

:::::: The code at line 130 was first introduced by commit
:::::: d76ac5524c4129b1718d52109a90ec752b1ba2fe drm/i915: Expose list of 
clients in sysfs

:::::: TO: Tvrtko Ursulin <[email protected]>
:::::: CC: 0day robot <[email protected]>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to