tree:
https://github.com/l1k/linux spi_fixes_part2
head: 1124444e1890c011ce93035cc73c8df8a206103d
commit: 99e9a80eb65b1787cd055025129a45e24f2fc6ae [8/16] spi: mt7621: Don't leak SPI
master in probe error path
config: riscv-randconfig-r006-20201115 (attached as .config)
compiler: clang version 12.0.0 (
https://github.com/llvm/llvm-project
9a85643cd357e412cff69067bb5c4840e228c2ab)
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# install riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
#
https://github.com/l1k/linux/commit/99e9a80eb65b1787cd055025129a45e24f2fc6ae
git remote add l1k
https://github.com/l1k/linux
git fetch --no-tags l1k spi_fixes_part2
git checkout 99e9a80eb65b1787cd055025129a45e24f2fc6ae
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
> drivers/spi/spi-mt7621.c:354:6: warning: variable 'rs' is
used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
if (!master) {
^~~~~~~
drivers/spi/spi-mt7621.c:391:24: note: uninitialized use occurs here
clk_disable_unprepare(rs->clk);
^~
drivers/spi/spi-mt7621.c:354:2: note: remove the 'if' if its condition is
always false
if (!master) {
^~~~~~~~~~~~~~
drivers/spi/spi-mt7621.c:328:23: note: initialize the variable 'rs' to silence
this warning
struct mt7621_spi *rs;
^
= NULL
1 warning generated.
vim +354 drivers/spi/spi-mt7621.c
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 323
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 324
static int mt7621_spi_probe(struct platform_device *pdev)
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 325 {
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 326
const struct of_device_id *match;
cbd66c626e1674 drivers/spi/spi-mt7621.c Stefan Roese 2019-03-25 327
struct spi_controller *master;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 328
struct mt7621_spi *rs;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 329
void __iomem *base;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 330
int status = 0;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 331
struct clk *clk;
46c337872f34bc drivers/staging/mt7621-spi/spi-mt7621.c Stefan Roese 2019-02-01 332
int ret;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 333
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 334
match = of_match_device(mt7621_spi_match, &pdev->dev);
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 335 if
(!match)
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 336
return -EINVAL;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 337
f88771ca7104e4 drivers/spi/spi-mt7621.c YueHaibing 2019-09-04 338
base = devm_platform_ioremap_resource(pdev, 0);
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 339 if
(IS_ERR(base))
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 340
return PTR_ERR(base);
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 341
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 342
clk = devm_clk_get(&pdev->dev, NULL);
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 343 if
(IS_ERR(clk)) {
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 344
dev_err(&pdev->dev, "unable to get SYS clock, err=%d\n",
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 345
status);
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 346
return PTR_ERR(clk);
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 347 }
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 348
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 349
status = clk_prepare_enable(clk);
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 350 if
(status)
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 351
return status;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 352
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 353
master = devm_spi_alloc_master(&pdev->dev, sizeof(*rs));
5ccbce3a0b0e10 drivers/staging/mt7621-spi/spi-mt7621.c Jasminko Dedic 2019-02-04 @354 if
(!master) {
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 355
dev_info(&pdev->dev, "master allocation failed\n");
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 356
ret = -ENOMEM;
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 357
goto err_clk_disable;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 358 }
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 359
354ea2ee6d2bc0 drivers/staging/mt7621-spi/spi-mt7621.c Chuanhong Guo 2018-12-06 360
master->mode_bits = SPI_LSB_FIRST;
cbd66c626e1674 drivers/spi/spi-mt7621.c Stefan Roese 2019-03-25 361
master->flags = SPI_CONTROLLER_HALF_DUPLEX;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 362
master->setup = mt7621_spi_setup;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 363
master->transfer_one_message = mt7621_spi_transfer_one_message;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 364
master->bits_per_word_mask = SPI_BPW_MASK(8);
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 365
master->dev.of_node = pdev->dev.of_node;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 366
master->num_chipselect = 2;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 367
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 368
dev_set_drvdata(&pdev->dev, master);
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 369
cbd66c626e1674 drivers/spi/spi-mt7621.c Stefan Roese 2019-03-25 370 rs
= spi_controller_get_devdata(master);
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 371
rs->base = base;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 372
rs->clk = clk;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 373
rs->master = master;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 374
rs->sys_freq = clk_get_rate(rs->clk);
bf732c6bff5b57 drivers/staging/mt7621-spi/spi-mt7621.c NeilBrown 2018-06-07 375
rs->pending_write = 0;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 376
dev_info(&pdev->dev, "sys_freq: %u\n", rs->sys_freq);
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 377
46c337872f34bc drivers/staging/mt7621-spi/spi-mt7621.c Stefan Roese 2019-02-01 378
ret = device_reset(&pdev->dev);
46c337872f34bc drivers/staging/mt7621-spi/spi-mt7621.c Stefan Roese 2019-02-01 379 if
(ret) {
46c337872f34bc drivers/staging/mt7621-spi/spi-mt7621.c Stefan Roese 2019-02-01 380
dev_err(&pdev->dev, "SPI reset failed!\n");
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 381
goto err_clk_disable;
46c337872f34bc drivers/staging/mt7621-spi/spi-mt7621.c Stefan Roese 2019-02-01 382 }
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 383
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 384
ret = spi_register_controller(master);
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 385 if
(ret)
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 386
goto err_clk_disable;
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 387
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 388
return 0;
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 389
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 390
err_clk_disable:
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 391
clk_disable_unprepare(rs->clk);
99e9a80eb65b17 drivers/spi/spi-mt7621.c Lukas Wunner 2020-11-05 392
return ret;
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 393 }
1ab7f2a43558b3 drivers/staging/mt7621-spi/spi-mt7621.c John Crispin 2018-03-15 394
:::::: The code at line 354 was first introduced by commit
:::::: 5ccbce3a0b0e10694f1a62e8b1ce9b46d1809eea staging: mt7621-spi: Clean up comparison
to NULL
:::::: TO: Jasminko Dedic <betelge(a)gmail.com>
:::::: CC: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org