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]
Message-ID: <202501050616.5XfV11Bf-lkp@intel.com>
Date: Sun, 5 Jan 2025 06:54:29 +0800
From: kernel test robot <lkp@...el.com>
To: Billy Tsai <billy_tsai@...eedtech.com>
Cc: oe-kbuild-all@...ts.linux.dev, linux-kernel@...r.kernel.org,
	Jonathan Cameron <Jonathan.Cameron@...wei.com>
Subject: drivers/iio/adc/aspeed_adc.c:232:65: warning: '%s' directive
 argument is null

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   ab75170520d4964f3acf8bb1f91d34cbc650688e
commit: 9223bd0471bb078377a98cfc188dae47448f0456 iio: adc: aspeed: Use model_data to set clk scaler.
date:   3 years, 3 months ago
config: parisc-randconfig-r025-20211224 (https://download.01.org/0day-ci/archive/20250105/202501050616.5XfV11Bf-lkp@intel.com/config)
compiler: hppa-linux-gcc (GCC) 12.4.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250105/202501050616.5XfV11Bf-lkp@intel.com/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 <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202501050616.5XfV11Bf-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/iio/adc/aspeed_adc.c: In function 'aspeed_adc_probe':
>> drivers/iio/adc/aspeed_adc.c:232:65: warning: '%s' directive argument is null [-Wformat-truncation=]
     232 |         snprintf(clk_parent_name, ARRAY_SIZE(clk_parent_name), "%s",
         |                                                                 ^~


vim +232 drivers/iio/adc/aspeed_adc.c

   208	
   209	static int aspeed_adc_probe(struct platform_device *pdev)
   210	{
   211		struct iio_dev *indio_dev;
   212		struct aspeed_adc_data *data;
   213		int ret;
   214		u32 adc_engine_control_reg_val;
   215		unsigned long scaler_flags = 0;
   216		char clk_name[32], clk_parent_name[32];
   217	
   218		indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*data));
   219		if (!indio_dev)
   220			return -ENOMEM;
   221	
   222		data = iio_priv(indio_dev);
   223		data->dev = &pdev->dev;
   224		data->model_data = of_device_get_match_data(&pdev->dev);
   225	
   226		data->base = devm_platform_ioremap_resource(pdev, 0);
   227		if (IS_ERR(data->base))
   228			return PTR_ERR(data->base);
   229	
   230		/* Register ADC clock prescaler with source specified by device tree. */
   231		spin_lock_init(&data->clk_lock);
 > 232		snprintf(clk_parent_name, ARRAY_SIZE(clk_parent_name), "%s",
   233			 of_clk_get_parent_name(pdev->dev.of_node, 0));
   234	
   235		if (data->model_data->need_prescaler) {
   236			snprintf(clk_name, ARRAY_SIZE(clk_name), "%s-prescaler",
   237				 data->model_data->model_name);
   238			data->clk_prescaler = clk_hw_register_divider(
   239				&pdev->dev, clk_name, clk_parent_name, 0,
   240				data->base + ASPEED_REG_CLOCK_CONTROL, 17, 15, 0,
   241				&data->clk_lock);
   242			if (IS_ERR(data->clk_prescaler))
   243				return PTR_ERR(data->clk_prescaler);
   244			snprintf(clk_parent_name, ARRAY_SIZE(clk_parent_name),
   245				 clk_name);
   246			scaler_flags = CLK_SET_RATE_PARENT;
   247		}
   248		/*
   249		 * Register ADC clock scaler downstream from the prescaler. Allow rate
   250		 * setting to adjust the prescaler as well.
   251		 */
   252		snprintf(clk_name, ARRAY_SIZE(clk_name), "%s-scaler",
   253			 data->model_data->model_name);
   254		data->clk_scaler = clk_hw_register_divider(
   255			&pdev->dev, clk_name, clk_parent_name, scaler_flags,
   256			data->base + ASPEED_REG_CLOCK_CONTROL, 0,
   257			data->model_data->scaler_bit_width, 0, &data->clk_lock);
   258		if (IS_ERR(data->clk_scaler)) {
   259			ret = PTR_ERR(data->clk_scaler);
   260			goto scaler_error;
   261		}
   262	
   263		data->rst = devm_reset_control_get_exclusive(&pdev->dev, NULL);
   264		if (IS_ERR(data->rst)) {
   265			dev_err(&pdev->dev,
   266				"invalid or missing reset controller device tree entry");
   267			ret = PTR_ERR(data->rst);
   268			goto reset_error;
   269		}
   270		reset_control_deassert(data->rst);
   271	
   272		ret = aspeed_adc_vref_config(indio_dev);
   273		if (ret)
   274			goto vref_config_error;
   275	
   276		if (data->model_data->wait_init_sequence) {
   277			/* Enable engine in normal mode. */
   278			writel(FIELD_PREP(ASPEED_ADC_OP_MODE,
   279					  ASPEED_ADC_OP_MODE_NORMAL) |
   280				       ASPEED_ADC_ENGINE_ENABLE,
   281			       data->base + ASPEED_REG_ENGINE_CONTROL);
   282	
   283			/* Wait for initial sequence complete. */
   284			ret = readl_poll_timeout(data->base + ASPEED_REG_ENGINE_CONTROL,
   285						 adc_engine_control_reg_val,
   286						 adc_engine_control_reg_val &
   287						 ASPEED_ADC_CTRL_INIT_RDY,
   288						 ASPEED_ADC_INIT_POLLING_TIME,
   289						 ASPEED_ADC_INIT_TIMEOUT);
   290			if (ret)
   291				goto poll_timeout_error;
   292		}
   293	
   294		/* Start all channels in normal mode. */
   295		ret = clk_prepare_enable(data->clk_scaler->clk);
   296		if (ret)
   297			goto clk_enable_error;
   298	
   299		adc_engine_control_reg_val =
   300			ASPEED_ADC_CTRL_CHANNEL |
   301			FIELD_PREP(ASPEED_ADC_OP_MODE, ASPEED_ADC_OP_MODE_NORMAL) |
   302			ASPEED_ADC_ENGINE_ENABLE;
   303		writel(adc_engine_control_reg_val,
   304		       data->base + ASPEED_REG_ENGINE_CONTROL);
   305	
   306		indio_dev->name = data->model_data->model_name;
   307		indio_dev->info = &aspeed_adc_iio_info;
   308		indio_dev->modes = INDIO_DIRECT_MODE;
   309		indio_dev->channels = aspeed_adc_iio_channels;
   310		indio_dev->num_channels = data->model_data->num_channels;
   311	
   312		ret = iio_device_register(indio_dev);
   313		if (ret)
   314			goto iio_register_error;
   315	
   316		return 0;
   317	
   318	iio_register_error:
   319		writel(FIELD_PREP(ASPEED_ADC_OP_MODE, ASPEED_ADC_OP_MODE_PWR_DOWN),
   320		       data->base + ASPEED_REG_ENGINE_CONTROL);
   321		clk_disable_unprepare(data->clk_scaler->clk);
   322	clk_enable_error:
   323	poll_timeout_error:
   324	vref_config_error:
   325		reset_control_assert(data->rst);
   326	reset_error:
   327		clk_hw_unregister_divider(data->clk_scaler);
   328	scaler_error:
   329		if (data->model_data->need_prescaler)
   330			clk_hw_unregister_divider(data->clk_prescaler);
   331		return ret;
   332	}
   333	

-- 
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