Lines Matching refs:ptr

262 	const void *ptr;		/* allocated/freed memory block */  member
304 const u8 *ptr = (const u8 *)object->pointer; in hex_dump_object() local
312 HEX_GROUP_SIZE, ptr, len, HEX_ASCII); in hex_dump_object()
368 void *ptr = (void *)object->trace[i]; in print_unreferenced() local
369 seq_printf(seq, " [<%p>] %pS\n", ptr, ptr); in print_unreferenced()
403 static struct kmemleak_object *lookup_object(unsigned long ptr, int alias) in lookup_object() argument
410 if (ptr < object->pointer) in lookup_object()
412 else if (object->pointer + object->size <= ptr) in lookup_object()
414 else if (object->pointer == ptr || alias) in lookup_object()
418 ptr); in lookup_object()
479 static struct kmemleak_object *find_and_get_object(unsigned long ptr, int alias) in find_and_get_object() argument
486 object = lookup_object(ptr, alias); in find_and_get_object()
502 static struct kmemleak_object *find_and_remove_object(unsigned long ptr, int alias) in find_and_remove_object() argument
508 object = lookup_object(ptr, alias); in find_and_remove_object()
538 static struct kmemleak_object *create_object(unsigned long ptr, size_t size, in create_object() argument
558 object->pointer = ptr; in create_object()
588 min_addr = min(min_addr, ptr); in create_object()
589 max_addr = max(max_addr, ptr + size); in create_object()
595 if (ptr + size <= parent->pointer) in create_object()
597 else if (parent->pointer + parent->size <= ptr) in create_object()
602 ptr); in create_object()
646 static void delete_object_full(unsigned long ptr) in delete_object_full() argument
650 object = find_and_remove_object(ptr, 0); in delete_object_full()
654 ptr); in delete_object_full()
666 static void delete_object_part(unsigned long ptr, size_t size) in delete_object_part() argument
671 object = find_and_remove_object(ptr, 1); in delete_object_part()
675 "(size %zu)\n", ptr, size); in delete_object_part()
689 if (ptr > start) in delete_object_part()
690 create_object(start, ptr - start, object->min_count, in delete_object_part()
692 if (ptr + size < end) in delete_object_part()
693 create_object(ptr + size, end - ptr - size, object->min_count, in delete_object_part()
715 static void paint_ptr(unsigned long ptr, int color) in paint_ptr() argument
719 object = find_and_get_object(ptr, 0); in paint_ptr()
722 "at 0x%08lx as %s\n", ptr, in paint_ptr()
735 static void make_gray_object(unsigned long ptr) in make_gray_object() argument
737 paint_ptr(ptr, KMEMLEAK_GREY); in make_gray_object()
744 static void make_black_object(unsigned long ptr) in make_black_object() argument
746 paint_ptr(ptr, KMEMLEAK_BLACK); in make_black_object()
753 static void add_scan_area(unsigned long ptr, size_t size, gfp_t gfp) in add_scan_area() argument
759 object = find_and_get_object(ptr, 1); in add_scan_area()
762 ptr); in add_scan_area()
774 size = object->pointer + object->size - ptr; in add_scan_area()
775 } else if (ptr + size > object->pointer + object->size) { in add_scan_area()
776 kmemleak_warn("Scan area larger than object 0x%08lx\n", ptr); in add_scan_area()
783 area->start = ptr; in add_scan_area()
798 static void object_no_scan(unsigned long ptr) in object_no_scan() argument
803 object = find_and_get_object(ptr, 0); in object_no_scan()
805 kmemleak_warn("Not scanning unknown object at 0x%08lx\n", ptr); in object_no_scan()
819 static void __init log_early(int op_type, const void *ptr, size_t size, in log_early() argument
844 log->ptr = ptr; in log_early()
861 if (!kmemleak_enabled || !log->ptr || IS_ERR(log->ptr)) in early_alloc()
868 object = create_object((unsigned long)log->ptr, log->size, in early_alloc()
887 const void __percpu *ptr = log->ptr; in early_alloc_percpu() local
890 log->ptr = per_cpu_ptr(ptr, cpu); in early_alloc_percpu()
909 void __ref kmemleak_alloc(const void *ptr, size_t size, int min_count, in kmemleak_alloc() argument
912 pr_debug("%s(0x%p, %zu, %d)\n", __func__, ptr, size, min_count); in kmemleak_alloc()
914 if (kmemleak_enabled && ptr && !IS_ERR(ptr)) in kmemleak_alloc()
915 create_object((unsigned long)ptr, size, min_count, gfp); in kmemleak_alloc()
917 log_early(KMEMLEAK_ALLOC, ptr, size, min_count); in kmemleak_alloc()
930 void __ref kmemleak_alloc_percpu(const void __percpu *ptr, size_t size, in kmemleak_alloc_percpu() argument
935 pr_debug("%s(0x%p, %zu)\n", __func__, ptr, size); in kmemleak_alloc_percpu()
941 if (kmemleak_enabled && ptr && !IS_ERR(ptr)) in kmemleak_alloc_percpu()
943 create_object((unsigned long)per_cpu_ptr(ptr, cpu), in kmemleak_alloc_percpu()
946 log_early(KMEMLEAK_ALLOC_PERCPU, ptr, size, 0); in kmemleak_alloc_percpu()
957 void __ref kmemleak_free(const void *ptr) in kmemleak_free() argument
959 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_free()
961 if (kmemleak_free_enabled && ptr && !IS_ERR(ptr)) in kmemleak_free()
962 delete_object_full((unsigned long)ptr); in kmemleak_free()
964 log_early(KMEMLEAK_FREE, ptr, 0, 0); in kmemleak_free()
977 void __ref kmemleak_free_part(const void *ptr, size_t size) in kmemleak_free_part() argument
979 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_free_part()
981 if (kmemleak_enabled && ptr && !IS_ERR(ptr)) in kmemleak_free_part()
982 delete_object_part((unsigned long)ptr, size); in kmemleak_free_part()
984 log_early(KMEMLEAK_FREE_PART, ptr, size, 0); in kmemleak_free_part()
995 void __ref kmemleak_free_percpu(const void __percpu *ptr) in kmemleak_free_percpu() argument
999 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_free_percpu()
1001 if (kmemleak_free_enabled && ptr && !IS_ERR(ptr)) in kmemleak_free_percpu()
1003 delete_object_full((unsigned long)per_cpu_ptr(ptr, in kmemleak_free_percpu()
1006 log_early(KMEMLEAK_FREE_PERCPU, ptr, 0, 0); in kmemleak_free_percpu()
1017 void __ref kmemleak_update_trace(const void *ptr) in kmemleak_update_trace() argument
1022 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_update_trace()
1024 if (!kmemleak_enabled || IS_ERR_OR_NULL(ptr)) in kmemleak_update_trace()
1027 object = find_and_get_object((unsigned long)ptr, 1); in kmemleak_update_trace()
1031 ptr); in kmemleak_update_trace()
1051 void __ref kmemleak_not_leak(const void *ptr) in kmemleak_not_leak() argument
1053 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_not_leak()
1055 if (kmemleak_enabled && ptr && !IS_ERR(ptr)) in kmemleak_not_leak()
1056 make_gray_object((unsigned long)ptr); in kmemleak_not_leak()
1058 log_early(KMEMLEAK_NOT_LEAK, ptr, 0, 0); in kmemleak_not_leak()
1071 void __ref kmemleak_ignore(const void *ptr) in kmemleak_ignore() argument
1073 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_ignore()
1075 if (kmemleak_enabled && ptr && !IS_ERR(ptr)) in kmemleak_ignore()
1076 make_black_object((unsigned long)ptr); in kmemleak_ignore()
1078 log_early(KMEMLEAK_IGNORE, ptr, 0, 0); in kmemleak_ignore()
1093 void __ref kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) in kmemleak_scan_area() argument
1095 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_scan_area()
1097 if (kmemleak_enabled && ptr && size && !IS_ERR(ptr)) in kmemleak_scan_area()
1098 add_scan_area((unsigned long)ptr, size, gfp); in kmemleak_scan_area()
1100 log_early(KMEMLEAK_SCAN_AREA, ptr, size, 0); in kmemleak_scan_area()
1113 void __ref kmemleak_no_scan(const void *ptr) in kmemleak_no_scan() argument
1115 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_no_scan()
1117 if (kmemleak_enabled && ptr && !IS_ERR(ptr)) in kmemleak_no_scan()
1118 object_no_scan((unsigned long)ptr); in kmemleak_no_scan()
1120 log_early(KMEMLEAK_NO_SCAN, ptr, 0, 0); in kmemleak_no_scan()
1169 unsigned long *ptr; in scan_block() local
1175 for (ptr = start; ptr < end; ptr++) { in scan_block()
1183 if (!kmemcheck_is_obj_initialized((unsigned long)ptr, in scan_block()
1188 pointer = *ptr; in scan_block()
1909 kmemleak_free(log->ptr); in kmemleak_init()
1912 kmemleak_free_part(log->ptr, log->size); in kmemleak_init()
1915 kmemleak_free_percpu(log->ptr); in kmemleak_init()
1918 kmemleak_not_leak(log->ptr); in kmemleak_init()
1921 kmemleak_ignore(log->ptr); in kmemleak_init()
1924 kmemleak_scan_area(log->ptr, log->size, GFP_KERNEL); in kmemleak_init()
1927 kmemleak_no_scan(log->ptr); in kmemleak_init()