drivers/char/xillybus/xillybus_class.c:74:7: warning: variable 'rc' is used uninitialized whenever 'if' condition is true

kernel test robot <[email protected]>
Newsgroups dev.linux.lists.oe-kbuild
Message-ID <[email protected]>
:::::: 
:::::: Manual check reason: "bisect to a FBC not belonging to original linux-review patches: branch: linux-review/Eli-Billauer/char-xillybus-Improve-control-of-execution-flow-with-mutexes/20260806-033404, commit: 16edb90c39a5645b3803be32b2b77476efae2402"
:::::: 

BCC: [email protected]
CC: [email protected]
CC: [email protected]
TO: Eli Billauer <[email protected]>
CC: 0day robot <[email protected]>

tree:   https://github.com/intel-lab-lkp/linux/commits/Eli-Billauer/char-xillybus-Improve-control-of-execution-flow-with-mutexes/20260806-033404
head:   d05c024c9354aabd2ea64be46e6fccbf24ba33cd
commit: 16edb90c39a5645b3803be32b2b77476efae2402 char: xillybus: Add defensive sanity checks
date:   2 days ago
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: loongarch-randconfig-002-20260807 (https://download.01.org/0day-ci/archive/20260807/[email protected]/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260807/[email protected]/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 <[email protected]>
| Closes: https://lore.kernel.org/r/[email protected]/

All warnings (new ones prefixed by >>):

>> drivers/char/xillybus/xillybus_class.c:74:7: warning: variable 'rc' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
      74 |                 if (i > 99) {
         |                     ^~~~~~
   drivers/char/xillybus/xillybus_class.c:179:9: note: uninitialized use occurs here
     179 |         return rc;
         |                ^~
   drivers/char/xillybus/xillybus_class.c:74:3: note: remove the 'if' if its condition is always false
      74 |                 if (i > 99) {
         |                 ^~~~~~~~~~~~~
      75 |                         dev_err(dev, "Failed to obtain unique unit name\n");
         |                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      76 |                         goto fail_obtain;
         |                         ~~~~~~~~~~~~~~~~~
      77 |                 }
         |                 ~
   drivers/char/xillybus/xillybus_class.c:51:8: note: initialize the variable 'rc' to silence this warning
      51 |         int rc;
         |               ^
         |                = 0
   1 warning generated.


vim +74 drivers/char/xillybus/xillybus_class.c

8cb5d216ab3365 Eli Billauer   2021-05-26   42  
8cb5d216ab3365 Eli Billauer   2021-05-26   43  int xillybus_init_chrdev(struct device *dev,
8cb5d216ab3365 Eli Billauer   2021-05-26   44  			 const struct file_operations *fops,
8cb5d216ab3365 Eli Billauer   2021-05-26   45  			 struct module *owner,
8cb5d216ab3365 Eli Billauer   2021-05-26   46  			 void *private_data,
8cb5d216ab3365 Eli Billauer   2021-05-26   47  			 unsigned char *idt, unsigned int len,
8cb5d216ab3365 Eli Billauer   2021-05-26   48  			 int num_nodes,
8cb5d216ab3365 Eli Billauer   2021-05-26   49  			 const char *prefix, bool enumerate)
8cb5d216ab3365 Eli Billauer   2021-05-26   50  {
8cb5d216ab3365 Eli Billauer   2021-05-26   51  	int rc;
8cb5d216ab3365 Eli Billauer   2021-05-26   52  	dev_t mdev;
8cb5d216ab3365 Eli Billauer   2021-05-26   53  	int i;
8cb5d216ab3365 Eli Billauer   2021-05-26   54  	char devname[48];
8cb5d216ab3365 Eli Billauer   2021-05-26   55  
8cb5d216ab3365 Eli Billauer   2021-05-26   56  	struct device *device;
8cb5d216ab3365 Eli Billauer   2021-05-26   57  	size_t namelen;
8cb5d216ab3365 Eli Billauer   2021-05-26   58  	struct xilly_unit *unit, *u;
8cb5d216ab3365 Eli Billauer   2021-05-26   59  
16edb90c39a564 Eli Billauer   2026-06-30   60  	if (num_nodes <= 0 || num_nodes > XILLYBUS_MAX_NODES || !idt || !prefix || !dev)
16edb90c39a564 Eli Billauer   2026-06-30   61  		return -ENODEV;
16edb90c39a564 Eli Billauer   2026-06-30   62  
bf4afc53b77aea Linus Torvalds 2026-02-21   63  	unit = kzalloc_obj(*unit);
8cb5d216ab3365 Eli Billauer   2021-05-26   64  
8cb5d216ab3365 Eli Billauer   2021-05-26   65  	if (!unit)
8cb5d216ab3365 Eli Billauer   2021-05-26   66  		return -ENOMEM;
8cb5d216ab3365 Eli Billauer   2021-05-26   67  
8cb5d216ab3365 Eli Billauer   2021-05-26   68  	mutex_lock(&unit_mutex);
8cb5d216ab3365 Eli Billauer   2021-05-26   69  
8cb5d216ab3365 Eli Billauer   2021-05-26   70  	if (!enumerate)
8cb5d216ab3365 Eli Billauer   2021-05-26   71  		snprintf(unit->name, UNITNAMELEN, "%s", prefix);
8cb5d216ab3365 Eli Billauer   2021-05-26   72  
8cb5d216ab3365 Eli Billauer   2021-05-26   73  	for (i = 0; enumerate; i++) {
16edb90c39a564 Eli Billauer   2026-06-30  @74  		if (i > 99) {
16edb90c39a564 Eli Billauer   2026-06-30   75  			dev_err(dev, "Failed to obtain unique unit name\n");
16edb90c39a564 Eli Billauer   2026-06-30   76  			goto fail_obtain;
16edb90c39a564 Eli Billauer   2026-06-30   77  		}
16edb90c39a564 Eli Billauer   2026-06-30   78  
8cb5d216ab3365 Eli Billauer   2021-05-26   79  		snprintf(unit->name, UNITNAMELEN, "%s_%02d",
8cb5d216ab3365 Eli Billauer   2021-05-26   80  			 prefix, i);
8cb5d216ab3365 Eli Billauer   2021-05-26   81  
8cb5d216ab3365 Eli Billauer   2021-05-26   82  		enumerate = false;
8cb5d216ab3365 Eli Billauer   2021-05-26   83  		list_for_each_entry(u, &unit_list, list_entry)
8cb5d216ab3365 Eli Billauer   2021-05-26   84  			if (!strcmp(unit->name, u->name)) {
8cb5d216ab3365 Eli Billauer   2021-05-26   85  				enumerate = true;
8cb5d216ab3365 Eli Billauer   2021-05-26   86  				break;
8cb5d216ab3365 Eli Billauer   2021-05-26   87  			}
8cb5d216ab3365 Eli Billauer   2021-05-26   88  	}
8cb5d216ab3365 Eli Billauer   2021-05-26   89  
8cb5d216ab3365 Eli Billauer   2021-05-26   90  	rc = alloc_chrdev_region(&mdev, 0, num_nodes, unit->name);
8cb5d216ab3365 Eli Billauer   2021-05-26   91  
8cb5d216ab3365 Eli Billauer   2021-05-26   92  	if (rc) {
8cb5d216ab3365 Eli Billauer   2021-05-26   93  		dev_warn(dev, "Failed to obtain major/minors");
8cb5d216ab3365 Eli Billauer   2021-05-26   94  		goto fail_obtain;
8cb5d216ab3365 Eli Billauer   2021-05-26   95  	}
8cb5d216ab3365 Eli Billauer   2021-05-26   96  
8cb5d216ab3365 Eli Billauer   2021-05-26   97  	unit->major = MAJOR(mdev);
8cb5d216ab3365 Eli Billauer   2021-05-26   98  	unit->lowest_minor = MINOR(mdev);
8cb5d216ab3365 Eli Billauer   2021-05-26   99  	unit->num_nodes = num_nodes;
8cb5d216ab3365 Eli Billauer   2021-05-26  100  	unit->private_data = private_data;
8cb5d216ab3365 Eli Billauer   2021-05-26  101  
8cb5d216ab3365 Eli Billauer   2021-05-26  102  	unit->cdev = cdev_alloc();
8cb5d216ab3365 Eli Billauer   2021-05-26  103  	if (!unit->cdev) {
8cb5d216ab3365 Eli Billauer   2021-05-26  104  		rc = -ENOMEM;
8cb5d216ab3365 Eli Billauer   2021-05-26  105  		goto unregister_chrdev;
8cb5d216ab3365 Eli Billauer   2021-05-26  106  	}
8cb5d216ab3365 Eli Billauer   2021-05-26  107  	unit->cdev->ops = fops;
8cb5d216ab3365 Eli Billauer   2021-05-26  108  	unit->cdev->owner = owner;
8cb5d216ab3365 Eli Billauer   2021-05-26  109  
8cb5d216ab3365 Eli Billauer   2021-05-26  110  	rc = cdev_add(unit->cdev, MKDEV(unit->major, unit->lowest_minor),
8cb5d216ab3365 Eli Billauer   2021-05-26  111  		      unit->num_nodes);
8cb5d216ab3365 Eli Billauer   2021-05-26  112  	if (rc) {
8cb5d216ab3365 Eli Billauer   2021-05-26  113  		dev_err(dev, "Failed to add cdev.\n");
8cb5d216ab3365 Eli Billauer   2021-05-26  114  		/* kobject_put() is normally done by cdev_del() */
8cb5d216ab3365 Eli Billauer   2021-05-26  115  		kobject_put(&unit->cdev->kobj);
8cb5d216ab3365 Eli Billauer   2021-05-26  116  		goto unregister_chrdev;
8cb5d216ab3365 Eli Billauer   2021-05-26  117  	}
8cb5d216ab3365 Eli Billauer   2021-05-26  118  
8cb5d216ab3365 Eli Billauer   2021-05-26  119  	for (i = 0; i < num_nodes; i++) {
8cb5d216ab3365 Eli Billauer   2021-05-26  120  		namelen = strnlen(idt, len);
8cb5d216ab3365 Eli Billauer   2021-05-26  121  
8cb5d216ab3365 Eli Billauer   2021-05-26  122  		if (namelen == len) {
8cb5d216ab3365 Eli Billauer   2021-05-26  123  			dev_err(dev, "IDT's list of names is too short. This is exceptionally weird, because its CRC is OK\n");
8cb5d216ab3365 Eli Billauer   2021-05-26  124  			rc = -ENODEV;
8cb5d216ab3365 Eli Billauer   2021-05-26  125  			goto unroll_device_create;
8cb5d216ab3365 Eli Billauer   2021-05-26  126  		}
8cb5d216ab3365 Eli Billauer   2021-05-26  127  
8cb5d216ab3365 Eli Billauer   2021-05-26  128  		snprintf(devname, sizeof(devname), "%s_%s",
8cb5d216ab3365 Eli Billauer   2021-05-26  129  			 unit->name, idt);
8cb5d216ab3365 Eli Billauer   2021-05-26  130  
8cb5d216ab3365 Eli Billauer   2021-05-26  131  		len -= namelen + 1;
8cb5d216ab3365 Eli Billauer   2021-05-26  132  		idt += namelen + 1;
8cb5d216ab3365 Eli Billauer   2021-05-26  133  
9ee202e69e2947 Ivan Orlov     2023-06-20  134  		device = device_create(&xillybus_class,
8cb5d216ab3365 Eli Billauer   2021-05-26  135  				       NULL,
8cb5d216ab3365 Eli Billauer   2021-05-26  136  				       MKDEV(unit->major,
8cb5d216ab3365 Eli Billauer   2021-05-26  137  					     i + unit->lowest_minor),
8cb5d216ab3365 Eli Billauer   2021-05-26  138  				       NULL,
8cb5d216ab3365 Eli Billauer   2021-05-26  139  				       "%s", devname);
8cb5d216ab3365 Eli Billauer   2021-05-26  140  
8cb5d216ab3365 Eli Billauer   2021-05-26  141  		if (IS_ERR(device)) {
8cb5d216ab3365 Eli Billauer   2021-05-26  142  			dev_err(dev, "Failed to create %s device. Aborting.\n",
8cb5d216ab3365 Eli Billauer   2021-05-26  143  				devname);
8cb5d216ab3365 Eli Billauer   2021-05-26  144  			rc = -ENODEV;
8cb5d216ab3365 Eli Billauer   2021-05-26  145  			goto unroll_device_create;
8cb5d216ab3365 Eli Billauer   2021-05-26  146  		}
8cb5d216ab3365 Eli Billauer   2021-05-26  147  	}
8cb5d216ab3365 Eli Billauer   2021-05-26  148  
8cb5d216ab3365 Eli Billauer   2021-05-26  149  	if (len) {
8cb5d216ab3365 Eli Billauer   2021-05-26  150  		dev_err(dev, "IDT's list of names is too long. This is exceptionally weird, because its CRC is OK\n");
8cb5d216ab3365 Eli Billauer   2021-05-26  151  		rc = -ENODEV;
8cb5d216ab3365 Eli Billauer   2021-05-26  152  		goto unroll_device_create;
8cb5d216ab3365 Eli Billauer   2021-05-26  153  	}
8cb5d216ab3365 Eli Billauer   2021-05-26  154  
8cb5d216ab3365 Eli Billauer   2021-05-26  155  	list_add_tail(&unit->list_entry, &unit_list);
8cb5d216ab3365 Eli Billauer   2021-05-26  156  
8cb5d216ab3365 Eli Billauer   2021-05-26  157  	dev_info(dev, "Created %d device files.\n", num_nodes);
8cb5d216ab3365 Eli Billauer   2021-05-26  158  
8cb5d216ab3365 Eli Billauer   2021-05-26  159  	mutex_unlock(&unit_mutex);
8cb5d216ab3365 Eli Billauer   2021-05-26  160  
8cb5d216ab3365 Eli Billauer   2021-05-26  161  	return 0;
8cb5d216ab3365 Eli Billauer   2021-05-26  162  
8cb5d216ab3365 Eli Billauer   2021-05-26  163  unroll_device_create:
8cb5d216ab3365 Eli Billauer   2021-05-26  164  	for (i--; i >= 0; i--)
9ee202e69e2947 Ivan Orlov     2023-06-20  165  		device_destroy(&xillybus_class, MKDEV(unit->major,
8cb5d216ab3365 Eli Billauer   2021-05-26  166  						     i + unit->lowest_minor));
8cb5d216ab3365 Eli Billauer   2021-05-26  167  
8cb5d216ab3365 Eli Billauer   2021-05-26  168  	cdev_del(unit->cdev);
8cb5d216ab3365 Eli Billauer   2021-05-26  169  
8cb5d216ab3365 Eli Billauer   2021-05-26  170  unregister_chrdev:
8cb5d216ab3365 Eli Billauer   2021-05-26  171  	unregister_chrdev_region(MKDEV(unit->major, unit->lowest_minor),
8cb5d216ab3365 Eli Billauer   2021-05-26  172  				 unit->num_nodes);
8cb5d216ab3365 Eli Billauer   2021-05-26  173  
8cb5d216ab3365 Eli Billauer   2021-05-26  174  fail_obtain:
8cb5d216ab3365 Eli Billauer   2021-05-26  175  	mutex_unlock(&unit_mutex);
8cb5d216ab3365 Eli Billauer   2021-05-26  176  
8cb5d216ab3365 Eli Billauer   2021-05-26  177  	kfree(unit);
8cb5d216ab3365 Eli Billauer   2021-05-26  178  
8cb5d216ab3365 Eli Billauer   2021-05-26  179  	return rc;
8cb5d216ab3365 Eli Billauer   2021-05-26  180  }
8cb5d216ab3365 Eli Billauer   2021-05-26  181  EXPORT_SYMBOL(xillybus_init_chrdev);
8cb5d216ab3365 Eli Billauer   2021-05-26  182  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.