Lines Matching refs:ptr

283 	const u8 *ptr = (const u8 *)object->pointer;
292 HEX_GROUP_SIZE, ptr, len, HEX_ASCII);
349 void *ptr = (void *)object->trace[i];
350 warn_or_seq_printf(seq, " [<%p>] %pS\n", ptr, ptr);
379 static struct kmemleak_object *lookup_object(unsigned long ptr, int alias)
386 if (ptr < object->pointer)
388 else if (object->pointer + object->size <= ptr)
390 else if (object->pointer == ptr || alias)
394 ptr);
511 static struct kmemleak_object *find_and_get_object(unsigned long ptr, int alias)
518 object = lookup_object(ptr, alias);
544 static struct kmemleak_object *find_and_remove_object(unsigned long ptr, int alias)
550 object = lookup_object(ptr, alias);
570 static struct kmemleak_object *create_object(unsigned long ptr, size_t size,
591 object->pointer = ptr;
622 untagged_ptr = (unsigned long)kasan_reset_tag((void *)ptr);
630 if (ptr + size <= parent->pointer)
632 else if (parent->pointer + parent->size <= ptr)
636 ptr);
677 * Look up the metadata (struct kmemleak_object) corresponding to ptr and
680 static void delete_object_full(unsigned long ptr)
684 object = find_and_remove_object(ptr, 0);
688 ptr);
696 * Look up the metadata (struct kmemleak_object) corresponding to ptr and
700 static void delete_object_part(unsigned long ptr, size_t size)
705 object = find_and_remove_object(ptr, 1);
709 ptr, size);
721 if (ptr > start)
722 create_object(start, ptr - start, object->min_count,
724 if (ptr + size < end)
725 create_object(ptr + size, end - ptr - size, object->min_count,
747 static void paint_ptr(unsigned long ptr, int color)
751 object = find_and_get_object(ptr, 0);
754 ptr,
767 static void make_gray_object(unsigned long ptr)
769 paint_ptr(ptr, KMEMLEAK_GREY);
776 static void make_black_object(unsigned long ptr)
778 paint_ptr(ptr, KMEMLEAK_BLACK);
785 static void add_scan_area(unsigned long ptr, size_t size, gfp_t gfp)
793 object = find_and_get_object(ptr, 1);
796 ptr);
800 untagged_ptr = (unsigned long)kasan_reset_tag((void *)ptr);
816 kmemleak_warn("Scan area larger than object 0x%08lx\n", ptr);
823 area->start = ptr;
833 * Any surplus references (object already gray) to 'ptr' are passed to
838 static void object_set_excess_ref(unsigned long ptr, unsigned long excess_ref)
843 object = find_and_get_object(ptr, 0);
846 ptr);
861 static void object_no_scan(unsigned long ptr)
866 object = find_and_get_object(ptr, 0);
868 kmemleak_warn("Not scanning unknown object at 0x%08lx\n", ptr);
880 * @ptr: pointer to beginning of the object
892 void __ref kmemleak_alloc(const void *ptr, size_t size, int min_count,
895 pr_debug("%s(0x%p, %zu, %d)\n", __func__, ptr, size, min_count);
897 if (kmemleak_enabled && ptr && !IS_ERR(ptr))
898 create_object((unsigned long)ptr, size, min_count, gfp);
904 * @ptr: __percpu pointer to beginning of the object
911 void __ref kmemleak_alloc_percpu(const void __percpu *ptr, size_t size,
916 pr_debug("%s(0x%p, %zu)\n", __func__, ptr, size);
922 if (kmemleak_enabled && ptr && !IS_ERR(ptr))
924 create_object((unsigned long)per_cpu_ptr(ptr, cpu),
956 * @ptr: pointer to beginning of the object
961 void __ref kmemleak_free(const void *ptr)
963 pr_debug("%s(0x%p)\n", __func__, ptr);
965 if (kmemleak_free_enabled && ptr && !IS_ERR(ptr))
966 delete_object_full((unsigned long)ptr);
972 * @ptr: pointer to the beginning or inside the object. This also
979 void __ref kmemleak_free_part(const void *ptr, size_t size)
981 pr_debug("%s(0x%p)\n", __func__, ptr);
983 if (kmemleak_enabled && ptr && !IS_ERR(ptr))
984 delete_object_part((unsigned long)ptr, size);
990 * @ptr: __percpu pointer to beginning of the object
995 void __ref kmemleak_free_percpu(const void __percpu *ptr)
999 pr_debug("%s(0x%p)\n", __func__, ptr);
1001 if (kmemleak_free_enabled && ptr && !IS_ERR(ptr))
1003 delete_object_full((unsigned long)per_cpu_ptr(ptr,
1010 * @ptr: pointer to beginning of the object
1015 void __ref kmemleak_update_trace(const void *ptr)
1020 pr_debug("%s(0x%p)\n", __func__, ptr);
1022 if (!kmemleak_enabled || IS_ERR_OR_NULL(ptr))
1025 object = find_and_get_object((unsigned long)ptr, 1);
1029 ptr);
1044 * @ptr: pointer to beginning of the object
1049 void __ref kmemleak_not_leak(const void *ptr)
1051 pr_debug("%s(0x%p)\n", __func__, ptr);
1053 if (kmemleak_enabled && ptr && !IS_ERR(ptr))
1054 make_gray_object((unsigned long)ptr);
1060 * @ptr: pointer to beginning of the object
1067 void __ref kmemleak_ignore(const void *ptr)
1069 pr_debug("%s(0x%p)\n", __func__, ptr);
1071 if (kmemleak_enabled && ptr && !IS_ERR(ptr))
1072 make_black_object((unsigned long)ptr);
1078 * @ptr: pointer to beginning or inside the object. This also
1087 void __ref kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp)
1089 pr_debug("%s(0x%p)\n", __func__, ptr);
1091 if (kmemleak_enabled && ptr && size && !IS_ERR(ptr))
1092 add_scan_area((unsigned long)ptr, size, gfp);
1098 * @ptr: pointer to beginning of the object
1105 void __ref kmemleak_no_scan(const void *ptr)
1107 pr_debug("%s(0x%p)\n", __func__, ptr);
1109 if (kmemleak_enabled && ptr && !IS_ERR(ptr))
1110 object_no_scan((unsigned long)ptr);
1237 unsigned long *ptr;
1244 for (ptr = start; ptr < end; ptr++) {
1253 pointer = *ptr;