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]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
