public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [kbuild] [vfio:vfio-vga 4/5] drivers/vfio/pci/vfio_pci_rdwr.c:191 vfio_pci_legacy_mem_rw() warn: consider using resource_size() here
       [not found] <50f710b7.bKAbZBXVqYjysXq+%fengguang.wu@intel.com>
@ 2013-01-17  1:20 ` Fengguang Wu
  2013-01-21 18:17   ` Dan Carpenter
  0 siblings, 1 reply; 3+ messages in thread
From: Fengguang Wu @ 2013-01-17  1:20 UTC (permalink / raw)
  To: Alex Williamson; +Cc: kvm


Hi Alex,

FYI, there are new smatch warnings show up in

tree:   git://github.com/awilliam/linux-vfio.git vfio-vga
head:   2c2e21fa66c40ed7b8e434c86a9f2ab0c879f21d
commit: c5b7a5a85fa477e70497c513f2acda50eea73bf7 [4/5] vfio-pci: Add support for legacy MMIO & I/O port towards VGA support

New smatch warnings:
drivers/vfio/pci/vfio_pci_rdwr.c:191 vfio_pci_legacy_mem_rw() warn: consider using resource_size() here
drivers/vfio/pci/vfio_pci_rdwr.c:206 vfio_pci_legacy_mem_rw() warn: always true condition '(done >= 0) => (0-u32max >= 0)'
drivers/vfio/pci/vfio_pci_rdwr.c:254 vfio_pci_legacy_io_rw() warn: always true condition '(done >= 0) => (0-u32max >= 0)'

Old smatch warnings:
drivers/vfio/pci/vfio_pci_rdwr.c:170 vfio_pci_bar_rw() warn: always true condition '(done >= 0) => (0-u32max >= 0)'

vim +191 drivers/vfio/pci/vfio_pci_rdwr.c

c5b7a5a8 Alex Williamson 2013-01-16  185  	if (vdev->has_vga && pos >= 0xa0000 && pos < 0xc0000) {
c5b7a5a8 Alex Williamson 2013-01-16  186  		void __iomem *mem;
c5b7a5a8 Alex Williamson 2013-01-16  187  		size_t done;
c5b7a5a8 Alex Williamson 2013-01-16  188  
c5b7a5a8 Alex Williamson 2013-01-16  189  		count = min(count, (size_t)(0xc0000 - pos));
c5b7a5a8 Alex Williamson 2013-01-16  190  
c5b7a5a8 Alex Williamson 2013-01-16 @191  		mem = ioremap_nocache(0xa0000, 0xc0000 - 0xa0000);
c5b7a5a8 Alex Williamson 2013-01-16  192  		if (!mem)
c5b7a5a8 Alex Williamson 2013-01-16  193  			return -ENOMEM;
c5b7a5a8 Alex Williamson 2013-01-16  194  
c5b7a5a8 Alex Williamson 2013-01-16  195  		ret = vga_get_interruptible(vdev->pdev, VGA_RSRC_LEGACY_MEM);
c5b7a5a8 Alex Williamson 2013-01-16  196  		if (ret) {
c5b7a5a8 Alex Williamson 2013-01-16  197  			iounmap(mem);
c5b7a5a8 Alex Williamson 2013-01-16  198  			return ret;
c5b7a5a8 Alex Williamson 2013-01-16  199  		}
c5b7a5a8 Alex Williamson 2013-01-16  200  
c5b7a5a8 Alex Williamson 2013-01-16  201  		done = do_io_rw(mem, buf, pos - 0xa0000, count, 0, 0, iswrite);
c5b7a5a8 Alex Williamson 2013-01-16  202  
c5b7a5a8 Alex Williamson 2013-01-16  203  		vga_put(vdev->pdev, VGA_RSRC_LEGACY_MEM);
c5b7a5a8 Alex Williamson 2013-01-16  204  		iounmap(mem);
c5b7a5a8 Alex Williamson 2013-01-16  205  
c5b7a5a8 Alex Williamson 2013-01-16 @206  		if (done >= 0)
c5b7a5a8 Alex Williamson 2013-01-16  207  			*ppos += done;
c5b7a5a8 Alex Williamson 2013-01-16  208  
c5b7a5a8 Alex Williamson 2013-01-16  209  		return done;
c5b7a5a8 Alex Williamson 2013-01-16  210  	}
c5b7a5a8 Alex Williamson 2013-01-16  211  
c5b7a5a8 Alex Williamson 2013-01-16  212  	return -EINVAL;
c5b7a5a8 Alex Williamson 2013-01-16  213  }
c5b7a5a8 Alex Williamson 2013-01-16  214  
c5b7a5a8 Alex Williamson 2013-01-16  215  ssize_t vfio_pci_legacy_io_rw(struct vfio_pci_device *vdev, char __user *buf,
c5b7a5a8 Alex Williamson 2013-01-16  216  			      size_t count, loff_t *ppos, bool iswrite)
c5b7a5a8 Alex Williamson 2013-01-16  217  {
c5b7a5a8 Alex Williamson 2013-01-16  218  	int ret;
c5b7a5a8 Alex Williamson 2013-01-16  219  	loff_t pos = *ppos & VFIO_PCI_OFFSET_MASK;
c5b7a5a8 Alex Williamson 2013-01-16  220  
c5b7a5a8 Alex Williamson 2013-01-16  221  	if (vdev->has_vga &&
c5b7a5a8 Alex Williamson 2013-01-16  222  	    ((pos >= 0x3b0 && pos < 0x3bc) || (pos >= 0x3c0 && pos < 0x3e0))) {
c5b7a5a8 Alex Williamson 2013-01-16  223  		void __iomem *io = NULL;
c5b7a5a8 Alex Williamson 2013-01-16  224  		loff_t off;
c5b7a5a8 Alex Williamson 2013-01-16  225  		size_t done;
c5b7a5a8 Alex Williamson 2013-01-16  226  
c5b7a5a8 Alex Williamson 2013-01-16  227  		switch (pos) {
c5b7a5a8 Alex Williamson 2013-01-16  228  		case 0x3b0 ... 0x3bb:
c5b7a5a8 Alex Williamson 2013-01-16  229  			count = min(count, (size_t)(0x3bc - pos));
c5b7a5a8 Alex Williamson 2013-01-16  230  			io = ioport_map(0x3b0, 0x3bc - 0x3b0);
c5b7a5a8 Alex Williamson 2013-01-16  231  			off = pos - 0x3b0;
c5b7a5a8 Alex Williamson 2013-01-16  232  			break;
c5b7a5a8 Alex Williamson 2013-01-16  233  		case 0x3c0 ... 0x3df:
c5b7a5a8 Alex Williamson 2013-01-16  234  			count = min(count, (size_t)(0x3e0 - pos));
c5b7a5a8 Alex Williamson 2013-01-16  235  			io = ioport_map(0x3c0, 0x3e0 - 0x3c0);
c5b7a5a8 Alex Williamson 2013-01-16  236  			off = pos - 0x3c0;
c5b7a5a8 Alex Williamson 2013-01-16  237  			break;
c5b7a5a8 Alex Williamson 2013-01-16  238  		}
c5b7a5a8 Alex Williamson 2013-01-16  239  
c5b7a5a8 Alex Williamson 2013-01-16  240  		if (!io)
c5b7a5a8 Alex Williamson 2013-01-16  241  			return -ENOMEM;
c5b7a5a8 Alex Williamson 2013-01-16  242  
c5b7a5a8 Alex Williamson 2013-01-16  243  		ret = vga_get_interruptible(vdev->pdev, VGA_RSRC_LEGACY_IO);
c5b7a5a8 Alex Williamson 2013-01-16  244  		if (ret) {
c5b7a5a8 Alex Williamson 2013-01-16  245  			ioport_unmap(io);
c5b7a5a8 Alex Williamson 2013-01-16  246  			return ret;
c5b7a5a8 Alex Williamson 2013-01-16  247  		}
c5b7a5a8 Alex Williamson 2013-01-16  248  
c5b7a5a8 Alex Williamson 2013-01-16  249  		done = do_io_rw(io, buf, off, count, 0, 0, iswrite);
c5b7a5a8 Alex Williamson 2013-01-16  250  
c5b7a5a8 Alex Williamson 2013-01-16  251  		vga_put(vdev->pdev, VGA_RSRC_LEGACY_IO);
c5b7a5a8 Alex Williamson 2013-01-16  252  		ioport_unmap(io);
c5b7a5a8 Alex Williamson 2013-01-16  253  
c5b7a5a8 Alex Williamson 2013-01-16 @254  		if (done >= 0)
c5b7a5a8 Alex Williamson 2013-01-16  255  			*ppos += done;
c5b7a5a8 Alex Williamson 2013-01-16  256  
c5b7a5a8 Alex Williamson 2013-01-16  257  		return done;

---
0-DAY kernel build testing backend              Open Source Technology Center
http://lists.01.org/mailman/listinfo/kbuild                 Intel Corporation
_______________________________________________
kbuild mailing list
kbuild@lists.01.org
https://lists.01.org/mailman/listinfo/kbuild

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

* Re: [kbuild] [vfio:vfio-vga 4/5] drivers/vfio/pci/vfio_pci_rdwr.c:191 vfio_pci_legacy_mem_rw() warn: consider using resource_size() here
  2013-01-17  1:20 ` [kbuild] [vfio:vfio-vga 4/5] drivers/vfio/pci/vfio_pci_rdwr.c:191 vfio_pci_legacy_mem_rw() warn: consider using resource_size() here Fengguang Wu
@ 2013-01-21 18:17   ` Dan Carpenter
  2013-01-22  0:59     ` Fengguang Wu
  0 siblings, 1 reply; 3+ messages in thread
From: Dan Carpenter @ 2013-01-21 18:17 UTC (permalink / raw)
  To: Fengguang Wu; +Cc: Alex Williamson, kvm

Hi Fengguang,

I already forwarded these on Thursday.  You should have got a mail
about it because I CC'd the kbuild list.

regards,
dan carpenter

On Thu, Jan 17, 2013 at 09:20:49AM +0800, Fengguang Wu wrote:
> 
> Hi Alex,
> 
> FYI, there are new smatch warnings show up in
> 
> tree:   git://github.com/awilliam/linux-vfio.git vfio-vga
> head:   2c2e21fa66c40ed7b8e434c86a9f2ab0c879f21d
> commit: c5b7a5a85fa477e70497c513f2acda50eea73bf7 [4/5] vfio-pci: Add support for legacy MMIO & I/O port towards VGA support
> 
> New smatch warnings:
> drivers/vfio/pci/vfio_pci_rdwr.c:191 vfio_pci_legacy_mem_rw() warn: consider using resource_size() here
> drivers/vfio/pci/vfio_pci_rdwr.c:206 vfio_pci_legacy_mem_rw() warn: always true condition '(done >= 0) => (0-u32max >= 0)'
> drivers/vfio/pci/vfio_pci_rdwr.c:254 vfio_pci_legacy_io_rw() warn: always true condition '(done >= 0) => (0-u32max >= 0)'
> 
> Old smatch warnings:
> drivers/vfio/pci/vfio_pci_rdwr.c:170 vfio_pci_bar_rw() warn: always true condition '(done >= 0) => (0-u32max >= 0)'
> 
> vim +191 drivers/vfio/pci/vfio_pci_rdwr.c
> 
> c5b7a5a8 Alex Williamson 2013-01-16  185  	if (vdev->has_vga && pos >= 0xa0000 && pos < 0xc0000) {
> c5b7a5a8 Alex Williamson 2013-01-16  186  		void __iomem *mem;
> c5b7a5a8 Alex Williamson 2013-01-16  187  		size_t done;
> c5b7a5a8 Alex Williamson 2013-01-16  188  
> c5b7a5a8 Alex Williamson 2013-01-16  189  		count = min(count, (size_t)(0xc0000 - pos));
> c5b7a5a8 Alex Williamson 2013-01-16  190  
> c5b7a5a8 Alex Williamson 2013-01-16 @191  		mem = ioremap_nocache(0xa0000, 0xc0000 - 0xa0000);
> c5b7a5a8 Alex Williamson 2013-01-16  192  		if (!mem)
> c5b7a5a8 Alex Williamson 2013-01-16  193  			return -ENOMEM;
> c5b7a5a8 Alex Williamson 2013-01-16  194  
> c5b7a5a8 Alex Williamson 2013-01-16  195  		ret = vga_get_interruptible(vdev->pdev, VGA_RSRC_LEGACY_MEM);
> c5b7a5a8 Alex Williamson 2013-01-16  196  		if (ret) {
> c5b7a5a8 Alex Williamson 2013-01-16  197  			iounmap(mem);
> c5b7a5a8 Alex Williamson 2013-01-16  198  			return ret;
> c5b7a5a8 Alex Williamson 2013-01-16  199  		}
> c5b7a5a8 Alex Williamson 2013-01-16  200  
> c5b7a5a8 Alex Williamson 2013-01-16  201  		done = do_io_rw(mem, buf, pos - 0xa0000, count, 0, 0, iswrite);
> c5b7a5a8 Alex Williamson 2013-01-16  202  
> c5b7a5a8 Alex Williamson 2013-01-16  203  		vga_put(vdev->pdev, VGA_RSRC_LEGACY_MEM);
> c5b7a5a8 Alex Williamson 2013-01-16  204  		iounmap(mem);
> c5b7a5a8 Alex Williamson 2013-01-16  205  
> c5b7a5a8 Alex Williamson 2013-01-16 @206  		if (done >= 0)
> c5b7a5a8 Alex Williamson 2013-01-16  207  			*ppos += done;
> c5b7a5a8 Alex Williamson 2013-01-16  208  
> c5b7a5a8 Alex Williamson 2013-01-16  209  		return done;
> c5b7a5a8 Alex Williamson 2013-01-16  210  	}
> c5b7a5a8 Alex Williamson 2013-01-16  211  
> c5b7a5a8 Alex Williamson 2013-01-16  212  	return -EINVAL;
> c5b7a5a8 Alex Williamson 2013-01-16  213  }
> c5b7a5a8 Alex Williamson 2013-01-16  214  
> c5b7a5a8 Alex Williamson 2013-01-16  215  ssize_t vfio_pci_legacy_io_rw(struct vfio_pci_device *vdev, char __user *buf,
> c5b7a5a8 Alex Williamson 2013-01-16  216  			      size_t count, loff_t *ppos, bool iswrite)
> c5b7a5a8 Alex Williamson 2013-01-16  217  {
> c5b7a5a8 Alex Williamson 2013-01-16  218  	int ret;
> c5b7a5a8 Alex Williamson 2013-01-16  219  	loff_t pos = *ppos & VFIO_PCI_OFFSET_MASK;
> c5b7a5a8 Alex Williamson 2013-01-16  220  
> c5b7a5a8 Alex Williamson 2013-01-16  221  	if (vdev->has_vga &&
> c5b7a5a8 Alex Williamson 2013-01-16  222  	    ((pos >= 0x3b0 && pos < 0x3bc) || (pos >= 0x3c0 && pos < 0x3e0))) {
> c5b7a5a8 Alex Williamson 2013-01-16  223  		void __iomem *io = NULL;
> c5b7a5a8 Alex Williamson 2013-01-16  224  		loff_t off;
> c5b7a5a8 Alex Williamson 2013-01-16  225  		size_t done;
> c5b7a5a8 Alex Williamson 2013-01-16  226  
> c5b7a5a8 Alex Williamson 2013-01-16  227  		switch (pos) {
> c5b7a5a8 Alex Williamson 2013-01-16  228  		case 0x3b0 ... 0x3bb:
> c5b7a5a8 Alex Williamson 2013-01-16  229  			count = min(count, (size_t)(0x3bc - pos));
> c5b7a5a8 Alex Williamson 2013-01-16  230  			io = ioport_map(0x3b0, 0x3bc - 0x3b0);
> c5b7a5a8 Alex Williamson 2013-01-16  231  			off = pos - 0x3b0;
> c5b7a5a8 Alex Williamson 2013-01-16  232  			break;
> c5b7a5a8 Alex Williamson 2013-01-16  233  		case 0x3c0 ... 0x3df:
> c5b7a5a8 Alex Williamson 2013-01-16  234  			count = min(count, (size_t)(0x3e0 - pos));
> c5b7a5a8 Alex Williamson 2013-01-16  235  			io = ioport_map(0x3c0, 0x3e0 - 0x3c0);
> c5b7a5a8 Alex Williamson 2013-01-16  236  			off = pos - 0x3c0;
> c5b7a5a8 Alex Williamson 2013-01-16  237  			break;
> c5b7a5a8 Alex Williamson 2013-01-16  238  		}
> c5b7a5a8 Alex Williamson 2013-01-16  239  
> c5b7a5a8 Alex Williamson 2013-01-16  240  		if (!io)
> c5b7a5a8 Alex Williamson 2013-01-16  241  			return -ENOMEM;
> c5b7a5a8 Alex Williamson 2013-01-16  242  
> c5b7a5a8 Alex Williamson 2013-01-16  243  		ret = vga_get_interruptible(vdev->pdev, VGA_RSRC_LEGACY_IO);
> c5b7a5a8 Alex Williamson 2013-01-16  244  		if (ret) {
> c5b7a5a8 Alex Williamson 2013-01-16  245  			ioport_unmap(io);
> c5b7a5a8 Alex Williamson 2013-01-16  246  			return ret;
> c5b7a5a8 Alex Williamson 2013-01-16  247  		}
> c5b7a5a8 Alex Williamson 2013-01-16  248  
> c5b7a5a8 Alex Williamson 2013-01-16  249  		done = do_io_rw(io, buf, off, count, 0, 0, iswrite);
> c5b7a5a8 Alex Williamson 2013-01-16  250  
> c5b7a5a8 Alex Williamson 2013-01-16  251  		vga_put(vdev->pdev, VGA_RSRC_LEGACY_IO);
> c5b7a5a8 Alex Williamson 2013-01-16  252  		ioport_unmap(io);
> c5b7a5a8 Alex Williamson 2013-01-16  253  
> c5b7a5a8 Alex Williamson 2013-01-16 @254  		if (done >= 0)
> c5b7a5a8 Alex Williamson 2013-01-16  255  			*ppos += done;
> c5b7a5a8 Alex Williamson 2013-01-16  256  
> c5b7a5a8 Alex Williamson 2013-01-16  257  		return done;
> 
> ---
> 0-DAY kernel build testing backend              Open Source Technology Center
> http://lists.01.org/mailman/listinfo/kbuild                 Intel Corporation
> _______________________________________________
> kbuild mailing list
> kbuild@lists.01.org
> https://lists.01.org/mailman/listinfo/kbuild
> _______________________________________________
> kbuild mailing list
> kbuild@lists.01.org
> https://lists.01.org/mailman/listinfo/kbuild

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

* Re: [kbuild] [vfio:vfio-vga 4/5] drivers/vfio/pci/vfio_pci_rdwr.c:191 vfio_pci_legacy_mem_rw() warn: consider using resource_size() here
  2013-01-21 18:17   ` Dan Carpenter
@ 2013-01-22  0:59     ` Fengguang Wu
  0 siblings, 0 replies; 3+ messages in thread
From: Fengguang Wu @ 2013-01-22  0:59 UTC (permalink / raw)
  To: Dan Carpenter; +Cc: Alex Williamson, kvm

Hi Dan and Alex,

On Mon, Jan 21, 2013 at 09:17:51PM +0300, Dan Carpenter wrote:
> Hi Fengguang,
> 
> I already forwarded these on Thursday.  You should have got a mail
> about it because I CC'd the kbuild list.

Yes it is! Sorry for the duplicated report!

Fengguang

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

end of thread, other threads:[~2013-01-22  0:59 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <50f710b7.bKAbZBXVqYjysXq+%fengguang.wu@intel.com>
2013-01-17  1:20 ` [kbuild] [vfio:vfio-vga 4/5] drivers/vfio/pci/vfio_pci_rdwr.c:191 vfio_pci_legacy_mem_rw() warn: consider using resource_size() here Fengguang Wu
2013-01-21 18:17   ` Dan Carpenter
2013-01-22  0:59     ` Fengguang Wu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox