Memory issues - example drivers/usb/audio.c static int dmabuf_mmap(...) { size >>= PAGE_SHIFT; for (nr = 0; nr < size; nr++) if (!db->sgbuf[nr]) return -EINVAL; db->mapped = 1; for (nr = 0; nr < size; nr++) { if (remap_page_range(start, virt_to_phys(db->sgbuf[nr]), PAGE_SIZE, prot)) return -EAGAIN; start += PAGE_SIZE; } return 0; }