Re: [PATCH] staging: axis-fifo: initialize timeouts in probe only

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Khadija,

On Tue, Mar 14, 2023 at 07:08:31PM +0500, Khadija Kamran wrote:
> On Tue, Mar 14, 2023 at 11:45:51AM +0800, kernel test robot wrote:
> > Hi Khadija,
> > 
> > Thank you for the patch! Perhaps something to improve:
> > 
> > [auto build test WARNING on staging/staging-testing]
> > 
> > url:    https://github.com/intel-lab-lkp/linux/commits/Khadija-Kamran/staging-axis-fifo-initialize-timeouts-in-probe-only/20230314-020827
> > patch link:    https://lore.kernel.org/r/ZA9mThZ7NyRrQAMX%40khadija-virtual-machine
> > patch subject: [PATCH] staging: axis-fifo: initialize timeouts in probe only
> > config: arm64-randconfig-r012-20230313 (https://download.01.org/0day-ci/archive/20230314/202303141159.6wN9HNP9-lkp@xxxxxxxxx/config)
> > compiler: clang version 17.0.0 (https://github.com/llvm/llvm-project 67409911353323ca5edf2049ef0df54132fa1ca7)
> > 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 arm64 cross compiling tool for clang build
> >         # apt-get install binutils-aarch64-linux-gnu
> >         # https://github.com/intel-lab-lkp/linux/commit/9d186f6c9f9bf467b48da3e28b0e9aa31fc3faf3
> >         git remote add linux-review https://github.com/intel-lab-lkp/linux
> >         git fetch --no-tags linux-review Khadija-Kamran/staging-axis-fifo-initialize-timeouts-in-probe-only/20230314-020827
> >         git checkout 9d186f6c9f9bf467b48da3e28b0e9aa31fc3faf3
> >         # save the config file
> >         mkdir build_dir && cp config build_dir/.config
> >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 olddefconfig
> >         COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/staging/axis-fifo/
> > 
> > If you fix the issue, kindly add following tag where applicable
> > | Reported-by: kernel test robot <lkp@xxxxxxxxx>
> > | Link: https://lore.kernel.org/oe-kbuild-all/202303141159.6wN9HNP9-lkp@xxxxxxxxx/
> > 
> > All warnings (new ones prefixed by >>):
> > 
> > >> drivers/staging/axis-fifo/axis-fifo.c:817:18: warning: implicit conversion from 'long' to 'int' changes value from 9223372036854775807 to -1 [-Wconstant-conversion]
> >                    read_timeout = MAX_SCHEDULE_TIMEOUT;
> >                                 ~ ^~~~~~~~~~~~~~~~~~~~
> >    include/linux/sched.h:296:31: note: expanded from macro 'MAX_SCHEDULE_TIMEOUT'
> >    #define MAX_SCHEDULE_TIMEOUT            LONG_MAX
> >                                            ^~~~~~~~
> >    include/vdso/limits.h:11:19: note: expanded from macro 'LONG_MAX'
> >    #define LONG_MAX        ((long)(~0UL >> 1))
> >                             ^~~~~~~~~~~~~~~~~
> >    drivers/staging/axis-fifo/axis-fifo.c:822:19: warning: implicit conversion from 'long' to 'int' changes value from 9223372036854775807 to -1 [-Wconstant-conversion]
> >                    write_timeout = MAX_SCHEDULE_TIMEOUT;
> >                                  ~ ^~~~~~~~~~~~~~~~~~~~
> >    include/linux/sched.h:296:31: note: expanded from macro 'MAX_SCHEDULE_TIMEOUT'
> >    #define MAX_SCHEDULE_TIMEOUT            LONG_MAX
> >                                            ^~~~~~~~
> >    include/vdso/limits.h:11:19: note: expanded from macro 'LONG_MAX'
> >    #define LONG_MAX        ((long)(~0UL >> 1))
> >                             ^~~~~~~~~~~~~~~~~
> >    2 warnings generated.
> >
> 
> Hi everyone!
> Kindly let me know if I should look into these warnings.
> Thank you!

You should always avoid introducing new warnings whenever possible. In
this case, it appears that read_timeout and write_timeout should be
changed from 'int' to 'long' to account for the fact that
MAX_SCHEDULE_TIMEOUT is being assigned to it directly now, versus being
passed as a parameter to wait_event_interruptible_timeout(), which
assigned it to 'long' anyways.

If you have any other questions or need further help, let me know :)

Cheers,
Nathan

> > vim +817 drivers/staging/axis-fifo/axis-fifo.c
> > 
> >    805	
> >    806	static int axis_fifo_probe(struct platform_device *pdev)
> >    807	{
> >    808		struct resource *r_mem; /* IO mem resources */
> >    809		struct device *dev = &pdev->dev; /* OS device (from device tree) */
> >    810		struct axis_fifo *fifo = NULL;
> >    811		char *device_name;
> >    812		int rc = 0; /* error return value */
> >    813	
> >    814		if (read_timeout >= 0)
> >    815			read_timeout = msecs_to_jiffies(read_timeout);
> >    816		else
> >  > 817			read_timeout = MAX_SCHEDULE_TIMEOUT;
> >    818	
> >    819		if (write_timeout >= 0)
> >    820			write_timeout = msecs_to_jiffies(write_timeout);
> >    821		else
> >    822			write_timeout = MAX_SCHEDULE_TIMEOUT;
> >    823	
> >    824		/* ----------------------------
> >    825		 *     init wrapper device
> >    826		 * ----------------------------
> >    827		 */
> >    828	
> >    829		device_name = devm_kzalloc(dev, 32, GFP_KERNEL);
> >    830		if (!device_name)
> >    831			return -ENOMEM;
> >    832	
> >    833		/* allocate device wrapper memory */
> >    834		fifo = devm_kzalloc(dev, sizeof(*fifo), GFP_KERNEL);
> >    835		if (!fifo)
> >    836			return -ENOMEM;
> >    837	
> >    838		dev_set_drvdata(dev, fifo);
> >    839		fifo->dt_device = dev;
> >    840	
> >    841		init_waitqueue_head(&fifo->read_queue);
> >    842		init_waitqueue_head(&fifo->write_queue);
> >    843	
> >    844		mutex_init(&fifo->read_lock);
> >    845		mutex_init(&fifo->write_lock);
> >    846	
> >    847		/* ----------------------------
> >    848		 *   init device memory space
> >    849		 * ----------------------------
> >    850		 */
> >    851	
> >    852		/* get iospace for the device */
> >    853		r_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> >    854		if (!r_mem) {
> >    855			dev_err(fifo->dt_device, "invalid address\n");
> >    856			rc = -ENODEV;
> >    857			goto err_initial;
> >    858		}
> >    859	
> >    860		/* request physical memory */
> >    861		fifo->base_addr = devm_ioremap_resource(fifo->dt_device, r_mem);
> >    862		if (IS_ERR(fifo->base_addr)) {
> >    863			rc = PTR_ERR(fifo->base_addr);
> >    864			goto err_initial;
> >    865		}
> >    866	
> >    867		dev_dbg(fifo->dt_device, "remapped memory to 0x%p\n", fifo->base_addr);
> >    868	
> >    869		/* create unique device name */
> >    870		snprintf(device_name, 32, "%s_%pa", DRIVER_NAME, &r_mem->start);
> >    871		dev_dbg(fifo->dt_device, "device name [%s]\n", device_name);
> >    872	
> >    873		/* ----------------------------
> >    874		 *          init IP
> >    875		 * ----------------------------
> >    876		 */
> >    877	
> >    878		rc = axis_fifo_parse_dt(fifo);
> >    879		if (rc)
> >    880			goto err_initial;
> >    881	
> >    882		reset_ip_core(fifo);
> >    883	
> >    884		/* ----------------------------
> >    885		 *    init device interrupts
> >    886		 * ----------------------------
> >    887		 */
> >    888	
> >    889		/* get IRQ resource */
> >    890		rc = platform_get_irq(pdev, 0);
> >    891		if (rc < 0)
> >    892			goto err_initial;
> >    893	
> >    894		/* request IRQ */
> >    895		fifo->irq = rc;
> >    896		rc = devm_request_irq(fifo->dt_device, fifo->irq, &axis_fifo_irq, 0,
> >    897				      DRIVER_NAME, fifo);
> >    898		if (rc) {
> >    899			dev_err(fifo->dt_device, "couldn't allocate interrupt %i\n",
> >    900				fifo->irq);
> >    901			goto err_initial;
> >    902		}
> >    903	
> >    904		/* ----------------------------
> >    905		 *      init char device
> >    906		 * ----------------------------
> >    907		 */
> >    908	
> >    909		/* create character device */
> >    910		fifo->miscdev.fops = &fops;
> >    911		fifo->miscdev.minor = MISC_DYNAMIC_MINOR;
> >    912		fifo->miscdev.name = device_name;
> >    913		fifo->miscdev.groups = axis_fifo_attrs_groups;
> >    914		fifo->miscdev.parent = dev;
> >    915		rc = misc_register(&fifo->miscdev);
> >    916		if (rc < 0)
> >    917			goto err_initial;
> >    918	
> >    919		dev_info(fifo->dt_device, "axis-fifo created at %pa mapped to 0x%pa, irq=%i\n",
> >    920			 &r_mem->start, &fifo->base_addr, fifo->irq);
> >    921	
> >    922		return 0;
> >    923	
> >    924	err_initial:
> >    925		dev_set_drvdata(dev, NULL);
> >    926		return rc;
> >    927	}
> >    928	
> > 
> > -- 
> > 0-DAY CI Kernel Test Service
> > https://github.com/intel/lkp-tests
> 




[Index of Archives]     [Linux Driver Development]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux