CC: [email protected]
In-Reply-To: 
<3fc2580af0efd6312a64a0e107bd6fa758f0d466.1613131238.git.vilhelm.g...@gmail.com>
References: 
<3fc2580af0efd6312a64a0e107bd6fa758f0d466.1613131238.git.vilhelm.g...@gmail.com>
TO: William Breathitt Gray <[email protected]>

Hi William,

I love your patch! Perhaps something to improve:

[auto build test WARNING on b72d4f6a5122a78941ce5a3147685d6a44939a75]

url:    
https://github.com/0day-ci/linux/commits/William-Breathitt-Gray/Introduce-the-Counter-character-device-interface/20210212-202458
base:   b72d4f6a5122a78941ce5a3147685d6a44939a75
:::::: branch date: 11 hours ago
:::::: commit date: 11 hours ago
config: x86_64-randconfig-m001-20210211 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

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

smatch warnings:
drivers/counter/counter-sysfs.c:104 counter_comp_u8_show() error: uninitialized 
symbol 'err'.
drivers/counter/counter-sysfs.c:172 counter_comp_u32_show() error: 
uninitialized symbol 'err'.
drivers/counter/counter-sysfs.c:286 counter_comp_u64_show() error: 
uninitialized symbol 'err'.

vim +/err +104 drivers/counter/counter-sysfs.c

74e69a717541f2 William Breathitt Gray 2021-02-12   84  
74e69a717541f2 William Breathitt Gray 2021-02-12   85  static ssize_t 
counter_comp_u8_show(struct device *dev,
74e69a717541f2 William Breathitt Gray 2021-02-12   86                           
    struct device_attribute *attr, char *buf)
74e69a717541f2 William Breathitt Gray 2021-02-12   87  {
74e69a717541f2 William Breathitt Gray 2021-02-12   88   const struct 
counter_attribute *const a = to_counter_attribute(attr);
74e69a717541f2 William Breathitt Gray 2021-02-12   89   struct counter_device 
*const counter = dev_get_drvdata(dev);
74e69a717541f2 William Breathitt Gray 2021-02-12   90   int err;
74e69a717541f2 William Breathitt Gray 2021-02-12   91   u8 data = 0;
74e69a717541f2 William Breathitt Gray 2021-02-12   92  
74e69a717541f2 William Breathitt Gray 2021-02-12   93   switch (a->scope) {
74e69a717541f2 William Breathitt Gray 2021-02-12   94   case 
COUNTER_SCOPE_DEVICE:
74e69a717541f2 William Breathitt Gray 2021-02-12   95           err = 
a->comp.device_u8_read(counter, &data);
74e69a717541f2 William Breathitt Gray 2021-02-12   96           break;
74e69a717541f2 William Breathitt Gray 2021-02-12   97   case 
COUNTER_SCOPE_SIGNAL:
74e69a717541f2 William Breathitt Gray 2021-02-12   98           err = 
a->comp.signal_u8_read(counter, a->parent, &data);
74e69a717541f2 William Breathitt Gray 2021-02-12   99           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  100   case 
COUNTER_SCOPE_COUNT:
74e69a717541f2 William Breathitt Gray 2021-02-12  101           err = 
a->comp.count_u8_read(counter, a->parent, &data);
74e69a717541f2 William Breathitt Gray 2021-02-12  102           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  103   }
74e69a717541f2 William Breathitt Gray 2021-02-12 @104   if (err < 0)
74e69a717541f2 William Breathitt Gray 2021-02-12  105           return err;
74e69a717541f2 William Breathitt Gray 2021-02-12  106  
74e69a717541f2 William Breathitt Gray 2021-02-12  107   if (a->comp.type == 
COUNTER_COMP_BOOL)
74e69a717541f2 William Breathitt Gray 2021-02-12  108           data = !!data;
74e69a717541f2 William Breathitt Gray 2021-02-12  109  
74e69a717541f2 William Breathitt Gray 2021-02-12  110   return sprintf(buf, 
"%u\n", (unsigned int)data);
74e69a717541f2 William Breathitt Gray 2021-02-12  111  }
74e69a717541f2 William Breathitt Gray 2021-02-12  112  
74e69a717541f2 William Breathitt Gray 2021-02-12  113  static ssize_t 
counter_comp_u8_store(struct device *dev,
74e69a717541f2 William Breathitt Gray 2021-02-12  114                           
     struct device_attribute *attr,
74e69a717541f2 William Breathitt Gray 2021-02-12  115                           
     const char *buf, size_t len)
74e69a717541f2 William Breathitt Gray 2021-02-12  116  {
74e69a717541f2 William Breathitt Gray 2021-02-12  117   const struct 
counter_attribute *const a = to_counter_attribute(attr);
74e69a717541f2 William Breathitt Gray 2021-02-12  118   struct counter_device 
*const counter = dev_get_drvdata(dev);
74e69a717541f2 William Breathitt Gray 2021-02-12  119   int err;
74e69a717541f2 William Breathitt Gray 2021-02-12  120   bool bool_data = 0;
74e69a717541f2 William Breathitt Gray 2021-02-12  121   u8 data = 0;
74e69a717541f2 William Breathitt Gray 2021-02-12  122  
74e69a717541f2 William Breathitt Gray 2021-02-12  123   if (a->comp.type == 
COUNTER_COMP_BOOL) {
74e69a717541f2 William Breathitt Gray 2021-02-12  124           err = 
kstrtobool(buf, &bool_data);
74e69a717541f2 William Breathitt Gray 2021-02-12  125           data = 
bool_data;
74e69a717541f2 William Breathitt Gray 2021-02-12  126   } else
74e69a717541f2 William Breathitt Gray 2021-02-12  127           err = 
kstrtou8(buf, 0, &data);
74e69a717541f2 William Breathitt Gray 2021-02-12  128   if (err < 0)
74e69a717541f2 William Breathitt Gray 2021-02-12  129           return err;
74e69a717541f2 William Breathitt Gray 2021-02-12  130  
74e69a717541f2 William Breathitt Gray 2021-02-12  131   switch (a->scope) {
74e69a717541f2 William Breathitt Gray 2021-02-12  132   case 
COUNTER_SCOPE_DEVICE:
74e69a717541f2 William Breathitt Gray 2021-02-12  133           err = 
a->comp.device_u8_write(counter, data);
74e69a717541f2 William Breathitt Gray 2021-02-12  134           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  135   case 
COUNTER_SCOPE_SIGNAL:
74e69a717541f2 William Breathitt Gray 2021-02-12  136           err = 
a->comp.signal_u8_write(counter, a->parent, data);
74e69a717541f2 William Breathitt Gray 2021-02-12  137           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  138   case 
COUNTER_SCOPE_COUNT:
74e69a717541f2 William Breathitt Gray 2021-02-12  139           err = 
a->comp.count_u8_write(counter, a->parent, data);
74e69a717541f2 William Breathitt Gray 2021-02-12  140           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  141   }
74e69a717541f2 William Breathitt Gray 2021-02-12  142   if (err < 0)
74e69a717541f2 William Breathitt Gray 2021-02-12  143           return err;
74e69a717541f2 William Breathitt Gray 2021-02-12  144  
74e69a717541f2 William Breathitt Gray 2021-02-12  145   return len;
74e69a717541f2 William Breathitt Gray 2021-02-12  146  }
74e69a717541f2 William Breathitt Gray 2021-02-12  147  
74e69a717541f2 William Breathitt Gray 2021-02-12  148  static ssize_t 
counter_comp_u32_show(struct device *dev,
74e69a717541f2 William Breathitt Gray 2021-02-12  149                           
     struct device_attribute *attr, char *buf)
74e69a717541f2 William Breathitt Gray 2021-02-12  150  {
74e69a717541f2 William Breathitt Gray 2021-02-12  151   const struct 
counter_attribute *const a = to_counter_attribute(attr);
74e69a717541f2 William Breathitt Gray 2021-02-12  152   struct counter_device 
*const counter = dev_get_drvdata(dev);
74e69a717541f2 William Breathitt Gray 2021-02-12  153   const struct 
counter_available *const avail = a->comp.priv;
74e69a717541f2 William Breathitt Gray 2021-02-12  154   int err;
74e69a717541f2 William Breathitt Gray 2021-02-12  155   u32 data = 0;
74e69a717541f2 William Breathitt Gray 2021-02-12  156  
74e69a717541f2 William Breathitt Gray 2021-02-12  157   switch (a->scope) {
74e69a717541f2 William Breathitt Gray 2021-02-12  158   case 
COUNTER_SCOPE_DEVICE:
74e69a717541f2 William Breathitt Gray 2021-02-12  159           err = 
a->comp.device_u32_read(counter, &data);
74e69a717541f2 William Breathitt Gray 2021-02-12  160           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  161   case 
COUNTER_SCOPE_SIGNAL:
74e69a717541f2 William Breathitt Gray 2021-02-12  162           err = 
a->comp.signal_u32_read(counter, a->parent, &data);
74e69a717541f2 William Breathitt Gray 2021-02-12  163           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  164   case 
COUNTER_SCOPE_COUNT:
74e69a717541f2 William Breathitt Gray 2021-02-12  165           if 
(a->comp.type == COUNTER_COMP_SYNAPSE_ACTION)
74e69a717541f2 William Breathitt Gray 2021-02-12  166                   err = 
a->comp.action_read(counter, a->parent,
74e69a717541f2 William Breathitt Gray 2021-02-12  167                           
                  a->comp.priv, &data);
74e69a717541f2 William Breathitt Gray 2021-02-12  168           else
74e69a717541f2 William Breathitt Gray 2021-02-12  169                   err = 
a->comp.count_u32_read(counter, a->parent, &data);
74e69a717541f2 William Breathitt Gray 2021-02-12  170           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  171   }
74e69a717541f2 William Breathitt Gray 2021-02-12 @172   if (err < 0)
74e69a717541f2 William Breathitt Gray 2021-02-12  173           return err;
74e69a717541f2 William Breathitt Gray 2021-02-12  174  
74e69a717541f2 William Breathitt Gray 2021-02-12  175   switch (a->comp.type) {
74e69a717541f2 William Breathitt Gray 2021-02-12  176   case 
COUNTER_COMP_FUNCTION:
74e69a717541f2 William Breathitt Gray 2021-02-12  177           return 
sysfs_emit(buf, "%s\n", counter_function_str[data]);
74e69a717541f2 William Breathitt Gray 2021-02-12  178   case 
COUNTER_COMP_SIGNAL_LEVEL:
74e69a717541f2 William Breathitt Gray 2021-02-12  179           return 
sysfs_emit(buf, "%s\n", counter_signal_value_str[data]);
74e69a717541f2 William Breathitt Gray 2021-02-12  180   case 
COUNTER_COMP_SYNAPSE_ACTION:
74e69a717541f2 William Breathitt Gray 2021-02-12  181           return 
sysfs_emit(buf, "%s\n", counter_synapse_action_str[data]);
74e69a717541f2 William Breathitt Gray 2021-02-12  182   case COUNTER_COMP_ENUM:
74e69a717541f2 William Breathitt Gray 2021-02-12  183           return 
sysfs_emit(buf, "%s\n", avail->strs[data]);
74e69a717541f2 William Breathitt Gray 2021-02-12  184   case 
COUNTER_COMP_COUNT_DIRECTION:
74e69a717541f2 William Breathitt Gray 2021-02-12  185           return 
sysfs_emit(buf, "%s\n", counter_count_direction_str[data]);
74e69a717541f2 William Breathitt Gray 2021-02-12  186   case 
COUNTER_COMP_COUNT_MODE:
74e69a717541f2 William Breathitt Gray 2021-02-12  187           return 
sysfs_emit(buf, "%s\n", counter_count_mode_str[data]);
74e69a717541f2 William Breathitt Gray 2021-02-12  188   default:
74e69a717541f2 William Breathitt Gray 2021-02-12  189           return 
sprintf(buf, "%u\n", (unsigned int)data);
74e69a717541f2 William Breathitt Gray 2021-02-12  190   }
74e69a717541f2 William Breathitt Gray 2021-02-12  191  }
74e69a717541f2 William Breathitt Gray 2021-02-12  192  
74e69a717541f2 William Breathitt Gray 2021-02-12  193  static int 
counter_find_enum(u32 *const enum_item, const u32 *const enums,
74e69a717541f2 William Breathitt Gray 2021-02-12  194                        
const size_t num_enums, const char *const buf,
74e69a717541f2 William Breathitt Gray 2021-02-12  195                        
const char *const string_array[])
74e69a717541f2 William Breathitt Gray 2021-02-12  196  {
74e69a717541f2 William Breathitt Gray 2021-02-12  197   size_t index;
74e69a717541f2 William Breathitt Gray 2021-02-12  198  
74e69a717541f2 William Breathitt Gray 2021-02-12  199   for (index = 0; index < 
num_enums; index++) {
74e69a717541f2 William Breathitt Gray 2021-02-12  200           *enum_item = 
enums[index];
74e69a717541f2 William Breathitt Gray 2021-02-12  201           if 
(sysfs_streq(buf, string_array[*enum_item]))
74e69a717541f2 William Breathitt Gray 2021-02-12  202                   return 
0;
74e69a717541f2 William Breathitt Gray 2021-02-12  203   }
74e69a717541f2 William Breathitt Gray 2021-02-12  204  
74e69a717541f2 William Breathitt Gray 2021-02-12  205   return -EINVAL;
74e69a717541f2 William Breathitt Gray 2021-02-12  206  }
74e69a717541f2 William Breathitt Gray 2021-02-12  207  
74e69a717541f2 William Breathitt Gray 2021-02-12  208  static ssize_t 
counter_comp_u32_store(struct device *dev,
74e69a717541f2 William Breathitt Gray 2021-02-12  209                           
      struct device_attribute *attr,
74e69a717541f2 William Breathitt Gray 2021-02-12  210                           
      const char *buf, size_t len)
74e69a717541f2 William Breathitt Gray 2021-02-12  211  {
74e69a717541f2 William Breathitt Gray 2021-02-12  212   const struct 
counter_attribute *const a = to_counter_attribute(attr);
74e69a717541f2 William Breathitt Gray 2021-02-12  213   struct counter_device 
*const counter = dev_get_drvdata(dev);
74e69a717541f2 William Breathitt Gray 2021-02-12  214   struct counter_count 
*const count = a->parent;
74e69a717541f2 William Breathitt Gray 2021-02-12  215   struct counter_synapse 
*const synapse = a->comp.priv;
74e69a717541f2 William Breathitt Gray 2021-02-12  216   const struct 
counter_available *const avail = a->comp.priv;
74e69a717541f2 William Breathitt Gray 2021-02-12  217   int err;
74e69a717541f2 William Breathitt Gray 2021-02-12  218   u32 data = 0;
74e69a717541f2 William Breathitt Gray 2021-02-12  219  
74e69a717541f2 William Breathitt Gray 2021-02-12  220   switch (a->comp.type) {
74e69a717541f2 William Breathitt Gray 2021-02-12  221   case 
COUNTER_COMP_FUNCTION:
74e69a717541f2 William Breathitt Gray 2021-02-12  222           err = 
counter_find_enum(&data, count->functions_list,
74e69a717541f2 William Breathitt Gray 2021-02-12  223                           
        count->num_functions, buf,
74e69a717541f2 William Breathitt Gray 2021-02-12  224                           
        counter_function_str);
74e69a717541f2 William Breathitt Gray 2021-02-12  225           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  226   case 
COUNTER_COMP_SYNAPSE_ACTION:
74e69a717541f2 William Breathitt Gray 2021-02-12  227           err = 
counter_find_enum(&data, synapse->actions_list,
74e69a717541f2 William Breathitt Gray 2021-02-12  228                           
        synapse->num_actions, buf,
74e69a717541f2 William Breathitt Gray 2021-02-12  229                           
        counter_synapse_action_str);
74e69a717541f2 William Breathitt Gray 2021-02-12  230           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  231   case COUNTER_COMP_ENUM:
74e69a717541f2 William Breathitt Gray 2021-02-12  232           err = 
__sysfs_match_string(avail->strs, avail->num_items, buf);
74e69a717541f2 William Breathitt Gray 2021-02-12  233           data = err;
74e69a717541f2 William Breathitt Gray 2021-02-12  234           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  235   case 
COUNTER_COMP_COUNT_MODE:
74e69a717541f2 William Breathitt Gray 2021-02-12  236           err = 
counter_find_enum(&data, avail->enums, avail->num_items,
74e69a717541f2 William Breathitt Gray 2021-02-12  237                           
        buf, counter_count_mode_str);
74e69a717541f2 William Breathitt Gray 2021-02-12  238           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  239   default:
74e69a717541f2 William Breathitt Gray 2021-02-12  240           err = 
kstrtou32(buf, 0, &data);
74e69a717541f2 William Breathitt Gray 2021-02-12  241           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  242   }
74e69a717541f2 William Breathitt Gray 2021-02-12  243   if (err < 0)
74e69a717541f2 William Breathitt Gray 2021-02-12  244           return err;
74e69a717541f2 William Breathitt Gray 2021-02-12  245  
74e69a717541f2 William Breathitt Gray 2021-02-12  246   switch (a->scope) {
74e69a717541f2 William Breathitt Gray 2021-02-12  247   case 
COUNTER_SCOPE_DEVICE:
74e69a717541f2 William Breathitt Gray 2021-02-12  248           err = 
a->comp.device_u32_write(counter, data);
74e69a717541f2 William Breathitt Gray 2021-02-12  249           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  250   case 
COUNTER_SCOPE_SIGNAL:
74e69a717541f2 William Breathitt Gray 2021-02-12  251           err = 
a->comp.signal_u32_write(counter, a->parent, data);
74e69a717541f2 William Breathitt Gray 2021-02-12  252           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  253   case 
COUNTER_SCOPE_COUNT:
74e69a717541f2 William Breathitt Gray 2021-02-12  254           if 
(a->comp.type == COUNTER_COMP_SYNAPSE_ACTION)
74e69a717541f2 William Breathitt Gray 2021-02-12  255                   err = 
a->comp.action_write(counter, count, synapse,
74e69a717541f2 William Breathitt Gray 2021-02-12  256                           
                   data);
74e69a717541f2 William Breathitt Gray 2021-02-12  257           else
74e69a717541f2 William Breathitt Gray 2021-02-12  258                   err = 
a->comp.count_u32_write(counter, count, data);
74e69a717541f2 William Breathitt Gray 2021-02-12  259           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  260   }
74e69a717541f2 William Breathitt Gray 2021-02-12  261   if (err < 0)
74e69a717541f2 William Breathitt Gray 2021-02-12  262           return err;
74e69a717541f2 William Breathitt Gray 2021-02-12  263  
74e69a717541f2 William Breathitt Gray 2021-02-12  264   return len;
74e69a717541f2 William Breathitt Gray 2021-02-12  265  }
74e69a717541f2 William Breathitt Gray 2021-02-12  266  
74e69a717541f2 William Breathitt Gray 2021-02-12  267  static ssize_t 
counter_comp_u64_show(struct device *dev,
74e69a717541f2 William Breathitt Gray 2021-02-12  268                           
     struct device_attribute *attr, char *buf)
74e69a717541f2 William Breathitt Gray 2021-02-12  269  {
74e69a717541f2 William Breathitt Gray 2021-02-12  270   const struct 
counter_attribute *const a = to_counter_attribute(attr);
74e69a717541f2 William Breathitt Gray 2021-02-12  271   struct counter_device 
*const counter = dev_get_drvdata(dev);
74e69a717541f2 William Breathitt Gray 2021-02-12  272   int err;
74e69a717541f2 William Breathitt Gray 2021-02-12  273   u64 data = 0;
74e69a717541f2 William Breathitt Gray 2021-02-12  274  
74e69a717541f2 William Breathitt Gray 2021-02-12  275   switch (a->scope) {
74e69a717541f2 William Breathitt Gray 2021-02-12  276   case 
COUNTER_SCOPE_DEVICE:
74e69a717541f2 William Breathitt Gray 2021-02-12  277           err = 
a->comp.device_u64_read(counter, &data);
74e69a717541f2 William Breathitt Gray 2021-02-12  278           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  279   case 
COUNTER_SCOPE_SIGNAL:
74e69a717541f2 William Breathitt Gray 2021-02-12  280           err = 
a->comp.signal_u64_read(counter, a->parent, &data);
74e69a717541f2 William Breathitt Gray 2021-02-12  281           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  282   case 
COUNTER_SCOPE_COUNT:
74e69a717541f2 William Breathitt Gray 2021-02-12  283           err = 
a->comp.count_u64_read(counter, a->parent, &data);
74e69a717541f2 William Breathitt Gray 2021-02-12  284           break;
74e69a717541f2 William Breathitt Gray 2021-02-12  285   }
74e69a717541f2 William Breathitt Gray 2021-02-12 @286   if (err < 0)
74e69a717541f2 William Breathitt Gray 2021-02-12  287           return err;
74e69a717541f2 William Breathitt Gray 2021-02-12  288  
74e69a717541f2 William Breathitt Gray 2021-02-12  289   return sprintf(buf, 
"%llu\n", (unsigned long long)data);
74e69a717541f2 William Breathitt Gray 2021-02-12  290  }
74e69a717541f2 William Breathitt Gray 2021-02-12  291  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to