函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:fs\namespace.c Create Date:2022-07-29 10:39:34
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:copy_tree

函数原型:struct mount *copy_tree(struct mount *mnt, struct dentry *dentry, int flag)

返回类型:struct mount

参数:

类型参数名称
struct mount *mnt
struct dentry *dentry
intflag
1754  如果非flag按位与CL_COPY_UNBINDABLE的值且IS_MNT_UNBINDABLE(mnt)则返回:错误号
1757  如果非flag按位与CL_COPY_MNT_NS_FILE的值且is_mnt_ns_file(dentry)则返回:错误号
1760  res等于q等于clone_mnt(mnt, dentry, flag)
1761  如果是错误则返回:q
1764  mnt_mountpoint等于mnt_mountpoint
1766  p等于mnt
1769  如果非是子目录则继续下一循环
1772 s循环
1773  如果非flag按位与CL_COPY_UNBINDABLE的值且IS_MNT_UNBINDABLE(s)则
1775  如果mnt_flags按位与MNT_LOCKED
1777  q等于错误号
1778  转到:out
1779  否则
1780  s等于skip_mnt_tree(s)
1781  继续下一循环
1786  s等于skip_mnt_tree(s)
1787  继续下一循环
1789 p不等于mnt_parent循环
1790  p等于mnt_parent
1791  q等于mnt_parent
1793  p等于s
1794  parent等于q
1795  q等于clone_mnt(p, root of the mounted tree , flag)
1796  如果是错误则转到:out
1798  lock_mount_hash()
1799  添加链表项
1800  vfsmount lock must be held for write
1801  unlock_mount_hash()
1804  返回:res
1805  out :
1806  如果res
1807  lock_mount_hash()
1808  mount_lock must be held* namespace_sem must be held for write
1809  unlock_mount_hash()
1811  返回:q
调用者
名称描述
collect_mountsCaller should check returned pointer for errors
__do_loopback
copy_mnt_ns
propagate_one