lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Fri, 9 Jun 2023 08:03:03 +0800
From:   kernel test robot <lkp@...el.com>
To:     Mauro Carvalho Chehab <mchehab@...nel.org>
Cc:     llvm@...ts.linux.dev, oe-kbuild-all@...ts.linux.dev,
        linux-kernel@...r.kernel.org, linux-media@...r.kernel.org
Subject: drivers/media/tuners/xc2028.c:717:12: warning: stack frame size
 (3520) exceeds limit (2048) in 'check_firmware'

Hi Mauro,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   8d15d5e1851b1bbb9cd3289b84c7f32399e06ac5
commit: d76231e460fbaba7115212bf55f1eab35aba6223 media: xc2028: rename the driver from tuner-xc2028
date:   1 year, 3 months ago
config: riscv-randconfig-r012-20230608 (https://download.01.org/0day-ci/archive/20230609/202306090751.d3DQi8se-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build):
        mkdir -p ~/bin
        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://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d76231e460fbaba7115212bf55f1eab35aba6223
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout d76231e460fbaba7115212bf55f1eab35aba6223
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=riscv olddefconfig
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang ~/bin/make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash drivers/gpu/drm/ drivers/hid/ drivers/media/tuners/ lib/

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@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202306090751.d3DQi8se-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/media/tuners/xc2028.c:717:12: warning: stack frame size (3520) exceeds limit (2048) in 'check_firmware' [-Wframe-larger-than]
   static int check_firmware(struct dvb_frontend *fe, unsigned int type,
              ^
   1 warning generated.


vim +/check_firmware +717 drivers/media/tuners/xc2028.c

ebf044f46f138b drivers/media/tuners/tuner-xc2028.c        Mauro Carvalho Chehab 2014-01-06  716  
00deff1a076dc1 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-24 @717  static int check_firmware(struct dvb_frontend *fe, unsigned int type,
66c2d53db28276 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-25  718  			  v4l2_std_id std, __u16 int_freq)
6cb45879dca84c drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-02  719  {
215b95baf969c6 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-23  720  	struct xc2028_data         *priv = fe->tuner_priv;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  721  	struct firmware_properties new_fw;
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30  722  	int			   rc, retry_count = 0;
7d58d1117ec02f drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  723  	u16			   version, hwmodel;
47bd5bc6486a52 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  724  	v4l2_std_id		   std0;
6cb45879dca84c drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-02  725  
7e28adb2497f6b drivers/media/video/tuner-xc2028.c         Harvey Harrison       2008-04-08  726  	tuner_dbg("%s called\n", __func__);
6cb45879dca84c drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-02  727  
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30  728  	rc = check_device_status(priv);
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-24  729  	if (rc < 0)
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-24  730  		return rc;
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-24  731  
0f6dac18ccc6fb drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2008-01-05  732  	if (priv->ctrl.mts && !(type & FM))
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  733  		type |= MTS;
6cb45879dca84c drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-02  734  
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  735  retry:
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  736  	new_fw.type = type;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  737  	new_fw.id = std;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  738  	new_fw.std_req = std;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  739  	new_fw.scode_table = SCODE | priv->ctrl.scode_table;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  740  	new_fw.scode_nr = 0;
66c2d53db28276 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-25  741  	new_fw.int_freq = int_freq;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  742  
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  743  	tuner_dbg("checking firmware, user requested type=");
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  744  	if (debug) {
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  745  		dump_firm_type(new_fw.type);
15c8ffc41a1559 drivers/media/tuners/tuner-xc2028.c        Mauro Carvalho Chehab 2016-10-12  746  		printk(KERN_CONT "(%x), id %016llx, ", new_fw.type,
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  747  		       (unsigned long long)new_fw.std_req);
e026268870b5f0 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-12-02  748  		if (!int_freq) {
15c8ffc41a1559 drivers/media/tuners/tuner-xc2028.c        Mauro Carvalho Chehab 2016-10-12  749  			printk(KERN_CONT "scode_tbl ");
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  750  			dump_firm_type(priv->ctrl.scode_table);
15c8ffc41a1559 drivers/media/tuners/tuner-xc2028.c        Mauro Carvalho Chehab 2016-10-12  751  			printk(KERN_CONT "(%x), ", priv->ctrl.scode_table);
e026268870b5f0 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-12-02  752  		} else
15c8ffc41a1559 drivers/media/tuners/tuner-xc2028.c        Mauro Carvalho Chehab 2016-10-12  753  			printk(KERN_CONT "int_freq %d, ", new_fw.int_freq);
15c8ffc41a1559 drivers/media/tuners/tuner-xc2028.c        Mauro Carvalho Chehab 2016-10-12  754  		printk(KERN_CONT "scode_nr %d\n", new_fw.scode_nr);
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  755  	}
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  756  
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30  757  	/*
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30  758  	 * No need to reload base firmware if it matches and if the tuner
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30  759  	 * is not at sleep mode
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30  760  	 */
3a495ed77a2f58 drivers/media/common/tuners/tuner-xc2028.c Dan Carpenter         2012-07-21  761  	if ((priv->state == XC2028_ACTIVE) &&
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30  762  	    (((BASE | new_fw.type) & BASE_TYPES) ==
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30  763  	    (priv->cur_fw.type & BASE_TYPES))) {
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  764  		tuner_dbg("BASE firmware not changed.\n");
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  765  		goto skip_base;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  766  	}
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  767  
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  768  	/* Updating BASE - forget about all currently loaded firmware */
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  769  	memset(&priv->cur_fw, 0, sizeof(priv->cur_fw));
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  770  
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  771  	/* Reset is needed before loading firmware */
d7cba043d7ec84 drivers/media/common/tuners/tuner-xc2028.c Michael Krufky        2008-09-12  772  	rc = do_tuner_callback(fe, XC2028_TUNER_RESET, 0);
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  773  	if (rc < 0)
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  774  		goto fail;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  775  
47bd5bc6486a52 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  776  	/* BASE firmwares are all std0 */
47bd5bc6486a52 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  777  	std0 = 0;
47bd5bc6486a52 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  778  	rc = load_firmware(fe, BASE | new_fw.type, &std0);
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  779  	if (rc < 0) {
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  780  		tuner_err("Error %d while loading base firmware\n",
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  781  			  rc);
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  782  		goto fail;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  783  	}
5403bbae9bfebe drivers/media/video/tuner-xc2028.c         Michel Ludwig         2007-11-16  784  
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-24  785  	/* Load INIT1, if needed */
83fb340b318487 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-15  786  	tuner_dbg("Load init1 firmware, if exists\n");
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-24  787  
47bd5bc6486a52 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  788  	rc = load_firmware(fe, BASE | INIT1 | new_fw.type, &std0);
1ad0b796a3fa3d drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  789  	if (rc == -ENOENT)
1ad0b796a3fa3d drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  790  		rc = load_firmware(fe, (BASE | INIT1 | new_fw.type) & ~F8MHZ,
1ad0b796a3fa3d drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  791  				   &std0);
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  792  	if (rc < 0 && rc != -ENOENT) {
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  793  		tuner_err("Error %d while loading init1 firmware\n",
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  794  			  rc);
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  795  		goto fail;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  796  	}
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-24  797  
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  798  skip_base:
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  799  	/*
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  800  	 * No need to reload standard specific firmware if base firmware
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  801  	 * was not reloaded and requested video standards have not changed.
de3fe21ba2fdc0 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-24  802  	 */
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  803  	if (priv->cur_fw.type == (BASE | new_fw.type) &&
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  804  	    priv->cur_fw.std_req == std) {
83fb340b318487 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-15  805  		tuner_dbg("Std-specific firmware already loaded.\n");
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  806  		goto skip_std_specific;
2e4160ca8046e3 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-07-18  807  	}
6cb45879dca84c drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-02  808  
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  809  	/* Reloading std-specific firmware forces a SCODE update */
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  810  	priv->cur_fw.scode_table = 0;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  811  
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  812  	rc = load_firmware(fe, new_fw.type, &new_fw.id);
cca83798119c92 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-22  813  	if (rc == -ENOENT)
cca83798119c92 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-22  814  		rc = load_firmware(fe, new_fw.type & ~F8MHZ, &new_fw.id);
cca83798119c92 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-22  815  
6cb45879dca84c drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-02  816  	if (rc < 0)
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  817  		goto fail;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  818  
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  819  skip_std_specific:
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  820  	if (priv->cur_fw.scode_table == new_fw.scode_table &&
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  821  	    priv->cur_fw.scode_nr == new_fw.scode_nr) {
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  822  		tuner_dbg("SCODE firmware already loaded.\n");
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  823  		goto check_device;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  824  	}
6cb45879dca84c drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-02  825  
40ae91a758df91 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2008-02-14  826  	if (new_fw.type & FM)
40ae91a758df91 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2008-02-14  827  		goto check_device;
40ae91a758df91 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2008-02-14  828  
f380e1d2c9a1ff drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-15  829  	/* Load SCODE firmware, if exists */
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  830  	tuner_dbg("Trying to load scode %d\n", new_fw.scode_nr);
f380e1d2c9a1ff drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-15  831  
66c2d53db28276 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-25  832  	rc = load_scode(fe, new_fw.type | new_fw.scode_table, &new_fw.id,
66c2d53db28276 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-25  833  			new_fw.int_freq, new_fw.scode_nr);
43efe70253dd13 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-14  834  
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  835  check_device:
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  836  	if (xc2028_get_reg(priv, 0x0004, &version) < 0 ||
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  837  	    xc2028_get_reg(priv, 0x0008, &hwmodel) < 0) {
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  838  		tuner_err("Unable to read tuner registers.\n");
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  839  		goto fail;
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  840  	}
80b522085a2c87 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-05  841  
2af3eb647e9b90 drivers/media/tuners/tuner-xc2028.c        Mauro Carvalho Chehab 2016-10-12  842  	tuner_dbg("Device is Xceive %d version %d.%d, firmware version %d.%d\n",
80b522085a2c87 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-05  843  		  hwmodel, (version & 0xf000) >> 12, (version & 0xf00) >> 8,
80b522085a2c87 drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-11-05  844  		  (version & 0xf0) >> 4, version & 0xf);
6cb45879dca84c drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-02  845  
0fb84ce0dbffee drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2008-12-02  846  
0fb84ce0dbffee drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2008-12-02  847  	if (priv->ctrl.read_not_reliable)
0fb84ce0dbffee drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2008-12-02  848  		goto read_not_reliable;
0fb84ce0dbffee drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2008-12-02  849  
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  850  	/* Check firmware version against what we downloaded. */
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  851  	if (priv->firm_version != ((version & 0xf0) << 4 | (version & 0x0f))) {
2d5024a9e97337 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2009-09-14  852  		if (!priv->ctrl.read_not_reliable) {
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  853  			tuner_err("Incorrect readback of firmware version.\n");
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  854  			goto fail;
2d5024a9e97337 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2009-09-14  855  		} else {
2af3eb647e9b90 drivers/media/tuners/tuner-xc2028.c        Mauro Carvalho Chehab 2016-10-12  856  			tuner_err("Returned an incorrect version. However, read is not reliable enough. Ignoring it.\n");
2d5024a9e97337 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2009-09-14  857  			hwmodel = 3028;
2d5024a9e97337 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2009-09-14  858  		}
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  859  	}
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  860  
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  861  	/* Check that the tuner hardware model remains consistent over time. */
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  862  	if (priv->hwmodel == 0 && (hwmodel == 2028 || hwmodel == 3028)) {
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  863  		priv->hwmodel = hwmodel;
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  864  		priv->hwvers  = version & 0xff00;
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  865  	} else if (priv->hwmodel == 0 || priv->hwmodel != hwmodel ||
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  866  		   priv->hwvers != (version & 0xff00)) {
2af3eb647e9b90 drivers/media/tuners/tuner-xc2028.c        Mauro Carvalho Chehab 2016-10-12  867  		tuner_err("Read invalid device hardware information - tuner hung?\n");
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  868  		goto fail;
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  869  	}
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  870  
0fb84ce0dbffee drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2008-12-02  871  read_not_reliable:
03c420010f4c5d drivers/media/tuners/tuner-xc2028.c        Ezequiel Garcia       2012-10-23  872  	priv->cur_fw = new_fw;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  873  
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  874  	/*
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  875  	 * By setting BASE in cur_fw.type only after successfully loading all
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  876  	 * firmwares, we can:
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  877  	 * 1. Identify that BASE firmware with type=0 has been loaded;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  878  	 * 2. Tell whether BASE firmware was just changed the next time through.
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  879  	 */
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  880  	priv->cur_fw.type |= BASE;
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30  881  	priv->state = XC2028_ACTIVE;
6cb45879dca84c drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-02  882  
6cb45879dca84c drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-02  883  	return 0;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  884  
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  885  fail:
22a1e7783e173a drivers/media/tuners/tuner-xc2028.c        Takashi Iwai          2016-11-17  886  	free_firmware(priv);
61a96113de51e1 drivers/media/common/tuners/tuner-xc2028.c Mauro Carvalho Chehab 2012-06-30  887  
b8bc77db1e23c6 drivers/media/common/tuners/tuner-xc2028.c Alina Friedrichsen    2011-01-23  888  	if (retry_count < 8) {
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  889  		msleep(50);
b8bc77db1e23c6 drivers/media/common/tuners/tuner-xc2028.c Alina Friedrichsen    2011-01-23  890  		retry_count++;
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  891  		tuner_dbg("Retrying firmware load\n");
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  892  		goto retry;
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  893  	}
8bf799a6217f63 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  894  
ebf044f46f138b drivers/media/tuners/tuner-xc2028.c        Mauro Carvalho Chehab 2014-01-06  895  	/* Firmware didn't load. Put the device to sleep */
ebf044f46f138b drivers/media/tuners/tuner-xc2028.c        Mauro Carvalho Chehab 2014-01-06  896  	xc2028_sleep(fe);
ebf044f46f138b drivers/media/tuners/tuner-xc2028.c        Mauro Carvalho Chehab 2014-01-06  897  
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  898  	if (rc == -ENOENT)
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  899  		rc = -EINVAL;
e0f0b37a3e6244 drivers/media/video/tuner-xc2028.c         Chris Pascoe          2007-11-19  900  	return rc;
6cb45879dca84c drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-02  901  }
6cb45879dca84c drivers/media/video/tuner-xc2028.c         Mauro Carvalho Chehab 2007-10-02  902  

:::::: The code at line 717 was first introduced by commit
:::::: 00deff1a076dc1cf6743813657623626720bf0f5 V4L/DVB (6671): Avoids checking digital/analog at check_firmware

:::::: TO: Mauro Carvalho Chehab <mchehab@...radead.org>
:::::: CC: Mauro Carvalho Chehab <mchehab@...radead.org>

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ