Re: [PATCH v3 3/3] serial: core: Move console character device handling from printk

From: Dan Carpenter
Date: Thu Nov 23 2023 - 02:24:40 EST


Hi Tony,

kernel test robot noticed the following build warnings:

https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Tony-Lindgren/printk-Save-console-options-for-add_preferred_console_match/20231121-193809
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
patch link: https://lore.kernel.org/r/20231121113203.61341-4-tony%40atomide.com
patch subject: [PATCH v3 3/3] serial: core: Move console character device handling from printk
config: parisc-randconfig-r081-20231122 (https://download.01.org/0day-ci/archive/20231122/202311221437.5Gil0Pml-lkp@xxxxxxxxx/config)
compiler: hppa-linux-gcc (GCC) 13.2.0
reproduce: (https://download.01.org/0day-ci/archive/20231122/202311221437.5Gil0Pml-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Reported-by: Dan Carpenter <error27@xxxxxxxxx>
| Closes: https://lore.kernel.org/r/202311221437.5Gil0Pml-lkp@xxxxxxxxx/

smatch warnings:
drivers/tty/serial/serial_base_bus.c:266 serial_base_add_preferred_console() error: uninitialized symbol 'nmbr_match'.
drivers/tty/serial/serial_base_bus.c:265 serial_base_add_preferred_console() error: uninitialized symbol 'char_match'.

vim +/nmbr_match +266 drivers/tty/serial/serial_base_bus.c

e4ebdcd790e0f3 Tony Lindgren 2023-11-21 261 int serial_base_add_preferred_console(struct uart_driver *drv,
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 262 struct uart_port *port)
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 263 {
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 264 const char *port_match __free(kfree);
b1b8726ec3f40b Tony Lindgren 2023-11-21 @265 const char *char_match __free(kfree);
b1b8726ec3f40b Tony Lindgren 2023-11-21 @266 const char *nmbr_match __free(kfree);

These need to be initialized to NULL.

const char *char_match __free(kfree) = NULL;

e4ebdcd790e0f3 Tony Lindgren 2023-11-21 267 int ret;
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 268
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 269 port_match = kasprintf(GFP_KERNEL, "%s:%i.%i", dev_name(port->dev),
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 270 port->ctrl_id, port->port_id);
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 271 if (!port_match)
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 272 return -ENOMEM;

Otherwise in this error path we'll call kfree(char_match) and
kfree(nmbr_match) when the haven't been initialized.

e4ebdcd790e0f3 Tony Lindgren 2023-11-21 273
b1b8726ec3f40b Tony Lindgren 2023-11-21 274 char_match = kasprintf(GFP_KERNEL, "%s%i", drv->dev_name, port->line);
b1b8726ec3f40b Tony Lindgren 2023-11-21 275 if (!char_match)
b1b8726ec3f40b Tony Lindgren 2023-11-21 276 return -ENOMEM;
b1b8726ec3f40b Tony Lindgren 2023-11-21 277
b1b8726ec3f40b Tony Lindgren 2023-11-21 278 /* Handle ttyS specific options */
b1b8726ec3f40b Tony Lindgren 2023-11-21 279 if (!strncmp(drv->dev_name, "ttyS", 4)) {
b1b8726ec3f40b Tony Lindgren 2023-11-21 280 /* No name, just a number */
b1b8726ec3f40b Tony Lindgren 2023-11-21 281 nmbr_match = kasprintf(GFP_KERNEL, "%i", port->line);
b1b8726ec3f40b Tony Lindgren 2023-11-21 282 if (!nmbr_match)
b1b8726ec3f40b Tony Lindgren 2023-11-21 283 return -ENODEV;
b1b8726ec3f40b Tony Lindgren 2023-11-21 284
b1b8726ec3f40b Tony Lindgren 2023-11-21 285 ret = add_preferred_console_match(nmbr_match, drv->dev_name,
b1b8726ec3f40b Tony Lindgren 2023-11-21 286 port->line);
b1b8726ec3f40b Tony Lindgren 2023-11-21 287 if (ret && ret != -ENOENT)
b1b8726ec3f40b Tony Lindgren 2023-11-21 288 return ret;
b1b8726ec3f40b Tony Lindgren 2023-11-21 289
b1b8726ec3f40b Tony Lindgren 2023-11-21 290 /* Sparc ttya and ttyb */
b1b8726ec3f40b Tony Lindgren 2023-11-21 291 ret = serial_base_add_sparc_console(drv, port);
b1b8726ec3f40b Tony Lindgren 2023-11-21 292 if (ret)
b1b8726ec3f40b Tony Lindgren 2023-11-21 293 return ret;
b1b8726ec3f40b Tony Lindgren 2023-11-21 294 }
b1b8726ec3f40b Tony Lindgren 2023-11-21 295
b1b8726ec3f40b Tony Lindgren 2023-11-21 296 /* Handle the traditional character device name style console=ttyS0 */
b1b8726ec3f40b Tony Lindgren 2023-11-21 297 ret = add_preferred_console_match(char_match, drv->dev_name, port->line);
b1b8726ec3f40b Tony Lindgren 2023-11-21 298 if (ret && ret != -ENOENT)
b1b8726ec3f40b Tony Lindgren 2023-11-21 299 return ret;
b1b8726ec3f40b Tony Lindgren 2023-11-21 300
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 301 /* Translate a hardware addressing style console=DEVNAME:0.0 */
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 302 ret = add_preferred_console_match(port_match, drv->dev_name, port->line);
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 303 if (ret && ret != -ENOENT)
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 304 return ret;
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 305
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 306 return 0;
e4ebdcd790e0f3 Tony Lindgren 2023-11-21 307 }

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki