LCOV - code coverage report
Current view: top level - mm - pgalloc-track.h (source / functions) Hit Total Coverage
Test: landlock.info Lines: 11 13 84.6 %
Date: 2021-04-22 12:43:58 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /* SPDX-License-Identifier: GPL-2.0 */
       2             : #ifndef _LINUX_PGALLLC_TRACK_H
       3             : #define _LINUX_PGALLLC_TRACK_H
       4             : 
       5             : #if defined(CONFIG_MMU)
       6       20661 : static inline p4d_t *p4d_alloc_track(struct mm_struct *mm, pgd_t *pgd,
       7             :                                      unsigned long address,
       8             :                                      pgtbl_mod_mask *mod_mask)
       9             : {
      10       20661 :         if (unlikely(pgd_none(*pgd))) {
      11             :                 if (__p4d_alloc(mm, pgd, address))
      12             :                         return NULL;
      13             :                 *mod_mask |= PGTBL_PGD_MODIFIED;
      14             :         }
      15             : 
      16       20661 :         return p4d_offset(pgd, address);
      17             : }
      18             : 
      19       20741 : static inline pud_t *pud_alloc_track(struct mm_struct *mm, p4d_t *p4d,
      20             :                                      unsigned long address,
      21             :                                      pgtbl_mod_mask *mod_mask)
      22             : {
      23       20741 :         if (unlikely(p4d_none(*p4d))) {
      24           0 :                 if (__pud_alloc(mm, p4d, address))
      25             :                         return NULL;
      26           0 :                 *mod_mask |= PGTBL_P4D_MODIFIED;
      27             :         }
      28             : 
      29       20741 :         return pud_offset(p4d, address);
      30             : }
      31             : 
      32       20739 : static inline pmd_t *pmd_alloc_track(struct mm_struct *mm, pud_t *pud,
      33             :                                      unsigned long address,
      34             :                                      pgtbl_mod_mask *mod_mask)
      35             : {
      36       20739 :         if (unlikely(pud_none(*pud))) {
      37           4 :                 if (__pmd_alloc(mm, pud, address))
      38             :                         return NULL;
      39           4 :                 *mod_mask |= PGTBL_PUD_MODIFIED;
      40             :         }
      41             : 
      42       41478 :         return pmd_offset(pud, address);
      43             : }
      44             : #endif /* CONFIG_MMU */
      45             : 
      46             : #define pte_alloc_kernel_track(pmd, address, mask)                      \
      47             :         ((unlikely(pmd_none(*(pmd))) &&                                 \
      48             :           (__pte_alloc_kernel(pmd) || ({*(mask)|=PGTBL_PMD_MODIFIED;0;})))?\
      49             :                 NULL: pte_offset_kernel(pmd, address))
      50             : 
      51             : #endif /* _LINUX_PGALLLC_TRACK_H */

Generated by: LCOV version 1.14