Lines Matching refs:ptr

255 	const void *ptr;		/* allocated/freed memory block */  member
297 const u8 *ptr = (const u8 *)object->pointer; in hex_dump_object() local
310 hex_dump_to_buffer(ptr + i, linelen, HEX_ROW_SIZE, in hex_dump_object()
370 void *ptr = (void *)object->trace[i]; in print_unreferenced() local
371 seq_printf(seq, " [<%p>] %pS\n", ptr, ptr); in print_unreferenced()
405 static struct kmemleak_object *lookup_object(unsigned long ptr, int alias) in lookup_object() argument
412 if (ptr < object->pointer) in lookup_object()
414 else if (object->pointer + object->size <= ptr) in lookup_object()
416 else if (object->pointer == ptr || alias) in lookup_object()
420 ptr); in lookup_object()
481 static struct kmemleak_object *find_and_get_object(unsigned long ptr, int alias) in find_and_get_object() argument
488 if (ptr >= min_addr && ptr < max_addr) in find_and_get_object()
489 object = lookup_object(ptr, alias); in find_and_get_object()
520 static struct kmemleak_object *create_object(unsigned long ptr, size_t size, in create_object() argument
540 object->pointer = ptr; in create_object()
570 min_addr = min(min_addr, ptr); in create_object()
571 max_addr = max(max_addr, ptr + size); in create_object()
577 if (ptr + size <= parent->pointer) in create_object()
579 else if (parent->pointer + parent->size <= ptr) in create_object()
584 ptr); in create_object()
632 static void delete_object_full(unsigned long ptr) in delete_object_full() argument
636 object = find_and_get_object(ptr, 0); in delete_object_full()
640 ptr); in delete_object_full()
653 static void delete_object_part(unsigned long ptr, size_t size) in delete_object_part() argument
658 object = find_and_get_object(ptr, 1); in delete_object_part()
662 "(size %zu)\n", ptr, size); in delete_object_part()
677 if (ptr > start) in delete_object_part()
678 create_object(start, ptr - start, object->min_count, in delete_object_part()
680 if (ptr + size < end) in delete_object_part()
681 create_object(ptr + size, end - ptr - size, object->min_count, in delete_object_part()
703 static void paint_ptr(unsigned long ptr, int color) in paint_ptr() argument
707 object = find_and_get_object(ptr, 0); in paint_ptr()
710 "at 0x%08lx as %s\n", ptr, in paint_ptr()
723 static void make_gray_object(unsigned long ptr) in make_gray_object() argument
725 paint_ptr(ptr, KMEMLEAK_GREY); in make_gray_object()
732 static void make_black_object(unsigned long ptr) in make_black_object() argument
734 paint_ptr(ptr, KMEMLEAK_BLACK); in make_black_object()
741 static void add_scan_area(unsigned long ptr, size_t size, gfp_t gfp) in add_scan_area() argument
747 object = find_and_get_object(ptr, 1); in add_scan_area()
750 ptr); in add_scan_area()
762 size = object->pointer + object->size - ptr; in add_scan_area()
763 } else if (ptr + size > object->pointer + object->size) { in add_scan_area()
764 kmemleak_warn("Scan area larger than object 0x%08lx\n", ptr); in add_scan_area()
771 area->start = ptr; in add_scan_area()
786 static void object_no_scan(unsigned long ptr) in object_no_scan() argument
791 object = find_and_get_object(ptr, 0); in object_no_scan()
793 kmemleak_warn("Not scanning unknown object at 0x%08lx\n", ptr); in object_no_scan()
807 static void __init log_early(int op_type, const void *ptr, size_t size, in log_early() argument
831 log->ptr = ptr; in log_early()
848 if (!kmemleak_enabled || !log->ptr || IS_ERR(log->ptr)) in early_alloc()
855 object = create_object((unsigned long)log->ptr, log->size, in early_alloc()
874 const void __percpu *ptr = log->ptr; in early_alloc_percpu() local
877 log->ptr = per_cpu_ptr(ptr, cpu); in early_alloc_percpu()
896 void __ref kmemleak_alloc(const void *ptr, size_t size, int min_count, in kmemleak_alloc() argument
899 pr_debug("%s(0x%p, %zu, %d)\n", __func__, ptr, size, min_count); in kmemleak_alloc()
901 if (kmemleak_enabled && ptr && !IS_ERR(ptr)) in kmemleak_alloc()
902 create_object((unsigned long)ptr, size, min_count, gfp); in kmemleak_alloc()
904 log_early(KMEMLEAK_ALLOC, ptr, size, min_count); in kmemleak_alloc()
917 void __ref kmemleak_alloc_percpu(const void __percpu *ptr, size_t size, in kmemleak_alloc_percpu() argument
922 pr_debug("%s(0x%p, %zu)\n", __func__, ptr, size); in kmemleak_alloc_percpu()
928 if (kmemleak_enabled && ptr && !IS_ERR(ptr)) in kmemleak_alloc_percpu()
930 create_object((unsigned long)per_cpu_ptr(ptr, cpu), in kmemleak_alloc_percpu()
933 log_early(KMEMLEAK_ALLOC_PERCPU, ptr, size, 0); in kmemleak_alloc_percpu()
944 void __ref kmemleak_free(const void *ptr) in kmemleak_free() argument
946 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_free()
948 if (kmemleak_free_enabled && ptr && !IS_ERR(ptr)) in kmemleak_free()
949 delete_object_full((unsigned long)ptr); in kmemleak_free()
951 log_early(KMEMLEAK_FREE, ptr, 0, 0); in kmemleak_free()
964 void __ref kmemleak_free_part(const void *ptr, size_t size) in kmemleak_free_part() argument
966 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_free_part()
968 if (kmemleak_enabled && ptr && !IS_ERR(ptr)) in kmemleak_free_part()
969 delete_object_part((unsigned long)ptr, size); in kmemleak_free_part()
971 log_early(KMEMLEAK_FREE_PART, ptr, size, 0); in kmemleak_free_part()
982 void __ref kmemleak_free_percpu(const void __percpu *ptr) in kmemleak_free_percpu() argument
986 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_free_percpu()
988 if (kmemleak_free_enabled && ptr && !IS_ERR(ptr)) in kmemleak_free_percpu()
990 delete_object_full((unsigned long)per_cpu_ptr(ptr, in kmemleak_free_percpu()
993 log_early(KMEMLEAK_FREE_PERCPU, ptr, 0, 0); in kmemleak_free_percpu()
1004 void __ref kmemleak_update_trace(const void *ptr) in kmemleak_update_trace() argument
1009 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_update_trace()
1011 if (!kmemleak_enabled || IS_ERR_OR_NULL(ptr)) in kmemleak_update_trace()
1014 object = find_and_get_object((unsigned long)ptr, 1); in kmemleak_update_trace()
1018 ptr); in kmemleak_update_trace()
1038 void __ref kmemleak_not_leak(const void *ptr) in kmemleak_not_leak() argument
1040 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_not_leak()
1042 if (kmemleak_enabled && ptr && !IS_ERR(ptr)) in kmemleak_not_leak()
1043 make_gray_object((unsigned long)ptr); in kmemleak_not_leak()
1045 log_early(KMEMLEAK_NOT_LEAK, ptr, 0, 0); in kmemleak_not_leak()
1058 void __ref kmemleak_ignore(const void *ptr) in kmemleak_ignore() argument
1060 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_ignore()
1062 if (kmemleak_enabled && ptr && !IS_ERR(ptr)) in kmemleak_ignore()
1063 make_black_object((unsigned long)ptr); in kmemleak_ignore()
1065 log_early(KMEMLEAK_IGNORE, ptr, 0, 0); in kmemleak_ignore()
1080 void __ref kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) in kmemleak_scan_area() argument
1082 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_scan_area()
1084 if (kmemleak_enabled && ptr && size && !IS_ERR(ptr)) in kmemleak_scan_area()
1085 add_scan_area((unsigned long)ptr, size, gfp); in kmemleak_scan_area()
1087 log_early(KMEMLEAK_SCAN_AREA, ptr, size, 0); in kmemleak_scan_area()
1100 void __ref kmemleak_no_scan(const void *ptr) in kmemleak_no_scan() argument
1102 pr_debug("%s(0x%p)\n", __func__, ptr); in kmemleak_no_scan()
1104 if (kmemleak_enabled && ptr && !IS_ERR(ptr)) in kmemleak_no_scan()
1105 object_no_scan((unsigned long)ptr); in kmemleak_no_scan()
1107 log_early(KMEMLEAK_NO_SCAN, ptr, 0, 0); in kmemleak_no_scan()
1156 unsigned long *ptr; in scan_block() local
1160 for (ptr = start; ptr < end; ptr++) { in scan_block()
1171 if (!kmemcheck_is_obj_initialized((unsigned long)ptr, in scan_block()
1176 pointer = *ptr; in scan_block()
1877 kmemleak_free(log->ptr); in kmemleak_init()
1880 kmemleak_free_part(log->ptr, log->size); in kmemleak_init()
1883 kmemleak_free_percpu(log->ptr); in kmemleak_init()
1886 kmemleak_not_leak(log->ptr); in kmemleak_init()
1889 kmemleak_ignore(log->ptr); in kmemleak_init()
1892 kmemleak_scan_area(log->ptr, log->size, GFP_KERNEL); in kmemleak_init()
1895 kmemleak_no_scan(log->ptr); in kmemleak_init()