Documented in 1 files:

Defined in 1 files as a prototype:

Defined in 1 files as a function:

Referenced in 1 files:

Smatch caller information:

mm/gup.c __get_user_pages() -> try_grab_folio()

Type Parameter Key Value
PARAM_VALUE 1 refs 1-262143
CAPPED_DATA 1 refs 1
DATA_SOURCE 0 folio r _compound_head
DATA_SOURCE 2 flags $3
RX_PATH
TASK_NOT_RUNNING
HOST_DATA 1 refs 2-262142[c]
USER_DATA 1 refs 2-262143[c]
USER_DATA 2 flags 0-u32max
UNITS 1 refs unit_page
HALF_LOCKED2 &mm->mmap_lock

mm/gup.c folio_add_pins() -> try_grab_folio()

Type Parameter Key Value
PARAM_VALUE 0 folio 4096-ptr_max
PARAM_VALUE 2 flags 524288
CAPPED_DATA 1 refs 1
DATA_SOURCE 0 folio $0
DATA_SOURCE 1 refs $1
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &access->ioas_lock
HALF_LOCKED2 &iopt->iova_rwsem
HALF_LOCKED2 &pages->mutex

mm/gup.c follow_huge_pmd() -> try_grab_folio()

Type Parameter Key Value
PARAM_VALUE 1 refs 1
PARAM_VALUE 2 flags 1-u32max
DATA_SOURCE 2 flags $3
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
USER_DATA 2 flags 1-u32max
HALF_LOCKED2 &mm->mmap_lock

mm/gup.c follow_huge_pud() -> try_grab_folio()

Type Parameter Key Value
PARAM_VALUE 1 refs 1
PARAM_VALUE 2 flags 1-u32max
DATA_SOURCE 2 flags $3
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
USER_DATA 2 flags 1-u32max
HALF_LOCKED2 &mm->mmap_lock

mm/gup.c follow_page_pte() -> try_grab_folio()

Type Parameter Key Value
PARAM_VALUE 1 refs 1
DATA_SOURCE 0 folio r _compound_head
DATA_SOURCE 2 flags $3
PREEMPT_ADD
RX_PATH
TASK_NOT_RUNNING
USER_DATA 2 flags 0-u32max
LOCK2 ptl
HALF_LOCKED2 &mm->mmap_lock

mm/gup.c get_gate_page() -> try_grab_folio()

Type Parameter Key Value
PARAM_VALUE 1 refs 1
DATA_SOURCE 2 flags $2
BIT_INFO 2 flags 0x0,0xffbffffe
RX_PATH
TASK_NOT_RUNNING
USER_DATA 2 flags 0-u32max
LOCK2 rcu_read
HALF_LOCKED2 &mm->mmap_lock

mm/gup.c memfd_pin_folios() -> try_grab_folio()

Type Parameter Key Value
PARAM_VALUE 1 refs 1
PARAM_VALUE 2 flags 524288
RX_PATH
TASK_NOT_RUNNING
HALF_LOCKED2 &inode->i_rwsem
HALF_LOCKED2 _T->lock