Defined in 1 files as a function:

Referenced in 4 files:

Smatch caller information:

fs/autofs/expire.c positive_after() -> d_first_child()

Type Parameter Key Value
DATA_SOURCE 0 dentry $0
PREEMPT_ADD
UNITS 0 dentry unit_jiffy
LOCK2 &sbi->lookup_lock
HALF_LOCKED2 &found->d_lockref.lock
HALF_LOCKED2 0 &dentry->d_lockref.lock
TYPE_LOCK (struct autofs_sb_info)->lookup_lock
TYPE_LOCK (struct lockref)->lock

fs/nfs/dir.c nfs_clear_verifier_directory() -> d_first_child()

Type Parameter Key Value
PARAM_VALUE 0 dentry 4096-ptr_max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &dir->i_lock
LOCK2 0 &dentry->d_lockref.lock
HALF_LOCKED2 &dir->i_rwsem
TYPE_LOCK (struct inode)->i_lock
TYPE_LOCK (struct lockref)->lock

fs/libfs.c find_next_child() -> d_first_child()

Type Parameter Key Value
BUF_SIZE 0 dentry (-1),1-s32max
BUF_SIZE 0 dentry (-1),1-s32max
DATA_SOURCE 0 dentry $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
UNITS 0 dentry unit_jiffy
LOCK2 0 &dentry->d_lockref.lock
HALF_LOCKED2 &root->i_rwsem
TYPE_LOCK (struct lockref)->lock

fs/libfs.c find_positive_dentry() -> d_first_child()

Type Parameter Key Value
PARAM_VALUE 0 dentry 4096-ptr_max
DATA_SOURCE 0 dentry $0
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
LOCK2 &inode->i_rwsem
LOCK2 0 &dentry->d_lockref.lock
HALF_LOCKED2 &dir_fp->readdir_lock
HALF_LOCKED2 rcu_read
TYPE_LOCK (struct inode)->i_rwsem
TYPE_LOCK (struct lockref)->lock

fs/dcache.c d_walk() -> d_first_child()

Type Parameter Key Value
PARAM_VALUE 0 dentry 4096-ptr_max
BUF_SIZE 0 dentry (-1),1-s32max
BUF_SIZE 0 dentry (-1),1-s32max
PREEMPT_ADD <- disables preempt
RX_PATH
TASK_NOT_RUNNING
USER_DATA 0 dentry->__d_name.hash 0-u32max[c]
UNITS 0 dentry unit_jiffy
USER_PTR 0 dentry->__d_name.name
HALF_LOCKED2 &dentry->d_lockref.lock
HALF_LOCKED2 global &mount_lock.lock
HALF_LOCKED2 rcu_read
HALF_LOCKED2 0 &dentry->d_lockref.lock