tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git 
staging-next
head:   06b0c0dce88e2aa2f01343db0f26d214d7f264a0
commit: a2e904fc59e15d9e4128415579a2664ab3a1ed14 [67/73] staging: hikey9xx: 
hi6421-spmi-pmic: cleanup probe code
config: x86_64-randconfig-m001-20210207 (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 <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

New smatch warnings:
drivers/staging/hikey9xx/hi6421-spmi-pmic.c:238 hi6421_spmi_pmic_probe() warn: 
'ddata->irq' not released on lines: 238.

Old smatch warnings:
drivers/staging/hikey9xx/hi6421-spmi-pmic.c:52 hi6421_spmi_irq_handler() error: 
uninitialized symbol 'offset'.

vim +238 drivers/staging/hikey9xx/hi6421-spmi-pmic.c

1eb2784a90925d Mauro Carvalho Chehab 2020-08-17  164  static int 
hi6421_spmi_pmic_probe(struct spmi_device *pdev)
4524ac56cdcabf Mayulong              2020-08-17  165  {
4524ac56cdcabf Mayulong              2020-08-17  166    struct device *dev = 
&pdev->dev;
4524ac56cdcabf Mayulong              2020-08-17  167    struct device_node *np 
= dev->of_node;
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  168    struct hi6421_spmi_pmic 
*ddata;
4524ac56cdcabf Mayulong              2020-08-17  169    unsigned int virq;
6b946699252c68 Mauro Carvalho Chehab 2020-08-17  170    int ret, i;
4524ac56cdcabf Mayulong              2020-08-17  171  
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  172    ddata = 
devm_kzalloc(dev, sizeof(*ddata), GFP_KERNEL);
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  173    if (!ddata)
4524ac56cdcabf Mayulong              2020-08-17  174            return -ENOMEM;
4524ac56cdcabf Mayulong              2020-08-17  175  
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  176    ddata->regmap = 
devm_regmap_init_spmi_ext(pdev, &regmap_config);
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  177    if 
(IS_ERR(ddata->regmap))
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  178            return 
PTR_ERR(ddata->regmap);
fb02e3ebfb2da2 Mauro Carvalho Chehab 2021-01-29  179  
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  180    
spin_lock_init(&ddata->lock);
4524ac56cdcabf Mayulong              2020-08-17  181  
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  182    ddata->dev = dev;
4524ac56cdcabf Mayulong              2020-08-17  183  
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  184    ddata->gpio = 
of_get_gpio(np, 0);
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  185    if (ddata->gpio < 0)
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  186            return 
ddata->gpio;
4524ac56cdcabf Mayulong              2020-08-17  187  
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  188    if 
(!gpio_is_valid(ddata->gpio))
4524ac56cdcabf Mayulong              2020-08-17  189            return -EINVAL;
4524ac56cdcabf Mayulong              2020-08-17  190  
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  191    ret = 
devm_gpio_request_one(dev, ddata->gpio, GPIOF_IN, "pmic");
4524ac56cdcabf Mayulong              2020-08-17  192    if (ret < 0) {
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  193            dev_err(dev, 
"Failed to request gpio%d\n", ddata->gpio);
4524ac56cdcabf Mayulong              2020-08-17  194            return ret;
4524ac56cdcabf Mayulong              2020-08-17  195    }
4524ac56cdcabf Mayulong              2020-08-17  196  
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  197    ddata->irq = 
gpio_to_irq(ddata->gpio);
4524ac56cdcabf Mayulong              2020-08-17  198  
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  199    
hi6421_spmi_pmic_irq_prc(ddata);
4524ac56cdcabf Mayulong              2020-08-17  200  
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  201    ddata->irqs = 
devm_kzalloc(dev, HISI_IRQ_NUM * sizeof(int), GFP_KERNEL);
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  202    if (!ddata->irqs)
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  203            return -ENOMEM;
4524ac56cdcabf Mayulong              2020-08-17  204  
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  205    ddata->domain = 
irq_domain_add_simple(np, HISI_IRQ_NUM, 0,
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  206                            
             &hi6421_spmi_domain_ops, ddata);
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  207    if (!ddata->domain) {
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  208            dev_err(dev, 
"Failed to create IRQ domain\n");
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  209            return -ENODEV;
4524ac56cdcabf Mayulong              2020-08-17  210    }
4524ac56cdcabf Mayulong              2020-08-17  211  
b240d0143bfbc9 Mauro Carvalho Chehab 2020-08-18  212    for (i = 0; i < 
HISI_IRQ_NUM; i++) {
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  213            virq = 
irq_create_mapping(ddata->domain, i);
6b946699252c68 Mauro Carvalho Chehab 2020-08-17  214            if (!virq) {
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  215                    
dev_err(dev, "Failed to map H/W IRQ\n");
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  216                    return 
-ENOSPC;
4524ac56cdcabf Mayulong              2020-08-17  217            }
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  218            ddata->irqs[i] 
= virq;
4524ac56cdcabf Mayulong              2020-08-17  219    }
4524ac56cdcabf Mayulong              2020-08-17  220  
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  221    ret = 
request_threaded_irq(ddata->irq, hi6421_spmi_irq_handler, NULL,
4524ac56cdcabf Mayulong              2020-08-17  222                            
   IRQF_TRIGGER_LOW | IRQF_SHARED | IRQF_NO_SUSPEND,
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  223                            
   "pmic", ddata);

Use the devm_request_threaded_irq() version.

4524ac56cdcabf Mayulong              2020-08-17  224    if (ret < 0) {
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  225            dev_err(dev, 
"Failed to start IRQ handling thread: error %d\n",
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  226                    ret);
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  227            return ret;
4524ac56cdcabf Mayulong              2020-08-17  228    }
4524ac56cdcabf Mayulong              2020-08-17  229  
fcd732406c5d65 Mauro Carvalho Chehab 2021-01-29  230    
dev_set_drvdata(&pdev->dev, ddata);
cf0f27b7b20b5f Mauro Carvalho Chehab 2020-08-17  231  
cf0f27b7b20b5f Mauro Carvalho Chehab 2020-08-17  232    ret = 
devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_NONE,
cf0f27b7b20b5f Mauro Carvalho Chehab 2020-08-17  233                            
   hi6421v600_devs, ARRAY_SIZE(hi6421v600_devs),
cf0f27b7b20b5f Mauro Carvalho Chehab 2020-08-17  234                            
   NULL, 0, NULL);
a2e904fc59e15d Mauro Carvalho Chehab 2021-01-29  235    if (ret < 0)
6b946699252c68 Mauro Carvalho Chehab 2020-08-17  236            dev_err(dev, 
"Failed to add child devices: %d\n", ret);

Resource leak if devm_mfd_add_devices() fails.

6b946699252c68 Mauro Carvalho Chehab 2020-08-17  237  
4524ac56cdcabf Mayulong              2020-08-17 @238    return ret;
4524ac56cdcabf Mayulong              2020-08-17  239  }

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

Attachment: .config.gz
Description: application/gzip

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to