tree: https://github.com/Xilinx/linux-xlnx release-2020.2.2_k26 head: 4731ff5042ce76fc145bc2797faa2d91b090675e commit: 11367d8e6e31164b198401335b9a19b5b7234ec0 [207/241] pinctrl: core: Handling pinmux and pinconf separately config: i386-randconfig-m021-20210419 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter New smatch warnings: drivers/pinctrl/core.c:1273 pinctrl_commit_state() error: uninitialized symbol 'ret'. vim +/ret +1273 drivers/pinctrl/core.c 981ed1bfbc6c46 Florian Fainelli 2017-03-01 1237 static int pinctrl_commit_state(struct pinctrl *p, struct pinctrl_state *state) befe5bdfbb698b Linus Walleij 2012-02-09 1238 { 6e5e959dde0d92 Stephen Warren 2012-03-02 1239 struct pinctrl_setting *setting, *setting2; 50cf7c8ab324de Richard Genoud 2013-03-25 1240 struct pinctrl_state *old_state = p->state; 6e5e959dde0d92 Stephen Warren 2012-03-02 1241 int ret; 7ecdb16fe63e5b Stephen Warren 2012-03-02 1242 6e5e959dde0d92 Stephen Warren 2012-03-02 1243 if (p->state) { 6e5e959dde0d92 Stephen Warren 2012-03-02 1244 /* 2243a87d90b42e Fan Wu 2014-06-09 1245 * For each pinmux setting in the old state, forget SW's record 2243a87d90b42e Fan Wu 2014-06-09 1246 * of mux owner for that pingroup. Any pingroups which are 2243a87d90b42e Fan Wu 2014-06-09 1247 * still owned by the new state will be re-acquired by the call 2243a87d90b42e Fan Wu 2014-06-09 1248 * to pinmux_enable_setting() in the loop below. 6e5e959dde0d92 Stephen Warren 2012-03-02 1249 */ 6e5e959dde0d92 Stephen Warren 2012-03-02 1250 list_for_each_entry(setting, &p->state->settings, node) { 1e2082b5207217 Stephen Warren 2012-03-02 1251 if (setting->type != PIN_MAP_TYPE_MUX_GROUP) 1e2082b5207217 Stephen Warren 2012-03-02 1252 continue; 7ecdb16fe63e5b Stephen Warren 2012-03-02 1253 pinmux_disable_setting(setting); befe5bdfbb698b Linus Walleij 2012-02-09 1254 } 57b676f9c1b7cd Stephen Warren 2012-03-02 1255 } 57b676f9c1b7cd Stephen Warren 2012-03-02 1256 3102a76cfbf9ac Richard Genoud 2013-03-25 1257 p->state = NULL; 6e5e959dde0d92 Stephen Warren 2012-03-02 1258 11367d8e6e3116 Michal Simek 2021-03-10 1259 /* Apply all the settings for the new state - pinmux first */ 6e5e959dde0d92 Stephen Warren 2012-03-02 1260 list_for_each_entry(setting, &state->settings, node) { 1e2082b5207217 Stephen Warren 2012-03-02 1261 switch (setting->type) { 1e2082b5207217 Stephen Warren 2012-03-02 1262 case PIN_MAP_TYPE_MUX_GROUP: 6e5e959dde0d92 Stephen Warren 2012-03-02 1263 ret = pinmux_enable_setting(setting); 1e2082b5207217 Stephen Warren 2012-03-02 1264 break; 1e2082b5207217 Stephen Warren 2012-03-02 1265 case PIN_MAP_TYPE_CONFIGS_PIN: 11367d8e6e3116 Michal Simek 2021-03-10 1266 case PIN_MAP_TYPE_CONFIGS_GROUP: 11367d8e6e3116 Michal Simek 2021-03-10 1267 break; "ret" not set for these cases. 11367d8e6e3116 Michal Simek 2021-03-10 1268 default: 11367d8e6e3116 Michal Simek 2021-03-10 1269 ret = -EINVAL; 11367d8e6e3116 Michal Simek 2021-03-10 1270 break; 11367d8e6e3116 Michal Simek 2021-03-10 1271 } 11367d8e6e3116 Michal Simek 2021-03-10 1272 11367d8e6e3116 Michal Simek 2021-03-10 @1273 if (ret < 0) 11367d8e6e3116 Michal Simek 2021-03-10 1274 goto unapply_new_state; 11367d8e6e3116 Michal Simek 2021-03-10 1275 11367d8e6e3116 Michal Simek 2021-03-10 1276 /* Do not link hogs (circular dependency) */ 11367d8e6e3116 Michal Simek 2021-03-10 1277 if (p != setting->pctldev->p) 11367d8e6e3116 Michal Simek 2021-03-10 1278 pinctrl_link_add(setting->pctldev, p->dev); 11367d8e6e3116 Michal Simek 2021-03-10 1279 } 11367d8e6e3116 Michal Simek 2021-03-10 1280 11367d8e6e3116 Michal Simek 2021-03-10 1281 /* Apply all the settings for the new state - pinconf after */ 11367d8e6e3116 Michal Simek 2021-03-10 1282 list_for_each_entry(setting, &state->settings, node) { 11367d8e6e3116 Michal Simek 2021-03-10 1283 switch (setting->type) { 11367d8e6e3116 Michal Simek 2021-03-10 1284 case PIN_MAP_TYPE_MUX_GROUP: 11367d8e6e3116 Michal Simek 2021-03-10 1285 break; Same. We probably just want to initialize it in the declaration. 11367d8e6e3116 Michal Simek 2021-03-10 1286 case PIN_MAP_TYPE_CONFIGS_PIN: 1e2082b5207217 Stephen Warren 2012-03-02 1287 case PIN_MAP_TYPE_CONFIGS_GROUP: 1e2082b5207217 Stephen Warren 2012-03-02 1288 ret = pinconf_apply_setting(setting); 1e2082b5207217 Stephen Warren 2012-03-02 1289 break; 1e2082b5207217 Stephen Warren 2012-03-02 1290 default: 1e2082b5207217 Stephen Warren 2012-03-02 1291 ret = -EINVAL; 1e2082b5207217 Stephen Warren 2012-03-02 1292 break; 1e2082b5207217 Stephen Warren 2012-03-02 1293 } 3102a76cfbf9ac Richard Genoud 2013-03-25 1294 42fed7ba44e4e8 Patrice Chotard 2013-04-11 1295 if (ret < 0) { 3102a76cfbf9ac Richard Genoud 2013-03-25 1296 goto unapply_new_state; 6e5e959dde0d92 Stephen Warren 2012-03-02 1297 } 036f394dd77f81 Benjamin Gaignard 2019-05-22 1298 b672a87ae5ab07 Linus Walleij 2019-05-24 1299 /* Do not link hogs (circular dependency) */ b672a87ae5ab07 Linus Walleij 2019-05-24 1300 if (p != setting->pctldev->p) 036f394dd77f81 Benjamin Gaignard 2019-05-22 1301 pinctrl_link_add(setting->pctldev, p->dev); 42fed7ba44e4e8 Patrice Chotard 2013-04-11 1302 } 6e5e959dde0d92 Stephen Warren 2012-03-02 1303 3102a76cfbf9ac Richard Genoud 2013-03-25 1304 p->state = state; 3102a76cfbf9ac Richard Genoud 2013-03-25 1305 6e5e959dde0d92 Stephen Warren 2012-03-02 1306 return 0; 3102a76cfbf9ac Richard Genoud 2013-03-25 1307 3102a76cfbf9ac Richard Genoud 2013-03-25 1308 unapply_new_state: da58751ca2490d Richard Genoud 2013-03-28 1309 dev_err(p->dev, "Error applying setting, reverse things back\n"); 3102a76cfbf9ac Richard Genoud 2013-03-25 1310 3102a76cfbf9ac Richard Genoud 2013-03-25 1311 list_for_each_entry(setting2, &state->settings, node) { 3102a76cfbf9ac Richard Genoud 2013-03-25 1312 if (&setting2->node == &setting->node) 3102a76cfbf9ac Richard Genoud 2013-03-25 1313 break; af606177713163 Richard Genoud 2013-03-29 1314 /* af606177713163 Richard Genoud 2013-03-29 1315 * All we can do here is pinmux_disable_setting. af606177713163 Richard Genoud 2013-03-29 1316 * That means that some pins are muxed differently now af606177713163 Richard Genoud 2013-03-29 1317 * than they were before applying the setting (We can't af606177713163 Richard Genoud 2013-03-29 1318 * "unmux a pin"!), but it's not a big deal since the pins af606177713163 Richard Genoud 2013-03-29 1319 * are free to be muxed by another apply_setting. af606177713163 Richard Genoud 2013-03-29 1320 */ af606177713163 Richard Genoud 2013-03-29 1321 if (setting2->type == PIN_MAP_TYPE_MUX_GROUP) af606177713163 Richard Genoud 2013-03-29 1322 pinmux_disable_setting(setting2); 3102a76cfbf9ac Richard Genoud 2013-03-25 1323 } 8009d5ff00df6a Richard Genoud 2013-03-28 1324 385d94246b05f7 Richard Genoud 2013-03-29 1325 /* There's no infinite recursive loop here because p->state is NULL */ 385d94246b05f7 Richard Genoud 2013-03-29 1326 if (old_state) 42fed7ba44e4e8 Patrice Chotard 2013-04-11 1327 pinctrl_select_state(p, old_state); 6e5e959dde0d92 Stephen Warren 2012-03-02 1328 6e5e959dde0d92 Stephen Warren 2012-03-02 1329 return ret; befe5bdfbb698b Linus Walleij 2012-02-09 1330 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org