函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\locking\rwsem.c Create Date:2022-07-27 10:48:50
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:lock for reading

函数原型:void __sched down_read(struct rw_semaphore *sem)

返回类型:void

参数:

类型参数名称
struct rw_semaphore *sem
1494  might_sleep()
1495  rwsem_acquire_read( & dep_map, 0, 0, _RET_IP_)
1497  LOCK_CONTENDED(sem, __down_read_trylock, lock for reading)
调用者
名称描述
digsig_verify_rsaRSA公钥签名验证
exit_mmTurn us into a lazy TLB process if we* aren't already..
SYSCALL_DEFINE1
SYSCALL_DEFINE1Old cruft
SYSCALL_DEFINE1
SYSCALL_DEFINE2
prctl_set_mm_exe_file
prctl_set_mm
usermodehelper_read_trylock
usermodehelper_read_lock_wait
__blocking_notifier_call_chain__blocking_notifier_call_chain - Call functions in a blocking notifier chain*@nh: Pointer to head of the blocking notifier chain*@val: Value passed unmodified to notifier function*@v: Pointer passed unmodified to notifier function
proc_sched_autogroup_show_task
torture_rwsem_down_read
get_posix_clockReturns NULL if the posix_clock instance attached to 'fp' is old and stale.
posix_clock_open
fault_in_user_writeableault_in_user_writeable() - Fault in user address and verify RW access*@uaddr: pointer to faulting user space address* Slow path to fixup the fault we just took in the atomic write* access to @uaddr
acct_collectacct_collect - collect accounting information into pacct_struct*@exitcode: task exit code*@group_dead: not 0, if this thread is the last one in the process.
clone_uts_nsClone a new ns copying an original utsname, setting refcount to 1*@old_ns: namespace to clone* Return ERR_PTR(-ENOMEM) on error (failure to allocate), new ns otherwise
proc_do_uts_stringSpecial case of dostring for the UTS structure. This has locks* to observe. Should this be in kernel/sys.c ????
send_cpu_listenersSend taskstats data in @skb to listeners registered for @cpu's exit data
seq_print_user_ip
trace_event_read_lock
bpf_prog_offload_verifier_prep
bpf_prog_offload_verify_insn
bpf_prog_offload_finalize
bpf_prog_offload_replace_insn
bpf_prog_offload_remove_insns
bpf_prog_offload_translate
bpf_prog_offload_info_fill_ns
bpf_prog_offload_info_fill
bpf_map_offload_lookup_elem
bpf_map_offload_update_elem
bpf_map_offload_delete_elem
bpf_map_offload_get_next_key
bpf_map_offload_info_fill_ns
bpf_offload_dev_match
bpf_offload_prog_map_match
perf_event_addr_filters_applyUpdate event's address range filters based on the* task's existing mappings, if any.
filter_chain
unapply_uprobe
find_active_uprobe
handler_chain
handle_uretprobe_chain
__get_user_pages_locked
__mm_populate__mm_populate - populate and/or mlock pages within a range of address space.* This is used to implement mlock() and the MAP_POPULATE / MAP_LOCKED mmap* flags. VMAs must be already marked with the desired vm_flags, and* mmap_sem must not be held.
get_user_pages_unlockedget_user_pages_unlocked() is suitable to replace the form:* down_read(&mm->mmap_sem);* get_user_pages(tsk, mm,
__gup_longterm_unlocked
SYSCALL_DEFINE3The mincore(2) system call
SYSCALL_DEFINE3MS_SYNC syncs the entire file - including mappings
process_vm_rw_single_vecprocess_vm_rw_single_vec - read/write pages from task specified*@addr: start memory address of target process*@len: size of area to copy to/from*@iter: where to copy to/from locally*@process_pages: struct pages area that can store at least*
madvise_willneedSchedule all required I/O operations. Do not wait for completion.
madvise_dontneed_free
madvise_removeApplication wants to free up the pages and associated backing store.* This is effectively punching a hole into the middle of a file.
SYSCALL_DEFINE3The madvise(2) system call
unuse_mm
do_get_mempolicyRetrieve NUMA policy
do_migrate_pagesMove pages between the two nodesets so as to preserve the physical* layout as much as possible.* Returns the number of page that could not be moved.
break_cow
get_mergeable_page
try_to_merge_with_ksm_pagery_to_merge_with_ksm_page - like try_to_merge_two_pages,* but no new kernel page is allocated: kpage must already be a ksm page.* This function returns 0 if the pages were merged, -EFAULT otherwise.
cmp_and_merge_pagemp_and_merge_page - first see if page can be merged into the stable tree;* if not, compare checksum to previous and if it's the same, see if page can* be inserted into the unstable tree, or merged with a page already there and
scan_get_next_rmap_item
add_page_for_migrationResolves the given address to a struct page, isolates it from the LRU and* puts it to the given pagelist
do_pages_stat_arrayDetermine the nodes of an array of pages and store it in an array of status.
__collapse_huge_page_swapinBring missing pages in from swap, to complete THP collapse.* Only done if khugepaged_scan_pmd believes it is worthwhile.* Called and returns without pte mapped or spinlocks held,* but with mmap_sem held to protect against vma changes.
collapse_huge_page
mem_cgroup_count_precharge
__mcopy_atomic_hugetlb__mcopy_atomic processing for HUGETLB vmas. Note that this routine is* called with mmap_sem held, it will release mmap_sem before returning.
__mcopy_atomic
get_vaddr_framesget_vaddr_frames() - map virtual addresses to pfns*@start: starting user address*@nr_frames: number of pages / pfns from start to map*@gup_flags: flags modifying lookup behaviour*@vec: structure which receives pages / pfns of the addresses mapped.
msgctl_info
semctl_info
exit_shmLocking assumes this will only be called with task == current
shmctl_ipc_info
shmctl_shm_info
keyctl_read_keyRead a key's payload
lookup_user_keyLook up a key ID given us by userspace with a given permissions mask to get* the key it refers to.* Flags can be passed to request that special keyrings be created if referred* to directly, to permit partially constructed keys to be found and to skip
construct_get_dest_keyringGet the appropriate destination keyring for the request.* The keyring selected is returned with an extra reference upon it which the* caller must release.
request_key_auth_newCreate an authorisation token for /sbin/request-key or whoever to gain* access to the caller's security data.
key_get_persistentGet the persistent keyring for a specific UID and link it to the nominated* keyring.
dh_data_from_key
request_user_keyquest_user_key - request the user key* Use a user provided key to encrypt/decrypt an encrypted-key.
request_trusted_keyquest_trusted_key - request the trusted key* Trusted keys are sealed to PCRs and other metadata. Although userspace* manages both trusted/encrypted key-types, like the encrypted key type* data, trusted key type data is not visible decrypted from userspace.
evm_init_keyGet the key from the TPM for the SHA1-HMAC
iterate_supers_typerate_supers_type - call function for superblocks of given type*@type: fs type*@f: function to call*@arg: argument to pass to it* Scans the superblock list and calls given function, passing it* locked superblock and given argument.
__get_super
user_get_super
exec_mmap
__is_local_mountpoint__is_local_mountpoint - Test to see if dentry is a mountpoint in the* current mount namespace
m_startrator; we want it to have access to namespace_sem, thus here...
may_umountmay_umount - check if a mount point is busy*@mnt: root of mount* This is called to check if a mount point has any* open files, pwds, chroots or sub mounts. If the* mount has sub mounts this will return busy* regardless of whether the sub mounts are busy.
mnt_already_visible
SYSCALL_DEFINE1sync a single super
handle_userfaultThe locking rules involved in returning VM_FAULT_RETRY depending on* FAULT_FLAG_ALLOW_RETRY, FAULT_FLAG_RETRY_NOWAIT and* FAULT_FLAG_KILLABLE are not straightforward
io_sqe_buffer_register
try_to_lock_encrypted_files
fscrypt_ioctl_get_key_statusRetrieve the status of an fscrypt master encryption key
setup_file_encryption_keyFind the master key, then set up the inode's actual encryption key.* If the master key is found in the filesystem-level keyring, then the* corresponding 'struct key' is returned in *master_key_ret with* ->mk_secret_sem read-locked
find_and_lock_process_keySearch the current task's subscribed keyrings for a "logon" key with* description prefix:descriptor, and if found acquire a read lock on it and* return a pointer to its validated payload in *payload_ret.
format_corenamermat_corename will inspect the pattern parameter, and output a* name into corename, which must have space for at least* CORENAME_MAX_SIZE bytes plus one byte for the zero terminator.
v1_read_file_info
v2_read_file_infoRead information header from quota file
v2_read_dquot
v2_write_dquot
v2_get_next_id
test_func
read_ldt
fixup_user_faultxup_user_fault() - manually resolve a user page fault*@tsk: the task_struct to use for page fault accounting, or* NULL if faults are not to be recorded
sysvipc_proc_startFile positions: pos 0 -> header, pos n -> ipc id = n - 1.* SeqFile iterator: iterator value locked ipc pointer or SEQ_TOKEN_START.
get_gendiskget_gendisk - get partitioning information for a given device*@devt: device to get partitioning information for*@partno: returned partition index* This function gets the structure containing partitioning* information for the given device @devt.
key_type_lookupFind and lock the specified key type against removal.* We return with the sem read-locked if successful. If the type wasn't* available -ENOKEY is returned instead.
selinux_xfrm_notify_policyload
iterate_supersrate_supers - call function for all active superblocks*@f: function to call*@arg: argument to pass to it* Scans the superblock list and calls given function, passing it* locked superblock and given argument.