Skip to content

Commit

Permalink
[PATCH] i386: make pci_map_single/pci_map_sg warn for zero length.
Browse files Browse the repository at this point in the history
As suggested by Linus.

This catches driver bugs that could cause corruption on IOMMU architectures.

Also I converted the BUGs to out_of_line_bug()s to save a bit
of text space.

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Andi Kleen authored and Linus Torvalds committed Jan 12, 2006
1 parent 3d831d9 commit fd78f11
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions include/asm-i386/dma-mapping.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <asm/cache.h>
#include <asm/io.h>
#include <asm/scatterlist.h>
#include <asm/bug.h>

#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
Expand All @@ -20,7 +21,9 @@ static inline dma_addr_t
dma_map_single(struct device *dev, void *ptr, size_t size,
enum dma_data_direction direction)
{
BUG_ON(direction == DMA_NONE);
if (direction == DMA_NONE)
BUG();
WARN_ON(size == 0);
flush_write_buffers();
return virt_to_phys(ptr);
}
Expand All @@ -29,7 +32,8 @@ static inline void
dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,
enum dma_data_direction direction)
{
BUG_ON(direction == DMA_NONE);
if (direction == DMA_NONE)
BUG();
}

static inline int
Expand All @@ -38,7 +42,9 @@ dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
{
int i;

BUG_ON(direction == DMA_NONE);
if (direction == DMA_NONE)
BUG();
WARN_ON(nents == 0 || sg[0].length == 0);

for (i = 0; i < nents; i++ ) {
BUG_ON(!sg[i].page);
Expand Down

0 comments on commit fd78f11

Please sign in to comment.