LCOV - code coverage report
Current view: top level - include/linux - kmemleak.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 6 6 100.0 %
Date: 2021-04-22 12:43:58 Functions: 0 0 -

          Line data    Source code
       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             : 
      17             : extern void kmemleak_init(void) __init;
      18             : extern void kmemleak_alloc(const void *ptr, size_t size, int min_count,
      19             :                            gfp_t gfp) __ref;
      20             : extern void kmemleak_alloc_percpu(const void __percpu *ptr, size_t size,
      21             :                                   gfp_t gfp) __ref;
      22             : extern void kmemleak_vmalloc(const struct vm_struct *area, size_t size,
      23             :                              gfp_t gfp) __ref;
      24             : extern void kmemleak_free(const void *ptr) __ref;
      25             : extern void kmemleak_free_part(const void *ptr, size_t size) __ref;
      26             : extern void kmemleak_free_percpu(const void __percpu *ptr) __ref;
      27             : extern void kmemleak_update_trace(const void *ptr) __ref;
      28             : extern void kmemleak_not_leak(const void *ptr) __ref;
      29             : extern void kmemleak_ignore(const void *ptr) __ref;
      30             : extern void kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) __ref;
      31             : extern void kmemleak_no_scan(const void *ptr) __ref;
      32             : extern void kmemleak_alloc_phys(phys_addr_t phys, size_t size, int min_count,
      33             :                                 gfp_t gfp) __ref;
      34             : extern void kmemleak_free_part_phys(phys_addr_t phys, size_t size) __ref;
      35             : extern void kmemleak_not_leak_phys(phys_addr_t phys) __ref;
      36             : extern void kmemleak_ignore_phys(phys_addr_t phys) __ref;
      37             : 
      38     1472633 : static 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     1472633 :         if (!(flags & SLAB_NOLEAKTRACE))
      43      691855 :                 kmemleak_alloc(ptr, size, min_count, gfp);
      44             : }
      45             : 
      46     1303396 : static inline void kmemleak_free_recursive(const void *ptr, slab_flags_t flags)
      47             : {
      48     1303396 :         if (!(flags & SLAB_NOLEAKTRACE))
      49      614015 :                 kmemleak_free(ptr);
      50             : }
      51             : 
      52             : static inline void kmemleak_erase(void **ptr)
      53             : {
      54             :         *ptr = NULL;
      55             : }
      56             : 
      57             : #else
      58             : 
      59             : static inline void kmemleak_init(void)
      60             : {
      61             : }
      62             : static inline void kmemleak_alloc(const void *ptr, size_t size, int min_count,
      63             :                                   gfp_t gfp)
      64             : {
      65             : }
      66             : static 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             : }
      71             : static inline void kmemleak_alloc_percpu(const void __percpu *ptr, size_t size,
      72             :                                          gfp_t gfp)
      73             : {
      74             : }
      75             : static inline void kmemleak_vmalloc(const struct vm_struct *area, size_t size,
      76             :                                     gfp_t gfp)
      77             : {
      78             : }
      79             : static inline void kmemleak_free(const void *ptr)
      80             : {
      81             : }
      82             : static inline void kmemleak_free_part(const void *ptr, size_t size)
      83             : {
      84             : }
      85             : static inline void kmemleak_free_recursive(const void *ptr, slab_flags_t flags)
      86             : {
      87             : }
      88             : static inline void kmemleak_free_percpu(const void __percpu *ptr)
      89             : {
      90             : }
      91             : static inline void kmemleak_update_trace(const void *ptr)
      92             : {
      93             : }
      94             : static inline void kmemleak_not_leak(const void *ptr)
      95             : {
      96             : }
      97             : static inline void kmemleak_ignore(const void *ptr)
      98             : {
      99             : }
     100             : static inline void kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp)
     101             : {
     102             : }
     103             : static inline void kmemleak_erase(void **ptr)
     104             : {
     105             : }
     106             : static inline void kmemleak_no_scan(const void *ptr)
     107             : {
     108             : }
     109             : static inline void kmemleak_alloc_phys(phys_addr_t phys, size_t size,
     110             :                                        int min_count, gfp_t gfp)
     111             : {
     112             : }
     113             : static inline void kmemleak_free_part_phys(phys_addr_t phys, size_t size)
     114             : {
     115             : }
     116             : static inline void kmemleak_not_leak_phys(phys_addr_t phys)
     117             : {
     118             : }
     119             : static inline void kmemleak_ignore_phys(phys_addr_t phys)
     120             : {
     121             : }
     122             : 
     123             : #endif  /* CONFIG_DEBUG_KMEMLEAK */
     124             : 
     125             : #endif  /* __KMEMLEAK_H */

Generated by: LCOV version 1.14