Documented in 1 files:

Defined in 1 files as a function:

Referenced in 1 files:

Smatch caller information:

fs/namespace.c copy_tree() -> attach_mnt()

Type Parameter Key Value
PARAM_VALUE 0 mnt 4096-ptr_max
PARAM_VALUE 0 mnt->mnt.mnt_idmap 4096-ptr_max
PARAM_VALUE 0 mnt->mnt.mnt_root 4096-ptr_max
PARAM_VALUE 0 mnt->mnt.mnt_sb 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_child.next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_child.next->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_child.prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_child.prev->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_child.prev->prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_devname 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_expire.next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_expire.next->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_expire.prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_expire.prev->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_expire.prev->prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_hash.next 0
PARAM_VALUE 0 mnt->mnt_hash.pprev 0
PARAM_VALUE 0 mnt->mnt_list.next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_list.next->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_list.prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_list.prev->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_list.prev->prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_mountpoint 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_mounts.next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_mounts.next->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_mounts.prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_mounts.prev->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_mounts.prev->prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_mp_list.next 0
PARAM_VALUE 0 mnt->mnt_mp_list.pprev 0
PARAM_VALUE 0 mnt->mnt_next_for_sb 0,4096-ptr_max
PARAM_VALUE 0 mnt->mnt_next_for_sb->mnt_pprev_for_sb 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_ns_visible.next 0
PARAM_VALUE 0 mnt->mnt_ns_visible.pprev 0
PARAM_VALUE 0 mnt->mnt_parent 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt.mnt_idmap 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt.mnt_root 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt.mnt_sb 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_child.next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_child.prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_devname 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_expire.next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_expire.prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_hash.next 0
PARAM_VALUE 0 mnt->mnt_parent->mnt_hash.pprev 0
PARAM_VALUE 0 mnt->mnt_parent->mnt_list.next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_list.prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_mountpoint 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_mounts.next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_mounts.prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_mp_list.next 0
PARAM_VALUE 0 mnt->mnt_parent->mnt_mp_list.pprev 0
PARAM_VALUE 0 mnt->mnt_parent->mnt_parent 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_pcp 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_share.next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_share.prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_slave.next 0
PARAM_VALUE 0 mnt->mnt_parent->mnt_slave.pprev 0
PARAM_VALUE 0 mnt->mnt_pcp 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_pprev_for_sb 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_share.next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_share.next->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_share.prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_share.prev->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_share.prev->prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_slave.next->pprev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_slave.pprev 0,4096-ptr_max
PARAM_VALUE 0 *mnt->mnt_pprev_for_sb 0,4096-ptr_max
PARAM_VALUE 1 parent 4096-ptr_max
PARAM_VALUE 1 parent->mnt.mnt_idmap 4096-ptr_max
PARAM_VALUE 1 parent->mnt.mnt_root 4096-ptr_max
PARAM_VALUE 1 parent->mnt.mnt_sb 4096-ptr_max
PARAM_VALUE 1 parent->mnt_child.next 4096-ptr_max
PARAM_VALUE 1 parent->mnt_devname 4096-ptr_max
PARAM_VALUE 1 parent->mnt_expire.next 4096-ptr_max
PARAM_VALUE 1 parent->mnt_expire.prev 4096-ptr_max
PARAM_VALUE 1 parent->mnt_hash.pprev 0,4096-ptr_max
PARAM_VALUE 1 parent->mnt_list.next 4096-ptr_max
PARAM_VALUE 1 parent->mnt_list.prev 4096-ptr_max
PARAM_VALUE 1 parent->mnt_mounts.next 4096-ptr_max
PARAM_VALUE 1 parent->mnt_mounts.prev 4096-ptr_max
PARAM_VALUE 1 parent->mnt_mp_list.pprev 0,4096-ptr_max
PARAM_VALUE 1 parent->mnt_ns_visible.next 0
PARAM_VALUE 1 parent->mnt_ns_visible.pprev 0
PARAM_VALUE 1 parent->mnt_parent 4096-ptr_max
PARAM_VALUE 1 parent->mnt_pcp 4096-ptr_max
PARAM_VALUE 1 parent->mnt_share.next 4096-ptr_max
PARAM_VALUE 1 parent->mnt_share.prev 4096-ptr_max
PARAM_VALUE 1 parent->mnt_slave.pprev 0,4096-ptr_max
CAPPED_DATA 0 mnt 1
DATA_SOURCE 0 mnt r clone_mnt
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &mount_lock.lock
HALF_LOCKED2 global &namespace_sem

fs/namespace.c create_new_namespace() -> attach_mnt()

Type Parameter Key Value
PARAM_VALUE 0 mnt 4096-ptr_max
PARAM_VALUE 1 parent 4096-ptr_max
PARAM_VALUE 1 parent->mnt.mnt_idmap 4096-ptr_max
PARAM_VALUE 1 parent->mnt.mnt_root 4096-ptr_max
PARAM_VALUE 1 parent->mnt.mnt_sb 4096-ptr_max
PARAM_VALUE 1 parent->mnt_child.next 4096-ptr_max
PARAM_VALUE 1 parent->mnt_child.prev 4096-ptr_max
PARAM_VALUE 1 parent->mnt_devname 4096-ptr_max
PARAM_VALUE 1 parent->mnt_expire.next 4096-ptr_max
PARAM_VALUE 1 parent->mnt_expire.prev 4096-ptr_max
PARAM_VALUE 1 parent->mnt_hash.next 0
PARAM_VALUE 1 parent->mnt_hash.pprev 0
PARAM_VALUE 1 parent->mnt_list.next 4096-ptr_max
PARAM_VALUE 1 parent->mnt_list.prev 4096-ptr_max
PARAM_VALUE 1 parent->mnt_mountpoint 4096-ptr_max
PARAM_VALUE 1 parent->mnt_mounts.next 4096-ptr_max
PARAM_VALUE 1 parent->mnt_mounts.prev 4096-ptr_max
PARAM_VALUE 1 parent->mnt_mp_list.next 0
PARAM_VALUE 1 parent->mnt_mp_list.pprev 0
PARAM_VALUE 1 parent->mnt_next_for_sb 0,4096-ptr_max
PARAM_VALUE 1 parent->mnt_ns_visible.next 0
PARAM_VALUE 1 parent->mnt_ns_visible.pprev 0
PARAM_VALUE 1 parent->mnt_parent 4096-ptr_max
PARAM_VALUE 1 parent->mnt_pcp 4096-ptr_max
PARAM_VALUE 1 parent->mnt_pprev_for_sb 4096-ptr_max
PARAM_VALUE 1 parent->mnt_share.next 4096-ptr_max
PARAM_VALUE 1 parent->mnt_share.prev 4096-ptr_max
PARAM_VALUE 1 parent->mnt_slave.pprev 0,4096-ptr_max
PARAM_VALUE 2 mp 4096-ptr_max
PARAM_VALUE 2 mp->m_dentry->d_inode->i_rwsem.dep_map->name 0-255
PARAM_VALUE 2 mp->m_dentry->d_inode->i_rwsem.first_waiter->handoff_set 1
PARAM_VALUE 2 mp->m_dentry->d_inode->i_rwsem.first_waiter->type 0-1
PARAM_VALUE 2 mp->m_dentry->d_lru.next 4096-ptr_max
PARAM_VALUE 2 mp->m_dentry->d_lru.prev 4096-ptr_max
PARAM_VALUE 2 mp->m_hash->next->pprev 1-u64max
CAPPED_DATA 0 mnt 1
NS_CAPABLE 0 21
NOCHECK_CALL
LOCK2 &to_path.dentry->d_inode->i_rwsem
LOCK2 global &mount_lock.lock
TYPE_LOCK (struct inode)->i_rwsem

fs/namespace.c init_mount_tree() -> attach_mnt()

Type Parameter Key Value
PARAM_VALUE 0 mnt 4096-ptr_max
PARAM_VALUE 1 parent 4096-ptr_max
PARAM_VALUE 2 mp 4096-ptr_max
PARAM_VALUE 2 mp->m_dentry 4096-ptr_max
PARAM_VALUE 2 mp->m_list.first 2250278746685325312,2376455258303565824,3228210307126067200,4840642130781356032,5513784921387532288,6432334256566214656,6781411499137540096,8584327291326013440
NOCHECK_CALL
LOCK2 &root.dentry->d_inode->i_rwsem
LOCK2 global &mount_lock.lock
LOCK2 global &namespace_sem
TYPE_LOCK (struct inode)->i_rwsem

fs/namespace.c mnt_change_mountpoint() -> attach_mnt()

Type Parameter Key Value
PARAM_VALUE 0 mnt 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_child.next->prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_child.prev->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_hash->next->pprev 1-u64max
PARAM_VALUE 0 mnt->mnt_hash.pprev 0
PARAM_VALUE 0 mnt->mnt_mp_list->next->pprev 1-u64max
PARAM_VALUE 0 mnt->mnt_mp_list.next 0
PARAM_VALUE 0 mnt->mnt_mp_list.pprev 0
PARAM_VALUE 1 parent 4096-ptr_max
DATA_SOURCE 0 mnt $2
DATA_SOURCE 1 parent $0
DATA_SOURCE 2 mp $1
RX_PATH
TASK_NOT_RUNNING
NOCHECK_CALL
LOCK2 global &mount_lock.lock

fs/namespace.c path_pivot_root() -> attach_mnt()

Type Parameter Key Value
PARAM_VALUE 0 mnt 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_child.next->prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_child.prev->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_hash->next->pprev 1-u64max
PARAM_VALUE 0 mnt->mnt_hash.pprev 0
PARAM_VALUE 0 mnt->mnt_mp 0
PARAM_VALUE 0 mnt->mnt_mp->m_dentry->d_lru.next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_mp->m_dentry->d_lru.prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_mp->m_hash->next->pprev 1-u64max
PARAM_VALUE 0 mnt->mnt_mp_list->next->pprev 1-u64max
PARAM_VALUE 0 mnt->mnt_mp_list.next 0
PARAM_VALUE 0 mnt->mnt_mp_list.pprev 0
PARAM_VALUE 0 mnt->mnt_parent 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_parent 4096-ptr_max
PARAM_VALUE 1 parent 4096-ptr_max
CAPPED_DATA 0 mnt 1
CAPPED_DATA 0 mnt->mnt_ns 1
DATA_SOURCE 0 mnt r real_mount
BIT_INFO 1 parent->mnt_t_flags 0x0,0xfffffffe
NOCHECK_CALL
LOCK2 global &mount_lock.lock

fs/namespace.c path_pivot_root() -> attach_mnt()

Type Parameter Key Value
PARAM_VALUE 0 mnt 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_child.next->prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_child.prev->next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_hash->next->pprev 1-u64max
PARAM_VALUE 0 mnt->mnt_hash.pprev 0
PARAM_VALUE 0 mnt->mnt_mp 0
PARAM_VALUE 0 mnt->mnt_mp->m_dentry->d_lru.next 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_mp->m_dentry->d_lru.prev 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_mp->m_hash->next->pprev 1-u64max
PARAM_VALUE 0 mnt->mnt_mp_list->next->pprev 1-u64max
PARAM_VALUE 0 mnt->mnt_mp_list.next 0
PARAM_VALUE 0 mnt->mnt_mp_list.pprev 0
PARAM_VALUE 0 mnt->mnt_parent 4096-ptr_max
PARAM_VALUE 0 mnt->mnt_parent->mnt_parent 4096-ptr_max
PARAM_VALUE 1 parent 4096-ptr_max
PARAM_VALUE 2 mp 4096-ptr_max
PARAM_VALUE 2 mp->m_dentry 4096-ptr_max
PARAM_VALUE 2 mp->m_list.first 2250278746685325312,2376455258303565824,3228210307126067200,4840642130781356032,5513784921387532288,6432334256566214656,6781411499137540096,8584327291326013440
CAPPED_DATA 0 mnt 1
CAPPED_DATA 0 mnt->mnt_ns 1
DATA_SOURCE 0 mnt r real_mount
PARAM_COMPARE 0 mnt != $1
PARAM_COMPARE 1 parent != $0
PARAM_COMPARE 1 parent != $0
BIT_INFO 0 mnt->mnt.mnt_flags 0x0,0xff7fffff
BIT_INFO 1 parent->mnt_t_flags 0x0,0xfffffffe
NOCHECK_CALL
LOCK2 global &mount_lock.lock