From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: Re: [PATCH v8 13/22] counter: Internalize sysfs interface code
Date: Sat, 13 Feb 2021 07:14:55 +0800 [thread overview]
Message-ID: <202102130703.ItScLQ4n-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 18699 bytes --]
CC: kbuild-all(a)lists.01.org
In-Reply-To: <3fc2580af0efd6312a64a0e107bd6fa758f0d466.1613131238.git.vilhelm.gray@gmail.com>
References: <3fc2580af0efd6312a64a0e107bd6fa758f0d466.1613131238.git.vilhelm.gray@gmail.com>
TO: William Breathitt Gray <vilhelm.gray@gmail.com>
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 <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
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/kbuild-all@lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 37872 bytes --]
next reply other threads:[~2021-02-12 23:14 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-12 23:14 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2021-02-12 12:13 [PATCH v8 00/22] Introduce the Counter character device interface William Breathitt Gray
2021-02-12 12:13 ` [PATCH v8 13/22] counter: Internalize sysfs interface code William Breathitt Gray
2021-02-14 17:32 ` Jonathan Cameron
2021-02-14 17:32 ` Jonathan Cameron
2021-02-20 17:50 ` David Lechner
2021-02-20 17:50 ` David Lechner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202102130703.ItScLQ4n-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.