url:    
https://github.com/0day-ci/linux/commits/eli-billauer-gmail-com/Submission-of-XillyUSB-driver/20210309-193645
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git  
080951f99de1e483a9a48f34c079b634f2912a54
config: x86_64-randconfig-m001-20210309 (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 <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

smatch warnings:
drivers/char/xillybus/xillybus_class.c:86 xillybus_init_chrdev() warn: ignoring 
unreachable code.
drivers/char/xillybus/xillybus_class.c:96 xillybus_init_chrdev() warn: missing 
error code 'rc'

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

10702b71f93292 Eli Billauer 2021-03-09   42  int xillybus_init_chrdev(struct 
device *dev,
10702b71f93292 Eli Billauer 2021-03-09   43                      const struct 
file_operations *fops,
10702b71f93292 Eli Billauer 2021-03-09   44                      struct module 
*owner,
10702b71f93292 Eli Billauer 2021-03-09   45                      void 
*private_data,
10702b71f93292 Eli Billauer 2021-03-09   46                      unsigned char 
*idt, unsigned int len,
10702b71f93292 Eli Billauer 2021-03-09   47                      int num_nodes,
10702b71f93292 Eli Billauer 2021-03-09   48                      const char 
*prefix, bool enumerate)
10702b71f93292 Eli Billauer 2021-03-09   49  {
10702b71f93292 Eli Billauer 2021-03-09   50     int rc;
10702b71f93292 Eli Billauer 2021-03-09   51     dev_t mdev;
10702b71f93292 Eli Billauer 2021-03-09   52     int i;
10702b71f93292 Eli Billauer 2021-03-09   53     char devname[48];
10702b71f93292 Eli Billauer 2021-03-09   54  
10702b71f93292 Eli Billauer 2021-03-09   55     struct device *device;
10702b71f93292 Eli Billauer 2021-03-09   56     size_t namelen;
10702b71f93292 Eli Billauer 2021-03-09   57     struct xilly_unit *unit, *u;
10702b71f93292 Eli Billauer 2021-03-09   58  
10702b71f93292 Eli Billauer 2021-03-09   59     unit = kzalloc(sizeof(*unit), 
GFP_KERNEL);
10702b71f93292 Eli Billauer 2021-03-09   60  
10702b71f93292 Eli Billauer 2021-03-09   61     if (!unit)
10702b71f93292 Eli Billauer 2021-03-09   62             return -ENOMEM;
10702b71f93292 Eli Billauer 2021-03-09   63  
10702b71f93292 Eli Billauer 2021-03-09   64     mutex_lock(&unit_mutex);
10702b71f93292 Eli Billauer 2021-03-09   65  
10702b71f93292 Eli Billauer 2021-03-09   66     if (!enumerate)
10702b71f93292 Eli Billauer 2021-03-09   67             snprintf(unit->name, 
UNITNAMELEN, "%s", prefix);
10702b71f93292 Eli Billauer 2021-03-09   68  
10702b71f93292 Eli Billauer 2021-03-09   69     for (i = 0; enumerate; i++) {
10702b71f93292 Eli Billauer 2021-03-09   70             snprintf(unit->name, 
UNITNAMELEN, "%s_%02d",
10702b71f93292 Eli Billauer 2021-03-09   71                      prefix, i);
10702b71f93292 Eli Billauer 2021-03-09   72  
10702b71f93292 Eli Billauer 2021-03-09   73             enumerate = false;
10702b71f93292 Eli Billauer 2021-03-09   74             list_for_each_entry(u, 
&unit_list, list_entry)
10702b71f93292 Eli Billauer 2021-03-09   75                     if 
(!strcmp(unit->name, u->name)) {
10702b71f93292 Eli Billauer 2021-03-09   76                             
enumerate = true;
10702b71f93292 Eli Billauer 2021-03-09   77                             break;
10702b71f93292 Eli Billauer 2021-03-09   78                     }
10702b71f93292 Eli Billauer 2021-03-09   79     }
10702b71f93292 Eli Billauer 2021-03-09   80  
10702b71f93292 Eli Billauer 2021-03-09   81     rc = alloc_chrdev_region(&mdev, 
0, num_nodes, unit->name);
10702b71f93292 Eli Billauer 2021-03-09   82  
10702b71f93292 Eli Billauer 2021-03-09   83     if (rc) {
10702b71f93292 Eli Billauer 2021-03-09   84             dev_warn(dev, "Failed 
to obtain major/minors");
10702b71f93292 Eli Billauer 2021-03-09   85             goto fail_obtain;
                                                        ^^^^^^^^^^^^^^^^^
10702b71f93292 Eli Billauer 2021-03-09  @86             return rc;
                                                        ^^^^^^^^^^
Unreachable

10702b71f93292 Eli Billauer 2021-03-09   87     }
10702b71f93292 Eli Billauer 2021-03-09   88  
10702b71f93292 Eli Billauer 2021-03-09   89     unit->major = MAJOR(mdev);
10702b71f93292 Eli Billauer 2021-03-09   90     unit->lowest_minor = 
MINOR(mdev);
10702b71f93292 Eli Billauer 2021-03-09   91     unit->num_nodes = num_nodes;
10702b71f93292 Eli Billauer 2021-03-09   92     unit->private_data = 
private_data;
10702b71f93292 Eli Billauer 2021-03-09   93  
10702b71f93292 Eli Billauer 2021-03-09   94     unit->cdev = cdev_alloc();
10702b71f93292 Eli Billauer 2021-03-09   95     if (!unit->cdev)
10702b71f93292 Eli Billauer 2021-03-09  @96             goto unregister_chrdev;

"rc = -ENOMEM;"

10702b71f93292 Eli Billauer 2021-03-09   97  
10702b71f93292 Eli Billauer 2021-03-09   98     unit->cdev->ops = fops;
10702b71f93292 Eli Billauer 2021-03-09   99     unit->cdev->owner = owner;
10702b71f93292 Eli Billauer 2021-03-09  100  
10702b71f93292 Eli Billauer 2021-03-09  101     rc = cdev_add(unit->cdev, 
MKDEV(unit->major, unit->lowest_minor),
10702b71f93292 Eli Billauer 2021-03-09  102                   unit->num_nodes);
10702b71f93292 Eli Billauer 2021-03-09  103     if (rc) {
10702b71f93292 Eli Billauer 2021-03-09  104             dev_err(dev, "Failed to 
add cdev.\n");
10702b71f93292 Eli Billauer 2021-03-09  105             /* kobject_put() is 
normally done by cdev_del() */
10702b71f93292 Eli Billauer 2021-03-09  106             
kobject_put(&unit->cdev->kobj);
10702b71f93292 Eli Billauer 2021-03-09  107             goto unregister_chrdev;
10702b71f93292 Eli Billauer 2021-03-09  108     }
10702b71f93292 Eli Billauer 2021-03-09  109  
10702b71f93292 Eli Billauer 2021-03-09  110     for (i = 0; i < num_nodes; i++) 
{
10702b71f93292 Eli Billauer 2021-03-09  111             namelen = strnlen(idt, 
len);
10702b71f93292 Eli Billauer 2021-03-09  112  
10702b71f93292 Eli Billauer 2021-03-09  113             if (namelen == len) {
10702b71f93292 Eli Billauer 2021-03-09  114                     dev_err(dev, 
"IDT's list of names is too short. This is exceptionally weird, because its CRC 
is OK\n");
10702b71f93292 Eli Billauer 2021-03-09  115                     rc = -ENODEV;
10702b71f93292 Eli Billauer 2021-03-09  116                     goto 
unroll_device_create;
10702b71f93292 Eli Billauer 2021-03-09  117             }
10702b71f93292 Eli Billauer 2021-03-09  118  
10702b71f93292 Eli Billauer 2021-03-09  119             snprintf(devname, 
sizeof(devname), "%s_%s",
10702b71f93292 Eli Billauer 2021-03-09  120                      unit->name, 
idt);
10702b71f93292 Eli Billauer 2021-03-09  121  
10702b71f93292 Eli Billauer 2021-03-09  122             len -= namelen + 1;
10702b71f93292 Eli Billauer 2021-03-09  123             idt += namelen + 1;
10702b71f93292 Eli Billauer 2021-03-09  124  
10702b71f93292 Eli Billauer 2021-03-09  125             device = 
device_create(xillybus_class,
10702b71f93292 Eli Billauer 2021-03-09  126                                    
NULL,
10702b71f93292 Eli Billauer 2021-03-09  127                                    
MKDEV(unit->major,
10702b71f93292 Eli Billauer 2021-03-09  128                                     
     i + unit->lowest_minor),
10702b71f93292 Eli Billauer 2021-03-09  129                                    
NULL,
10702b71f93292 Eli Billauer 2021-03-09  130                                    
"%s", devname);
10702b71f93292 Eli Billauer 2021-03-09  131  
10702b71f93292 Eli Billauer 2021-03-09  132             if (IS_ERR(device)) {
10702b71f93292 Eli Billauer 2021-03-09  133                     dev_err(dev, 
"Failed to create %s device. Aborting.\n",
10702b71f93292 Eli Billauer 2021-03-09  134                             
devname);
10702b71f93292 Eli Billauer 2021-03-09  135                     rc = -ENODEV;
10702b71f93292 Eli Billauer 2021-03-09  136                     goto 
unroll_device_create;
10702b71f93292 Eli Billauer 2021-03-09  137             }
10702b71f93292 Eli Billauer 2021-03-09  138     }
10702b71f93292 Eli Billauer 2021-03-09  139  
10702b71f93292 Eli Billauer 2021-03-09  140     if (len) {
10702b71f93292 Eli Billauer 2021-03-09  141             dev_err(dev, "IDT's 
list of names is too long. This is exceptionally weird, because its CRC is 
OK\n");
10702b71f93292 Eli Billauer 2021-03-09  142             rc = -ENODEV;
10702b71f93292 Eli Billauer 2021-03-09  143             goto 
unroll_device_create;
10702b71f93292 Eli Billauer 2021-03-09  144     }
10702b71f93292 Eli Billauer 2021-03-09  145  
10702b71f93292 Eli Billauer 2021-03-09  146     
list_add_tail(&unit->list_entry, &unit_list);
10702b71f93292 Eli Billauer 2021-03-09  147  
10702b71f93292 Eli Billauer 2021-03-09  148     dev_info(dev, "Created %d 
device files.\n", num_nodes);
10702b71f93292 Eli Billauer 2021-03-09  149  
10702b71f93292 Eli Billauer 2021-03-09  150     mutex_unlock(&unit_mutex);
10702b71f93292 Eli Billauer 2021-03-09  151  
10702b71f93292 Eli Billauer 2021-03-09  152     return 0;
10702b71f93292 Eli Billauer 2021-03-09  153  
10702b71f93292 Eli Billauer 2021-03-09  154  unroll_device_create:
10702b71f93292 Eli Billauer 2021-03-09  155     for (i--; i >= 0; i--)
10702b71f93292 Eli Billauer 2021-03-09  156             
device_destroy(xillybus_class, MKDEV(unit->major,
10702b71f93292 Eli Billauer 2021-03-09  157                                     
             i + unit->lowest_minor));
10702b71f93292 Eli Billauer 2021-03-09  158  
10702b71f93292 Eli Billauer 2021-03-09  159     cdev_del(unit->cdev);
10702b71f93292 Eli Billauer 2021-03-09  160  
10702b71f93292 Eli Billauer 2021-03-09  161  unregister_chrdev:
10702b71f93292 Eli Billauer 2021-03-09  162     
unregister_chrdev_region(MKDEV(unit->major, unit->lowest_minor),
10702b71f93292 Eli Billauer 2021-03-09  163                              
unit->num_nodes);
10702b71f93292 Eli Billauer 2021-03-09  164  
10702b71f93292 Eli Billauer 2021-03-09  165  fail_obtain:
10702b71f93292 Eli Billauer 2021-03-09  166     mutex_unlock(&unit_mutex);
10702b71f93292 Eli Billauer 2021-03-09  167  
10702b71f93292 Eli Billauer 2021-03-09  168     kfree(unit);
10702b71f93292 Eli Billauer 2021-03-09  169  
10702b71f93292 Eli Billauer 2021-03-09  170     return rc;
10702b71f93292 Eli Billauer 2021-03-09  171  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org 

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- kbu...@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to