Hi Lionel,

Thank you for the patch! Perhaps something to improve:

url:    
https://github.com/0day-ci/linux/commits/Lionel-Landwerlin/drm-i915-Vulkan-performance-query-support/20190522-083115
base:   git://anongit.freedesktop.org/drm-intel for-linux-next

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

smatch warnings:
drivers/gpu/drm/i915/i915_query.c:290 query_perf_config_data() warn: 
inconsistent returns 'mutex:&i915->perf.metrics_lock'.
  Locked on:   line 220
  Unlocked on: line 170

# 
https://github.com/0day-ci/linux/commit/2df5c78741c44ada4e0b3b7b016923cbbb30ab76
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 2df5c78741c44ada4e0b3b7b016923cbbb30ab76
vim +290 drivers/gpu/drm/i915/i915_query.c

2df5c787 Lionel Landwerlin 2019-05-21  187      if (__get_user(flags, 
&user_query_config_ptr->flags))
2df5c787 Lionel Landwerlin 2019-05-21  188              return -EFAULT;
2df5c787 Lionel Landwerlin 2019-05-21  189  
2df5c787 Lionel Landwerlin 2019-05-21  190      if (flags != 0)
2df5c787 Lionel Landwerlin 2019-05-21  191              return -EINVAL;
2df5c787 Lionel Landwerlin 2019-05-21  192  
2df5c787 Lionel Landwerlin 2019-05-21  193      ret = 
mutex_lock_interruptible(&i915->perf.metrics_lock);
                                                
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Lock

2df5c787 Lionel Landwerlin 2019-05-21  194      if (ret)
2df5c787 Lionel Landwerlin 2019-05-21  195              return ret;
2df5c787 Lionel Landwerlin 2019-05-21  196  
2df5c787 Lionel Landwerlin 2019-05-21  197      if (use_uuid) {
2df5c787 Lionel Landwerlin 2019-05-21  198              char 
uuid[UUID_STRING_LEN + 1] = { 0, };
2df5c787 Lionel Landwerlin 2019-05-21  199              struct i915_oa_config 
*tmp;
2df5c787 Lionel Landwerlin 2019-05-21  200              int id;
2df5c787 Lionel Landwerlin 2019-05-21  201  
2df5c787 Lionel Landwerlin 2019-05-21  202              
BUILD_BUG_ON(sizeof(user_query_config_ptr->uuid) >= sizeof(uuid));
2df5c787 Lionel Landwerlin 2019-05-21  203  
2df5c787 Lionel Landwerlin 2019-05-21  204              if 
(__copy_from_user(uuid, user_query_config_ptr->uuid,
2df5c787 Lionel Landwerlin 2019-05-21  205                                   
sizeof(user_query_config_ptr->uuid))) {
2df5c787 Lionel Landwerlin 2019-05-21  206                      ret = -EFAULT;
2df5c787 Lionel Landwerlin 2019-05-21  207                      goto out;
2df5c787 Lionel Landwerlin 2019-05-21  208              }
2df5c787 Lionel Landwerlin 2019-05-21  209  
2df5c787 Lionel Landwerlin 2019-05-21  210              
idr_for_each_entry(&i915->perf.metrics_idr, tmp, id) {
2df5c787 Lionel Landwerlin 2019-05-21  211                      if 
(!strcmp(tmp->uuid, uuid)) {
2df5c787 Lionel Landwerlin 2019-05-21  212                              
oa_config = tmp;
2df5c787 Lionel Landwerlin 2019-05-21  213                              break;
2df5c787 Lionel Landwerlin 2019-05-21  214                      }
2df5c787 Lionel Landwerlin 2019-05-21  215              }
2df5c787 Lionel Landwerlin 2019-05-21  216      } else {
2df5c787 Lionel Landwerlin 2019-05-21  217              u64 config_id;
2df5c787 Lionel Landwerlin 2019-05-21  218  
2df5c787 Lionel Landwerlin 2019-05-21  219              if 
(__get_user(config_id, &user_query_config_ptr->config))
2df5c787 Lionel Landwerlin 2019-05-21  220                      return -EFAULT;
                                                                ^^^^^^^^^^^^^^
This needs to be "goto out;"

2df5c787 Lionel Landwerlin 2019-05-21  221  
2df5c787 Lionel Landwerlin 2019-05-21  222              if (config_id == 1)
2df5c787 Lionel Landwerlin 2019-05-21  223                      oa_config = 
&i915->perf.oa.test_config;
2df5c787 Lionel Landwerlin 2019-05-21  224              else
2df5c787 Lionel Landwerlin 2019-05-21  225                      oa_config = 
idr_find(&i915->perf.metrics_idr, config_id);
2df5c787 Lionel Landwerlin 2019-05-21  226      }
2df5c787 Lionel Landwerlin 2019-05-21  227  
2df5c787 Lionel Landwerlin 2019-05-21  228      if (!oa_config) {
2df5c787 Lionel Landwerlin 2019-05-21  229              ret = -ENOENT;
2df5c787 Lionel Landwerlin 2019-05-21  230              goto out;
2df5c787 Lionel Landwerlin 2019-05-21  231      }
2df5c787 Lionel Landwerlin 2019-05-21  232  
2df5c787 Lionel Landwerlin 2019-05-21  233      if 
(__copy_from_user(&user_config, user_config_ptr,
2df5c787 Lionel Landwerlin 2019-05-21  234                           
sizeof(user_config))) {
2df5c787 Lionel Landwerlin 2019-05-21  235              ret = -EFAULT;
2df5c787 Lionel Landwerlin 2019-05-21  236              goto out;
2df5c787 Lionel Landwerlin 2019-05-21  237      }
2df5c787 Lionel Landwerlin 2019-05-21  238  
2df5c787 Lionel Landwerlin 2019-05-21  239      ret = 
can_copy_perf_config_registers_or_number(user_config.n_boolean_regs,
2df5c787 Lionel Landwerlin 2019-05-21  240                                      
               user_config.boolean_regs_ptr,
2df5c787 Lionel Landwerlin 2019-05-21  241                                      
               oa_config->b_counter_regs_len);
2df5c787 Lionel Landwerlin 2019-05-21  242      if (ret)
2df5c787 Lionel Landwerlin 2019-05-21  243              goto out;
2df5c787 Lionel Landwerlin 2019-05-21  244  
2df5c787 Lionel Landwerlin 2019-05-21  245      ret = 
can_copy_perf_config_registers_or_number(user_config.n_flex_regs,
2df5c787 Lionel Landwerlin 2019-05-21  246                                      
               user_config.flex_regs_ptr,
2df5c787 Lionel Landwerlin 2019-05-21  247                                      
               oa_config->flex_regs_len);
2df5c787 Lionel Landwerlin 2019-05-21  248      if (ret)
2df5c787 Lionel Landwerlin 2019-05-21  249              goto out;
2df5c787 Lionel Landwerlin 2019-05-21  250  
2df5c787 Lionel Landwerlin 2019-05-21  251      ret = 
can_copy_perf_config_registers_or_number(user_config.n_mux_regs,
2df5c787 Lionel Landwerlin 2019-05-21  252                                      
               user_config.mux_regs_ptr,
2df5c787 Lionel Landwerlin 2019-05-21  253                                      
               oa_config->mux_regs_len);
2df5c787 Lionel Landwerlin 2019-05-21  254      if (ret)
2df5c787 Lionel Landwerlin 2019-05-21  255              goto out;
2df5c787 Lionel Landwerlin 2019-05-21  256  
2df5c787 Lionel Landwerlin 2019-05-21  257      ret = 
copy_perf_config_registers_or_number(oa_config->b_counter_regs,
2df5c787 Lionel Landwerlin 2019-05-21  258                                      
           oa_config->b_counter_regs_len,
2df5c787 Lionel Landwerlin 2019-05-21  259                                      
           user_config.boolean_regs_ptr,
2df5c787 Lionel Landwerlin 2019-05-21  260                                      
           &user_config.n_boolean_regs);
2df5c787 Lionel Landwerlin 2019-05-21  261      if (ret)
2df5c787 Lionel Landwerlin 2019-05-21  262              goto out;
2df5c787 Lionel Landwerlin 2019-05-21  263  
2df5c787 Lionel Landwerlin 2019-05-21  264      ret = 
copy_perf_config_registers_or_number(oa_config->flex_regs,
2df5c787 Lionel Landwerlin 2019-05-21  265                                      
           oa_config->flex_regs_len,
2df5c787 Lionel Landwerlin 2019-05-21  266                                      
           user_config.flex_regs_ptr,
2df5c787 Lionel Landwerlin 2019-05-21  267                                      
           &user_config.n_flex_regs);
2df5c787 Lionel Landwerlin 2019-05-21  268      if (ret)
2df5c787 Lionel Landwerlin 2019-05-21  269              goto out;
2df5c787 Lionel Landwerlin 2019-05-21  270  
2df5c787 Lionel Landwerlin 2019-05-21  271      ret = 
copy_perf_config_registers_or_number(oa_config->mux_regs,
2df5c787 Lionel Landwerlin 2019-05-21  272                                      
           oa_config->mux_regs_len,
2df5c787 Lionel Landwerlin 2019-05-21  273                                      
           user_config.mux_regs_ptr,
2df5c787 Lionel Landwerlin 2019-05-21  274                                      
           &user_config.n_mux_regs);
2df5c787 Lionel Landwerlin 2019-05-21  275      if (ret)
2df5c787 Lionel Landwerlin 2019-05-21  276              goto out;
2df5c787 Lionel Landwerlin 2019-05-21  277  
2df5c787 Lionel Landwerlin 2019-05-21  278      memcpy(user_config.uuid, 
oa_config->uuid, sizeof(user_config.uuid));
2df5c787 Lionel Landwerlin 2019-05-21  279  
2df5c787 Lionel Landwerlin 2019-05-21  280      if 
(__copy_to_user(user_config_ptr, &user_config,
2df5c787 Lionel Landwerlin 2019-05-21  281                         
sizeof(user_config))) {
2df5c787 Lionel Landwerlin 2019-05-21  282              ret = -EFAULT;
2df5c787 Lionel Landwerlin 2019-05-21  283              goto out;
2df5c787 Lionel Landwerlin 2019-05-21  284      }
2df5c787 Lionel Landwerlin 2019-05-21  285  
2df5c787 Lionel Landwerlin 2019-05-21  286      ret = total_size;
2df5c787 Lionel Landwerlin 2019-05-21  287  
2df5c787 Lionel Landwerlin 2019-05-21  288  out:
2df5c787 Lionel Landwerlin 2019-05-21  289      
mutex_unlock(&i915->perf.metrics_lock);
2df5c787 Lionel Landwerlin 2019-05-21 @290      return ret;
2df5c787 Lionel Landwerlin 2019-05-21  291  }
2df5c787 Lionel Landwerlin 2019-05-21  292  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to