1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| 1644 void *__vmalloc_node_range(unsigned long size, unsigned long align, 1645 unsigned long start, unsigned long end, gfp_t gfp_mask, 1646 pgprot_t prot, int node, void *caller) 1647 { 1648 struct vm_struct *area; 1649 void *addr; 1650 unsigned long real_size = size; 1651 1652 size = PAGE_ALIGN(size); 1653 if (!size || (size >> PAGE_SHIFT) > totalram_pages) 1654 goto fail; 1655 1656 area = __get_vm_area_node(size, align, VM_ALLOC | VM_UNLIST, 1657 start, end, node, gfp_mask, caller); 1658 if (!area) 1659 goto fail; 1660 1661 addr = __vmalloc_area_node(area, gfp_mask, prot, node, caller); 1662 if (!addr) 1663 return NULL; 1664 1665
1669 insert_vmalloc_vmlist(area); 1670 1671
1676 kmemleak_alloc(addr, real_size, 3, gfp_mask); 1677 1678 return addr; 1679 1680 fail: 1681 warn_alloc_failed(gfp_mask, 0, 1682 "vmalloc: allocation failure: %lu bytes\n", 1683 real_size); 1684 return NULL; 1685 }
|