Linux-USB Archive on lore.kernel.org
 help / color / Atom feed
* [usb:usb-testing 46/46] drivers/usb//misc/adutux.c:375:4: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}'
@ 2019-06-20 14:45 kbuild test robot
  2019-06-20 15:01 ` dmg
  0 siblings, 1 reply; 5+ messages in thread
From: kbuild test robot @ 2019-06-20 14:45 UTC (permalink / raw)
  To: Daniel M German; +Cc: kbuild-all, linux-usb, Greg Kroah-Hartman

[-- Attachment #1: Type: text/plain, Size: 8127 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
head:   f1ac9f310d6d883b3551f4cb948eb441c780b59d
commit: f1ac9f310d6d883b3551f4cb948eb441c780b59d [46/46] usb: clean up some of the computations in adu_read
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gcc (GCC) 7.4.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout f1ac9f310d6d883b3551f4cb948eb441c780b59d
        # save the attached .config to linux build tree
        GCC_VERSION=7.4.0 make.cross ARCH=sh 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   In file included from include/linux/printk.h:332:0,
                    from include/linux/kernel.h:15,
                    from drivers/usb//misc/adutux.c:19:
   drivers/usb//misc/adutux.c: In function 'adu_read':
>> drivers/usb//misc/adutux.c:375:4: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}' [-Wformat=]
       "%s : while, data_in_secondary=%lu, status=%d\n",
       ^
   include/linux/dynamic_debug.h:125:15: note: in definition of macro '__dynamic_func_call'
      func(&id, ##__VA_ARGS__);  \
                  ^~~~~~~~~~~
   include/linux/dynamic_debug.h:157:2: note: in expansion of macro '_dynamic_func_call'
     _dynamic_func_call(fmt,__dynamic_dev_dbg,   \
     ^~~~~~~~~~~~~~~~~~
   include/linux/device.h:1494:2: note: in expansion of macro 'dynamic_dev_dbg'
     dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
     ^~~~~~~~~~~~~~~
   include/linux/device.h:1494:23: note: in expansion of macro 'dev_fmt'
     dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
                          ^~~~~~~
   drivers/usb//misc/adutux.c:374:3: note: in expansion of macro 'dev_dbg'
      dev_dbg(&dev->udev->dev,
      ^~~~~~~

vim +375 drivers/usb//misc/adutux.c

   339	
   340	static ssize_t adu_read(struct file *file, __user char *buffer, size_t count,
   341				loff_t *ppos)
   342	{
   343		struct adu_device *dev;
   344		size_t bytes_read = 0;
   345		size_t bytes_to_read = count;
   346		int retval = 0;
   347		int timeout = 0;
   348		int should_submit = 0;
   349		unsigned long flags;
   350		DECLARE_WAITQUEUE(wait, current);
   351	
   352		dev = file->private_data;
   353		if (mutex_lock_interruptible(&dev->mtx))
   354			return -ERESTARTSYS;
   355	
   356		/* verify that the device wasn't unplugged */
   357		if (dev->udev == NULL) {
   358			retval = -ENODEV;
   359			pr_err("No device or device unplugged %d\n", retval);
   360			goto exit;
   361		}
   362	
   363		/* verify that some data was requested */
   364		if (count == 0) {
   365			dev_dbg(&dev->udev->dev, "%s : read request of 0 bytes\n",
   366				__func__);
   367			goto exit;
   368		}
   369	
   370		timeout = COMMAND_TIMEOUT;
   371		dev_dbg(&dev->udev->dev, "%s : about to start looping\n", __func__);
   372		while (bytes_to_read) {
   373			size_t data_in_secondary = dev->secondary_tail - dev->secondary_head;
   374			dev_dbg(&dev->udev->dev,
 > 375				"%s : while, data_in_secondary=%lu, status=%d\n",
   376				__func__, data_in_secondary,
   377				dev->interrupt_in_urb->status);
   378	
   379			if (data_in_secondary) {
   380				/* drain secondary buffer */
   381				size_t amount = min(bytes_to_read, data_in_secondary);
   382				if (copy_to_user(buffer, dev->read_buffer_secondary+dev->secondary_head, amount)) {
   383					retval = -EFAULT;
   384					goto exit;
   385				}
   386				dev->secondary_head += amount;
   387				bytes_read += amount;
   388				bytes_to_read -= amount;
   389			} else {
   390				/* we check the primary buffer */
   391				spin_lock_irqsave (&dev->buflock, flags);
   392				if (dev->read_buffer_length) {
   393					/* we secure access to the primary */
   394					char *tmp;
   395					dev_dbg(&dev->udev->dev,
   396						"%s : swap, read_buffer_length = %d\n",
   397						__func__, dev->read_buffer_length);
   398					tmp = dev->read_buffer_secondary;
   399					dev->read_buffer_secondary = dev->read_buffer_primary;
   400					dev->read_buffer_primary = tmp;
   401					dev->secondary_head = 0;
   402					dev->secondary_tail = dev->read_buffer_length;
   403					dev->read_buffer_length = 0;
   404					spin_unlock_irqrestore(&dev->buflock, flags);
   405					/* we have a free buffer so use it */
   406					should_submit = 1;
   407				} else {
   408					/* even the primary was empty - we may need to do IO */
   409					if (!dev->read_urb_finished) {
   410						/* somebody is doing IO */
   411						spin_unlock_irqrestore(&dev->buflock, flags);
   412						dev_dbg(&dev->udev->dev,
   413							"%s : submitted already\n",
   414							__func__);
   415					} else {
   416						/* we must initiate input */
   417						dev_dbg(&dev->udev->dev,
   418							"%s : initiate input\n",
   419							__func__);
   420						dev->read_urb_finished = 0;
   421						spin_unlock_irqrestore(&dev->buflock, flags);
   422	
   423						usb_fill_int_urb(dev->interrupt_in_urb, dev->udev,
   424								usb_rcvintpipe(dev->udev,
   425									dev->interrupt_in_endpoint->bEndpointAddress),
   426								 dev->interrupt_in_buffer,
   427								 usb_endpoint_maxp(dev->interrupt_in_endpoint),
   428								 adu_interrupt_in_callback,
   429								 dev,
   430								 dev->interrupt_in_endpoint->bInterval);
   431						retval = usb_submit_urb(dev->interrupt_in_urb, GFP_KERNEL);
   432						if (retval) {
   433							dev->read_urb_finished = 1;
   434							if (retval == -ENOMEM) {
   435								retval = bytes_read ? bytes_read : -ENOMEM;
   436							}
   437							dev_dbg(&dev->udev->dev,
   438								"%s : submit failed\n",
   439								__func__);
   440							goto exit;
   441						}
   442					}
   443	
   444					/* we wait for I/O to complete */
   445					set_current_state(TASK_INTERRUPTIBLE);
   446					add_wait_queue(&dev->read_wait, &wait);
   447					spin_lock_irqsave(&dev->buflock, flags);
   448					if (!dev->read_urb_finished) {
   449						spin_unlock_irqrestore(&dev->buflock, flags);
   450						timeout = schedule_timeout(COMMAND_TIMEOUT);
   451					} else {
   452						spin_unlock_irqrestore(&dev->buflock, flags);
   453						set_current_state(TASK_RUNNING);
   454					}
   455					remove_wait_queue(&dev->read_wait, &wait);
   456	
   457					if (timeout <= 0) {
   458						dev_dbg(&dev->udev->dev,
   459							"%s : timeout\n", __func__);
   460						retval = bytes_read ? bytes_read : -ETIMEDOUT;
   461						goto exit;
   462					}
   463	
   464					if (signal_pending(current)) {
   465						dev_dbg(&dev->udev->dev,
   466							"%s : signal pending\n",
   467							__func__);
   468						retval = bytes_read ? bytes_read : -EINTR;
   469						goto exit;
   470					}
   471				}
   472			}
   473		}
   474	
   475		retval = bytes_read;
   476		/* if the primary buffer is empty then use it */
   477		spin_lock_irqsave(&dev->buflock, flags);
   478		if (should_submit && dev->read_urb_finished) {
   479			dev->read_urb_finished = 0;
   480			spin_unlock_irqrestore(&dev->buflock, flags);
   481			usb_fill_int_urb(dev->interrupt_in_urb, dev->udev,
   482					 usb_rcvintpipe(dev->udev,
   483						dev->interrupt_in_endpoint->bEndpointAddress),
   484					dev->interrupt_in_buffer,
   485					usb_endpoint_maxp(dev->interrupt_in_endpoint),
   486					adu_interrupt_in_callback,
   487					dev,
   488					dev->interrupt_in_endpoint->bInterval);
   489			if (usb_submit_urb(dev->interrupt_in_urb, GFP_KERNEL) != 0)
   490				dev->read_urb_finished = 1;
   491			/* we ignore failure */
   492		} else {
   493			spin_unlock_irqrestore(&dev->buflock, flags);
   494		}
   495	
   496	exit:
   497		/* unlock the device */
   498		mutex_unlock(&dev->mtx);
   499	
   500		return retval;
   501	}
   502	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 53197 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [usb:usb-testing 46/46] drivers/usb//misc/adutux.c:375:4: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}'
  2019-06-20 14:45 [usb:usb-testing 46/46] drivers/usb//misc/adutux.c:375:4: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}' kbuild test robot
@ 2019-06-20 15:01 ` dmg
  2019-06-20 15:40   ` Johan Hovold
                     ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: dmg @ 2019-06-20 15:01 UTC (permalink / raw)
  To: linux-usb; +Cc: Greg Kroah-Hartman


kbuild test robot <lkp@intel.com> writes:

[...]
>
> All warnings (new ones prefixed by >>):
>
>    In file included from include/linux/printk.h:332:0,
>                     from include/linux/kernel.h:15,
>                     from drivers/usb//misc/adutux.c:19:
>    drivers/usb//misc/adutux.c: In function 'adu_read':
>>> drivers/usb//misc/adutux.c:375:4: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}' [-Wformat=]
>        "%s : while, data_in_secondary=%lu, status=%d\n",

I am not sure what is the best way to address this warning.

size_t seems to be architecture dependent. On my computer (intel64)
size_t is long unsigned int, but in this test it is int unsigned.

Are there any suggestions on what is the best way to deal with this?

casting size_t to long unsigned int will work, but it sounds kind of
ugly.


thank you,


--daniel


--
Daniel M. German                  "We die. That may be the meaning of life.
                                   But we do language. That may be
   Toni Morrison ->                the measure of our lives."
http://turingmachine.org/
http://silvernegative.com/
dmg (at) uvic (dot) ca
replace (at) with @ and (dot) with .

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [usb:usb-testing 46/46] drivers/usb//misc/adutux.c:375:4: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}'
  2019-06-20 15:01 ` dmg
@ 2019-06-20 15:40   ` Johan Hovold
  2019-06-20 15:45   ` Alan Stern
  2019-06-21  6:16   ` Greg Kroah-Hartman
  2 siblings, 0 replies; 5+ messages in thread
From: Johan Hovold @ 2019-06-20 15:40 UTC (permalink / raw)
  To: dmg; +Cc: linux-usb, Greg Kroah-Hartman

On Thu, Jun 20, 2019 at 08:01:30AM -0700, dmg wrote:
> 
> kbuild test robot <lkp@intel.com> writes:
> 
> [...]
> >
> > All warnings (new ones prefixed by >>):
> >
> >    In file included from include/linux/printk.h:332:0,
> >                     from include/linux/kernel.h:15,
> >                     from drivers/usb//misc/adutux.c:19:
> >    drivers/usb//misc/adutux.c: In function 'adu_read':
> >>> drivers/usb//misc/adutux.c:375:4: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}' [-Wformat=]
> >        "%s : while, data_in_secondary=%lu, status=%d\n",
> 
> I am not sure what is the best way to address this warning.
> 
> size_t seems to be architecture dependent. On my computer (intel64)
> size_t is long unsigned int, but in this test it is int unsigned.
> 
> Are there any suggestions on what is the best way to deal with this?

You should use %zu.

Johan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [usb:usb-testing 46/46] drivers/usb//misc/adutux.c:375:4: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}'
  2019-06-20 15:01 ` dmg
  2019-06-20 15:40   ` Johan Hovold
@ 2019-06-20 15:45   ` Alan Stern
  2019-06-21  6:16   ` Greg Kroah-Hartman
  2 siblings, 0 replies; 5+ messages in thread
From: Alan Stern @ 2019-06-20 15:45 UTC (permalink / raw)
  To: dmg; +Cc: linux-usb, Greg Kroah-Hartman

On Thu, 20 Jun 2019, dmg wrote:

> 
> kbuild test robot <lkp@intel.com> writes:
> 
> [...]
> >
> > All warnings (new ones prefixed by >>):
> >
> >    In file included from include/linux/printk.h:332:0,
> >                     from include/linux/kernel.h:15,
> >                     from drivers/usb//misc/adutux.c:19:
> >    drivers/usb//misc/adutux.c: In function 'adu_read':
> >>> drivers/usb//misc/adutux.c:375:4: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}' [-Wformat=]
> >        "%s : while, data_in_secondary=%lu, status=%d\n",
> 
> I am not sure what is the best way to address this warning.
> 
> size_t seems to be architecture dependent. On my computer (intel64)
> size_t is long unsigned int, but in this test it is int unsigned.
> 
> Are there any suggestions on what is the best way to deal with this?

Use the %zu format specifier instead of %lu.  This is explained in
Documentation/core-api/printk-formats.rst.

Alan Stern

> casting size_t to long unsigned int will work, but it sounds kind of
> ugly.
> 
> 
> thank you,
> 
> 
> --daniel
> 
> 
> --
> Daniel M. German                  "We die. That may be the meaning of life.
>                                    But we do language. That may be
>    Toni Morrison ->                the measure of our lives."
> http://turingmachine.org/
> http://silvernegative.com/
> dmg (at) uvic (dot) ca
> replace (at) with @ and (dot) with .
> 
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [usb:usb-testing 46/46] drivers/usb//misc/adutux.c:375:4: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}'
  2019-06-20 15:01 ` dmg
  2019-06-20 15:40   ` Johan Hovold
  2019-06-20 15:45   ` Alan Stern
@ 2019-06-21  6:16   ` Greg Kroah-Hartman
  2 siblings, 0 replies; 5+ messages in thread
From: Greg Kroah-Hartman @ 2019-06-21  6:16 UTC (permalink / raw)
  To: dmg; +Cc: linux-usb

On Thu, Jun 20, 2019 at 08:01:30AM -0700, dmg wrote:
> 
> kbuild test robot <lkp@intel.com> writes:
> 
> [...]
> >
> > All warnings (new ones prefixed by >>):
> >
> >    In file included from include/linux/printk.h:332:0,
> >                     from include/linux/kernel.h:15,
> >                     from drivers/usb//misc/adutux.c:19:
> >    drivers/usb//misc/adutux.c: In function 'adu_read':
> >>> drivers/usb//misc/adutux.c:375:4: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}' [-Wformat=]
> >        "%s : while, data_in_secondary=%lu, status=%d\n",
> 
> I am not sure what is the best way to address this warning.
> 
> size_t seems to be architecture dependent. On my computer (intel64)
> size_t is long unsigned int, but in this test it is int unsigned.
> 
> Are there any suggestions on what is the best way to deal with this?
> 
> casting size_t to long unsigned int will work, but it sounds kind of
> ugly.

As others have pointed out, there's a printk modifier for this.

I'll go drop your patch from my testing branch now, please fix up your
patch and resend.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-20 14:45 [usb:usb-testing 46/46] drivers/usb//misc/adutux.c:375:4: warning: format '%lu' expects argument of type 'long unsigned int', but argument 5 has type 'size_t {aka unsigned int}' kbuild test robot
2019-06-20 15:01 ` dmg
2019-06-20 15:40   ` Johan Hovold
2019-06-20 15:45   ` Alan Stern
2019-06-21  6:16   ` Greg Kroah-Hartman

Linux-USB Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-usb/0 linux-usb/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-usb linux-usb/ https://lore.kernel.org/linux-usb \
		linux-usb@vger.kernel.org linux-usb@archiver.kernel.org
	public-inbox-index linux-usb


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-usb


AGPL code for this site: git clone https://public-inbox.org/ public-inbox