User: | Jiri Slaby |
Error type: | BUG/WARNING |
Error type description: | An unsatisfied assertion in the code |
File location: | arch/x86/kernel/pci-nommu.c |
Line in file: | 62 |
Project: | Linux Kernel |
Project version: | 2.6.28 |
Tools: |
Web Crawler
(0.1)
|
URL: | https://bugzilla.kernel.org/show_bug.cgi?id=12320 |
Entered: | 2011-09-08 08:49:13 UTC |
32 dma_addr_t bus = paddr; 33 WARN_ON(size == 0); 34 if (!check_addr("map_single", hwdev, bus, size)) 35 return bad_dma_address; 36 flush_write_buffers(); 37 return bus; 38} 39 40 41/* Map a set of buffers described by scatterlist in streaming 42 * mode for DMA. This is the scatter-gather version of the 43 * above pci_map_single interface. Here the scatter gather list 44 * elements are each tagged with the appropriate dma address 45 * and length. They are obtained via sg_dma_{address,length}(SG). 46 * 47 * NOTE: An implementation may be able to use a smaller number of 48 * DMA address/length pairs than there are SG table elements. 49 * (for example via virtual mapping capabilities) 50 * The routine returns the number of addr/length pairs actually 51 * used, at most nents. 52 * 53 * Device ownership issues as mentioned above for pci_map_single are 54 * the same here. 55 */ 56static int nommu_map_sg(struct device *hwdev, struct scatterlist *sg, 57 int nents, int direction) 58{ 59 struct scatterlist *s; 60 int i; 61 62 WARN_ON(nents == 0 || sg[0].length == 0); 63 64 for_each_sg(sg, s, nents, i) { 65 BUG_ON(!sg_page(s)); 66 s->dma_address = sg_phys(s); 67 if (!check_addr("map_sg", hwdev, s->dma_address, s->length)) 68 return 0; 69 s->dma_length = s->length; 70 } 71 flush_write_buffers(); 72 return nents;