mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
UPSTREAM: kasan: move kasan_get_alloc/free_track definitions
Move the definitions of kasan_get_alloc/free_track() to report_*.c, as
they belong with other the reporting code.
Link: https://lkml.kernel.org/r/0cb15423956889b3905a0174b58782633bbbd72e.1662411799.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
Reviewed-by: Marco Elver <elver@google.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Evgenii Stepanov <eugenis@google.com>
Cc: Peter Collingbourne <pcc@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Bug: 254721825
(cherry picked from commit b89933e9a5)
Change-Id: I04bf0ad91e71f7bab0c1e761a0f20ba2ddef2f6d
Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
This commit is contained in:
@@ -512,24 +512,3 @@ void kasan_save_free_info(struct kmem_cache *cache, void *object)
|
||||
/* The object was freed and has free track set. */
|
||||
*(u8 *)kasan_mem_to_shadow(object) = KASAN_SLAB_FREETRACK;
|
||||
}
|
||||
|
||||
struct kasan_track *kasan_get_alloc_track(struct kmem_cache *cache,
|
||||
void *object)
|
||||
{
|
||||
struct kasan_alloc_meta *alloc_meta;
|
||||
|
||||
alloc_meta = kasan_get_alloc_meta(cache, object);
|
||||
if (!alloc_meta)
|
||||
return NULL;
|
||||
|
||||
return &alloc_meta->alloc_track;
|
||||
}
|
||||
|
||||
struct kasan_track *kasan_get_free_track(struct kmem_cache *cache,
|
||||
void *object, u8 tag)
|
||||
{
|
||||
if (*(u8 *)kasan_mem_to_shadow(object) != KASAN_SLAB_FREETRACK)
|
||||
return NULL;
|
||||
/* Free meta must be present with KASAN_SLAB_FREETRACK. */
|
||||
return &kasan_get_free_meta(cache, object)->free_track;
|
||||
}
|
||||
|
||||
@@ -127,6 +127,27 @@ const char *kasan_get_bug_type(struct kasan_report_info *info)
|
||||
return get_wild_bug_type(info);
|
||||
}
|
||||
|
||||
struct kasan_track *kasan_get_alloc_track(struct kmem_cache *cache,
|
||||
void *object)
|
||||
{
|
||||
struct kasan_alloc_meta *alloc_meta;
|
||||
|
||||
alloc_meta = kasan_get_alloc_meta(cache, object);
|
||||
if (!alloc_meta)
|
||||
return NULL;
|
||||
|
||||
return &alloc_meta->alloc_track;
|
||||
}
|
||||
|
||||
struct kasan_track *kasan_get_free_track(struct kmem_cache *cache,
|
||||
void *object, u8 tag)
|
||||
{
|
||||
if (*(u8 *)kasan_mem_to_shadow(object) != KASAN_SLAB_FREETRACK)
|
||||
return NULL;
|
||||
/* Free meta must be present with KASAN_SLAB_FREETRACK. */
|
||||
return &kasan_get_free_meta(cache, object)->free_track;
|
||||
}
|
||||
|
||||
void kasan_metadata_fetch_row(char *buffer, void *row)
|
||||
{
|
||||
memcpy(buffer, kasan_mem_to_shadow(row), META_BYTES_PER_ROW);
|
||||
|
||||
@@ -21,3 +21,15 @@ const char *kasan_get_bug_type(struct kasan_report_info *info)
|
||||
|
||||
return "invalid-access";
|
||||
}
|
||||
|
||||
struct kasan_track *kasan_get_alloc_track(struct kmem_cache *cache,
|
||||
void *object)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct kasan_track *kasan_get_free_track(struct kmem_cache *cache,
|
||||
void *object, u8 tag)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -24,15 +24,3 @@ void kasan_save_alloc_info(struct kmem_cache *cache, void *object, gfp_t flags)
|
||||
void kasan_save_free_info(struct kmem_cache *cache, void *object)
|
||||
{
|
||||
}
|
||||
|
||||
struct kasan_track *kasan_get_alloc_track(struct kmem_cache *cache,
|
||||
void *object)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct kasan_track *kasan_get_free_track(struct kmem_cache *cache,
|
||||
void *object, u8 tag)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user