cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

kmemleak.h (3349B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * include/linux/kmemleak.h
      4 *
      5 * Copyright (C) 2008 ARM Limited
      6 * Written by Catalin Marinas <catalin.marinas@arm.com>
      7 */
      8
      9#ifndef __KMEMLEAK_H
     10#define __KMEMLEAK_H
     11
     12#include <linux/slab.h>
     13#include <linux/vmalloc.h>
     14
     15#ifdef CONFIG_DEBUG_KMEMLEAK
     16
     17extern void kmemleak_init(void) __init;
     18extern void kmemleak_alloc(const void *ptr, size_t size, int min_count,
     19			   gfp_t gfp) __ref;
     20extern void kmemleak_alloc_percpu(const void __percpu *ptr, size_t size,
     21				  gfp_t gfp) __ref;
     22extern void kmemleak_vmalloc(const struct vm_struct *area, size_t size,
     23			     gfp_t gfp) __ref;
     24extern void kmemleak_free(const void *ptr) __ref;
     25extern void kmemleak_free_part(const void *ptr, size_t size) __ref;
     26extern void kmemleak_free_percpu(const void __percpu *ptr) __ref;
     27extern void kmemleak_update_trace(const void *ptr) __ref;
     28extern void kmemleak_not_leak(const void *ptr) __ref;
     29extern void kmemleak_ignore(const void *ptr) __ref;
     30extern void kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) __ref;
     31extern void kmemleak_no_scan(const void *ptr) __ref;
     32extern void kmemleak_alloc_phys(phys_addr_t phys, size_t size, int min_count,
     33				gfp_t gfp) __ref;
     34extern void kmemleak_free_part_phys(phys_addr_t phys, size_t size) __ref;
     35extern void kmemleak_not_leak_phys(phys_addr_t phys) __ref;
     36extern void kmemleak_ignore_phys(phys_addr_t phys) __ref;
     37
     38static inline void kmemleak_alloc_recursive(const void *ptr, size_t size,
     39					    int min_count, slab_flags_t flags,
     40					    gfp_t gfp)
     41{
     42	if (!(flags & SLAB_NOLEAKTRACE))
     43		kmemleak_alloc(ptr, size, min_count, gfp);
     44}
     45
     46static inline void kmemleak_free_recursive(const void *ptr, slab_flags_t flags)
     47{
     48	if (!(flags & SLAB_NOLEAKTRACE))
     49		kmemleak_free(ptr);
     50}
     51
     52static inline void kmemleak_erase(void **ptr)
     53{
     54	*ptr = NULL;
     55}
     56
     57#else
     58
     59static inline void kmemleak_init(void)
     60{
     61}
     62static inline void kmemleak_alloc(const void *ptr, size_t size, int min_count,
     63				  gfp_t gfp)
     64{
     65}
     66static inline void kmemleak_alloc_recursive(const void *ptr, size_t size,
     67					    int min_count, slab_flags_t flags,
     68					    gfp_t gfp)
     69{
     70}
     71static inline void kmemleak_alloc_percpu(const void __percpu *ptr, size_t size,
     72					 gfp_t gfp)
     73{
     74}
     75static inline void kmemleak_vmalloc(const struct vm_struct *area, size_t size,
     76				    gfp_t gfp)
     77{
     78}
     79static inline void kmemleak_free(const void *ptr)
     80{
     81}
     82static inline void kmemleak_free_part(const void *ptr, size_t size)
     83{
     84}
     85static inline void kmemleak_free_recursive(const void *ptr, slab_flags_t flags)
     86{
     87}
     88static inline void kmemleak_free_percpu(const void __percpu *ptr)
     89{
     90}
     91static inline void kmemleak_update_trace(const void *ptr)
     92{
     93}
     94static inline void kmemleak_not_leak(const void *ptr)
     95{
     96}
     97static inline void kmemleak_ignore(const void *ptr)
     98{
     99}
    100static inline void kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp)
    101{
    102}
    103static inline void kmemleak_erase(void **ptr)
    104{
    105}
    106static inline void kmemleak_no_scan(const void *ptr)
    107{
    108}
    109static inline void kmemleak_alloc_phys(phys_addr_t phys, size_t size,
    110				       int min_count, gfp_t gfp)
    111{
    112}
    113static inline void kmemleak_free_part_phys(phys_addr_t phys, size_t size)
    114{
    115}
    116static inline void kmemleak_not_leak_phys(phys_addr_t phys)
    117{
    118}
    119static inline void kmemleak_ignore_phys(phys_addr_t phys)
    120{
    121}
    122
    123#endif	/* CONFIG_DEBUG_KMEMLEAK */
    124
    125#endif	/* __KMEMLEAK_H */