函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:include\linux\err.h Create Date:2022-07-27 06:39:05
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:错误

函数原型:static inline long __must_check PTR_ERR(__force const void *ptr)

返回类型:long

参数:

类型参数名称
__force const void *ptr
31  返回:ptr
调用者
名称描述
err_ptr
idr_alloc_u32
bitmap_parselistmap_parselist - convert list format ASCII string to bitmap*@buf: read user string from this buffer; must be terminated* with a \0 or \n
bitmap_parselist_usermap_parselist_user()*@ubuf: pointer to user buffer containing string.*@ulen: buffer size in bytes. If string is smaller than this* then it must be terminated with a \0.*@maskp: pointer to bitmap array that will contain result.
rhashtable_insert_one
rhashtable_try_insert
rhashtable_insert_slow
test_bucket_stats
test_insert_dup
test_parman_lsort
test_nodelta_obj_get
check_stats_zero
check_stats_nodelta
test_nodelta
check_expect_stats
test_delta_action_item
test_delta
check_expect_hints_stats
test_hints_case
kunit_ptr_not_err_assert_format
textsearch_preparextsearch_prepare - Prepare a search*@algo: name of search algorithm*@pattern: pattern data*@len: length of pattern*@gfp_mask: allocation mask*@flags: search flags* Looks up the search algorithm module and creates a new textsearch
err_inject_init
netdev_err_inject_init
err_inject_init
err_inject_init
ddebug_proc_write
digsig_verify_rsaRSA公钥签名验证
digsig_verifydigsig_verify() - digital signature verification with public key*@keyring: keyring to search key in*@sig: digital signature*@siglen: length of the signature*@data: data*@datalen: length of the data* Returns 0 on success, -EINVAL otherwise
digsig_init
objagg_obj_parent_assign
objagg_obj_root_create
objagg_obj_init_with_hints
objagg_opt_simple_greedy_fillup_hints
ptrace_write_dr7Handle ptrace writes to debug register 7.
ptrace_set_breakpoint_addr
microcode_init
rdtgroup_add_file
rdtgroup_mkdir_info_resdir
rdtgroup_create_info_dir
mongroup_create_dir
mon_addfile
mkdir_mondata_subdir
mkdir_rdt_prepare
rdtgroup_setup_root
pseudo_lock_measure_cyclespseudo_lock_measure_cycles - Trigger latency measure to pseudo-locked region* The measurement of latency to access a pseudo-locked region should be* done from a cpu that is associated with that pseudo-locked region
rdtgroup_pseudo_lock_createdtgroup_pseudo_lock_create - Create a pseudo-locked region*@rdtgrp: resource group to which pseudo-lock region belongs* Called when a resource group in the pseudo-locksetup mode receives a* valid schemata that should be pseudo-locked
rdt_pseudo_lock_init
msr_init
cpuid_init
apm_initJust start the APM thread. We do NOT want to do APM BIOS* calls from anything but the APM thread, if for no other reason* than the fact that we don't trust the APM BIOS. This way,* most common APM BIOS problems that lead to protection errors
copy_process创建进程
_do_fork分裂进程
kernel_waitid
__do_proc_dointvec
__do_proc_doulongvec_minmax
proc_do_large_bitmapproc_do_large_bitmap - read/write from/to a large bitmap*@table: the sysctl table*@write: %TRUE if this is a write to the sysctl file*@buffer: the user buffer*@lenp: the size of the user buffer*@ppos: file position* The bitmap is stored at table->data and
SYSCALL_DEFINE4sys_pidfd_send_signal - Signal a process through a pidfd*@pidfd: file descriptor of the process*@sig: signal to send*@info: signal info*@flags: future flags* The syscall currently only signals via PIDTYPE_PID which covers* kill(,
fork_usermode_blobrk_usermode_blob - fork a blob of bytes as a usermode process*@data: a blob of bytes that can be do_execv-ed as a file*@len: length of the blob*@info: information about usermode process (shouldn't be NULL)* If info->cmdline is set it will be used as
create_new_namespacesCreate new nsproxy and all of its the associated namespaces.* Return the newly created nsproxy. Do not attach this to the task,* leave it to the caller to do proper locking and attach it to task.
copy_namespaces复制名称空间
unshare_nsproxy_namespacesCalled from unshare. Unshare all the namespaces part of nsproxy.* On success, returns the new nsproxy.
SYSCALL_DEFINE2
__smpboot_create_thread
sugov_kthread_create
psi_write
snapshot_write_nextsnapshot_write_next - Get the address to store the next image page.*@handle: Snapshot handle structure to guide the writing.* On the first call, @handle should point to a zeroed snapshot_handle* structure
swsusp_checkswsusp_check - Check for swsusp signature in the resume device
pm_wake_lock
pm_wake_unlock
setup_irq_thread
irq_map_generic_chipq_map_generic_chip - Map a generic chip for an irq domain
rcutorture_booster_init
kcmp_epoll_target
resolve_symbol_wait
simplify_symbolsChange all symbols so that st_value encodes the pointer directly.
load_moduleAllocate and load the module: note that size of section 0 is alwayszero, and we rely on this for optional sections.
acct_on
SYSCALL_DEFINE1sys_acct - enable/disable process accounting*@name: file name for accounting records or NULL to shutdown accounting* Returns 0 for success or negative errno values for failure.* sys_acct() is the only system call needed to implement process* accounting
kimage_file_prepare_segmentsIn file mode list of segments is prepared by kernel. Copy relevant* data from user space, do error checking, prepare segment list
kexec_calculate_store_digests
cgroup_setup_root
cgroup_do_get_tree
cgroup_apply_control_enablegroup_apply_control_enable - enable or show csses according to control*@cgrp: root of the target subtree* Walk @cgrp's subtree and create new csses or make the existing ones* visible. A css is created invisible if it's being implicitly enabled
cgroup_add_file
cgroup_createThe returned cgroup is fully initialized including its control mask, but* it isn't associated with its kernfs_node and doesn't have the control* mask applied.
cgroup_mkdir
rdmacg_try_chargedmacg_try_charge - hierarchically try to charge the rdma resource*@rdmacg: pointer to rdma cgroup which will own this resource*@device: pointer to rdmacg device*@index: index of the resource to charge in cgroup (resource pool)
rdmacg_resource_set_max
map_write
audit_receive_msg
audit_initInitialize audit support at boot time.
audit_data_to_entryTranslate struct audit_rule_data to kernel's rule representation.
audit_rule_changeaudit_rule_change - apply all rules to the specified message type*@type: audit message type*@seq: netlink audit message sequence (serial) number*@data: payload data*@datasz: size of payload data
audit_list_rules_sendaudit_list_rules_send - list the audit rules*@request_skb: skb of request we are replying to (used to target the reply)*@seq: netlink audit message sequence (serial) number
update_lsm_rule
audit_to_watchTranslate a watch string to kernel representation.
audit_get_ndGet path information necessary for adding watches.
audit_add_watchFind a matching watch entry, or add this one.* Caller must hold audit_filter_mutex.
audit_dupe_exe
audit_add_tree_rulealled with audit_filter_mutex
audit_tag_tree
kcov_ioctl_locked
kcov_ioctl
register_kprobe
__unregister_kprobe_topUnregister a kprobe without a scheduler synchronization.
disable_kprobeDisable one kprobe
fei_debugfs_init
hardlockup_detector_event_create
tracepoint_add_funcAdd the probe function to a tracepoint.
tracepoint_remove_funcRemove a probe function from a tracepoint.* Note: only waiting an RCU period after setting elem->call to the empty* function insures that the original callback is not used anymore. This insured* by preempt_disable around the call site.
rb_reserve_next_event
ring_buffer_benchmark_init
tracing_open
tracing_log_errracing_log_err - write an error to the tracing error log*@tr: The associated trace array for the error (NULL for top level array)*@loc: A string describing where the error occurred*@cmd: The tracing command that caused the error*@errs: The array of
tracing_buffers_read
tracing_buffers_splice_read
event_filter_write
subsystem_filter_write
process_preds
event_trigger_regex_write
event_inject_write
register_synth_event
__create_synth_event
parse_atom
parse_unary
parse_expr
create_field_var_histreate_field_var_hist - Automatically create a histogram and var for a field*@target_hist_data: The target hist trigger*@subsys_name: Optional subsystem name*@event_name: Optional event name*@field_name: The name of the field (and the resulting variable)*
create_field_var
track_data_create
action_create
__create_val_field
create_key_field
parse_actions
create_hist_data
event_hist_trigger_func
trace_events_hist_init
____bpf_perf_event_output_raw_tp
____bpf_get_stackid_raw_tp
____bpf_get_stack_raw_tp
trace_kprobe_create
trace_uprobe_create
trace_benchmark_regWhen the benchmark tracepoint is enabled, it calls this* function and the thread that calls the tracepoint is created.
map_createalled via syscall
map_lookup_elem
map_update_elem
map_delete_elem
map_get_next_key
map_lookup_and_delete_elem
map_freeze
bpf_prog_load
bpf_raw_tracepoint_open
bpf_prog_attach
bpf_prog_test_run
bpf_prog_get_fd_by_id
bpf_map_get_fd_by_id
check_btf_info
replace_map_fd_with_map_ptrlook for pseudo eBPF instructions that access map FDs and* replace them with actual map pointers
bpf_patch_insn_data
bpf_check
bpf_mkdir
bpf_mkobj_ops
bpf_symlink
bpf_obj_do_pin
bpf_obj_pin_user
bpf_obj_get_user
htab_map_update_elemCalled from syscall or from eBPF program
__htab_percpu_map_update_elem
bpf_fd_htab_map_update_elemly called from syscall
bpf_fd_array_map_update_elemly called from syscall
btf_new_fd
btf_get_fd_by_id
__dev_map_update_elem
__dev_map_hash_update_elem
xsk_map_update_elem
bpf_prog_offload_info_fill
bpf_map_offload_info_fill
cgroup_bpf_prog_attach
cgroup_bpf_prog_detach
cgroup_bpf_prog_query
perf_event_set_filter
perf_event_allocAllocate and initialize an event structure
perf_event_create_kernel_counterperf_event_create_kernel_counter*@attr: attributes of the counter to create*@cpu: cpu in which the counter is bound*@task: task to profile (NULL for percpu)
inherit_groupInherits an event group.* This will quietly suppress orphaned events; !inherit_event() is not an error.* This matches with perf_event_release_kernel() removing all child events.* Returns:* - 0 on success* - <0 on error
register_wide_hw_breakpoint a set of per_cpu pointers to perf events
__copy_insn
register_for_each_vma
__uprobe_register__uprobe_register - register a probe*@inode: the file in which the probe has to be placed
xol_add_vmaSlot allocation for XOL
_torture_create_kthreadCreate a generic torture kthread that is immediately runnable. If you* need the kthread to be stopped so that you can do something to it before* it starts, you will need to open-code your own.
kswapd_runThis kswapd start function will be called by init and node-hot-add.* On node-hot-add, kswapd will moved to proper cpus if cpus are hot-added.
shmem_zero_setupshmem_zero_setup - setup a shared anonymous mapping*@vma: the vma to be mmapped is prepared by do_mmap_pgoff
bdi_class_init
bdi_register_va
kmem_cache_create_usercopykmem_cache_create_usercopy - Create a cache with a region suitable* for copying to userspace*@name: A string which is used in /proc/slabinfo to identify this cache.*@size: The size of objects to be created in this cache.
__get_user_pages__get_user_pages() - pin user pages in memory*@tsk: task_struct of target task*@mm: mm_struct of target mm*@start: starting user address*@nr_pages: number of pages from start to pin*@gup_flags: flags modifying pin behaviour
ksys_mmap_pgoff
mremap_to
SYSCALL_DEFINE5Expand (or shrink) an existing mapping, potentially moving it at the* same time (controlled by the MREMAP_MAYMOVE flag and available VM space)* MREMAP_FIXED option added 5-Dec-1999 by Benjamin LaHaise* This option implies MREMAP_MAYMOVE.
process_vm_rw_coreprocess_vm_rw_core - core of reading/writing pages from task specified*@pid: PID of process to read/write from/to*@iter: where to copy to/from locally*@rvec: iovec array specifying where to copy to/from in the other process*@riovcnt: size of rvec
numa_zonelist_order_handlersysctl handler for numa_zonelist_order
SYSCALL_DEFINE1
SYSCALL_DEFINE2
zswap_cpu_comp_prepare
hugetlb_cowHugetlb_cow() should be called with page lock of the original hugepage held.* Called with hugetlb_instantiation_mutex held and pte_page locked so we* cannot race with other handlers or page migration.
hugetlb_no_page
vma_replace_policyApply policy to a single VMA* This must be called with the mmap_sem held for writing.
do_set_mempolicySet the process memory policy
do_mbind
vma_dup_policy
sparse_add_sectionsparse_add_section - add a memory section, or populate an existing one*@nid: The node to add section on*@start_pfn: start pfn of the memory range*@nr_pages: number of pfns to add in the section*@altmap: device page map* This is only intended for hotplug
stable_tree_searchstable_tree_search - search for page inside the stable tree* This function checks if there is a page inside the stable tree* with identical content to the page that we are scanning right now
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
ksm_init
__add_memoryquires device_hotplug_lock, see add_memory_resource()
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.
start_stop_khugepaged
memcg_write_event_controlDO NOT USE IN NEW FILES.* Parse input and register new cgroup event handler.* Input must be in format ' '.* Interpretation of args is defined by control file implementation.
z3fold_mount
ipcctl_obtain_checkpcctl_obtain_check - retrieve an ipc object and check permissions*@ns: ipc namespace*@ids: the table of ids where to look for the ipc*@id: the id of the ipc to retrieve*@cmd: the cmd to check*@perm: the permission to set*@extra_perm: one extra permission
msgctl_downThis function handles some msgctl commands which require the rwsem* to be held in write mode.* NOTE: no locks must be held, the rwsem is taken inside this function.
msgctl_stat
do_msgsnd
do_msgrcv
semctl_stat
semctl_setval
semctl_main
semctl_downThis function handles some semctl commands which require the rwsem* to be held in write mode.* NOTE: no locks must be held, the rwsem is taken inside this function.
do_semtimedop
__shm_open
newsegwseg - Create a new shared memory segment*@ns: namespace*@params: ptr to the structure that contains key, size and shmflg* Called with shm_ids.rwsem held as a writer.
shmctl_downThis function handles some shmctl commands which require the rwsem* to be held in write mode.* NOTE: no locks must be held, the rwsem is taken inside this function.
shmctl_stat
shmctl_do_lock
do_shmatFix shmaddr, allocate descriptor, map shm, add attach descriptor to lists.* NOTE! Despite the name, this is NOT a direct system call entrypoint. The* "raddr" thing points to kernel space, and there has to be a wrapper around* this.
mqueue_fill_super
mqueue_create_attr
do_mq_open
SYSCALL_DEFINE1
do_mq_timedsend
do_mq_notifyNotes: the case when user wants us to deregister (with NULL as pointer)* and he isn't currently owner of notification, will be silently discarded.* It isn't explicitly defined in the POSIX.
mq_init_ns
__blk_rq_map_user_iov
blk_rq_map_kernlk_rq_map_kern - map kernel data to a request, for passthrough requests*@q: request queue where request should be inserted*@rq: request to fill*@kbuf: the kernel buffer*@len: length of user data*@gfp_mask: memory allocation flags* Description:
blk_add_partition
blk_add_partitions
sg_io
sg_scsi_ioctlsg_scsi_ioctl -- handle deprecated SCSI_IOCTL_SEND_COMMAND ioctl*@q: request queue to send scsi commands down*@disk: gendisk to operate on (option)*@mode: mode used to open the file through which the ioctl has been* submitted*@sic: userspace structure
__blk_send_genericSend basic block requests
bsg_sg_io
bsg_open
bsg_register_queue
bsg_init
bsg_transport_fill_hdr
bsg_setup_queuesg_setup_queue - Create and add the bsg hooks so we can receive requests*@dev: device to attach bsg device to*@name: device to give bsg device*@job_fn: bsg job handler*@timeout: timeout handler function pointer*@dd_job_size: size of LLD data needed for
blkg_conf_preplkg_conf_prep - parse and prepare for per-blkg config update*@blkcg: target block cgroup*@pol: target policy*@input: input string*@ctx: blkg_conf_ctx to be filled* Parse per-blkg config update from @input and initialize @ctx with the* result
blkcg_init_queuelkcg_init_queue - initialize blkcg part of request queue*@q: request_queue to initialize* Called from blk_alloc_queue_node(). Responsible for initializing blkcg* part of new request_queue @q.* RETURNS:* 0 on success, -errno on failure.
ioc_qos_write
ioc_cost_model_write
kyber_init_sched
bio_integrity_clone_integrity_clone - Callback for cloning bios with integrity metadata*@bio: New bio*@bio_src: Original bio*@gfp_mask: Memory allocation mask* Description: Called to allocate a bip when cloning a bio
sed_ioctl
keyring_restrictkeyring_restrict - Look up and apply a restriction to a keyring*@keyring_ref: The keyring to be restricted*@type: The key type that will provide the restriction checker.*@restriction: The restriction options to apply to the keyring
keyring_detect_cycleSee if a cycle will will be created by inserting acyclic tree B in acyclic* tree A at the topmost level (ie: as a direct child of A).* Since we are adding B to A at the top level, checking for cycles should just
__key_link_beginPreallocate memory so that a key can be linked into to a keyring.
__key_unlink_beginBegin the process of unlinking a key from a keyring.
keyring_clearkeyring_clear - Clear a keyring*@keyring: The keyring to clear.* Clear the contents of the specified keyring.* Returns 0 if successful or -ENOTDIR if the keyring isn't a keyring.
SYSCALL_DEFINE5Extract the description of a new key from userspace and either add it as a* new key to the specified keyring or update a matching key in that keyring.* If the description is NULL or an empty string, the key type is asked to* generate one from the payload.
SYSCALL_DEFINE4Search the process keyrings and keyring trees linked from those for a* matching key. Keyrings must have appropriate Search permission to be* searched.* If a key is found, it will be attached to the destination keyring if there's
keyctl_get_keyring_IDGet the ID of the specified process keyring.* The requested keyring must have search permission to be found.* If successful, the ID of the requested keyring will be returned.
keyctl_join_session_keyringJoin a (named) session keyring.* Create and join an anonymous session keyring or join a named session* keyring, creating it if necessary. A named session keyring must have Search* permission for it to be joined. Session keyrings without this permit will
keyctl_update_keyUpdate a key's data payload from the given data.* The key must grant the caller Write permission and the key type must support* updating for this to work. A negative key can be positively instantiated* with this call.* If successful, 0 will be returned
keyctl_revoke_keyRevoke a key.* The key must be grant the caller Write or Setattr permission for this to* work. The key type should give up its quota claim when revoked. The key* and any links to the key will be automatically garbage collected after a
keyctl_invalidate_keyInvalidate a key.* The key must be grant the caller Invalidate permission for this to work.* The key and any links to the key will be automatically garbage collected* immediately.* Keys with KEY_FLAG_KEEP set should not be invalidated.
keyctl_keyring_clearClear the specified keyring, creating an empty process keyring if one of the* special keyring IDs is used.* The keyring must grant the caller Write permission and not have* KEY_FLAG_KEEP set for this to work. If successful, 0 will be returned.
keyctl_keyring_linkCreate a link from a keyring to a key if there's no matching key in the* keyring, otherwise replace the link to the matching key with a link to the* new key.* The key must grant the caller Link permission and the the keyring must grant
keyctl_keyring_unlinkUnlink a key from a keyring.* The keyring must grant the caller Write permission for this to work; the key* itself need not grant the caller anything. If the last link to a key is* removed then that key will be scheduled for destruction.
keyctl_keyring_moveMove a link to a key from one keyring to another, displacing any matching* key from the destination keyring.* The key must grant the caller Link permission and both keyrings must grant* the caller Write permission
keyctl_describe_keyReturn a description of a key to userspace
keyctl_keyring_searchSearch the specified keyring and any keyrings it links to for a matching* key
keyctl_chown_keyChange the ownership of a key* The key must grant the caller Setattr permission for this to work, though* the key need not be fully instantiated yet. For the UID to be changed, or* for the GID to be changed to a group the caller is not a member of, the
keyctl_setperm_keyChange the permission mask on a key.* The key must grant the caller Setattr permission for this to work, though* the key need not be fully instantiated yet. If the caller does not have
get_instantiation_keyringGet the destination keyring for instantiation and check that the caller has* Write permission on it.
keyctl_set_timeoutSet or clear the timeout on a key.* Either the key must grant the caller Setattr permission or else the caller* must hold an instantiation authorisation token for the key.* The timeout is either 0 to clear the timeout, or a number of seconds from
keyctl_assume_authorityAssume (or clear) the authority to instantiate the specified key
keyctl_get_securityGet a key's the LSM security label.* The key must grant the caller View permission for this to work.* If there's a buffer, then up to buflen bytes of data will be placed into it.* If successful, the amount of information available will be returned,
keyctl_session_to_parentAttempt to install the calling process's session keyring on the process's* parent process.* The keyring must exist and must grant the caller LINK permission, and the* parent process must be single-threaded and must have the same effective
keyctl_restrict_keyringApply a restriction to a given keyring.* The caller must have Setattr permission to change keyring restrictions.* The requested type name may be a NULL pointer to reject all attempts* to link to the keyring. In this case, _restriction must also be NULL.
look_up_user_keyringsLook up the user and user session keyrings for the current process's UID,* creating them if they don't exist.
install_thread_keyring_to_credInstall a thread keyring to the given credentials struct if it didn't have* one already. This is allowed to overrun the quota.* Return: 0 if a thread keyring is now present; -errno on failure.
install_process_keyring_to_credInstall a process keyring to the given credentials struct if it didn't have* one already. This is allowed to overrun the quota.* Return: 0 if a process keyring is now present; -errno on failure.
install_session_keyring_to_credInstall the given keyring as the session keyring of the given credentials* struct, replacing the existing one if any. If the given keyring is NULL,* then install a new anonymous session keyring.*@cred can not be in use by any task yet.
search_cred_keyrings_rcuSearch the process keyrings attached to the supplied cred for the first* matching key under RCU conditions (the caller must be holding the RCU read* lock)
join_session_keyringJoin the named keyring as the session keyring if possible else attempt to* create a new one of that name and join that
call_sbin_request_keyRequest userspace finish the construction of a key* - execute "/sbin/request-key "
construct_keyCall out to userspace for key construction.* Program failure is ignored in favour of key status.
construct_alloc_keyAllocate a new key in under-construction state and attempt to link it in to* the requested keyring.* May return a key that's already under construction instead if there was a* race between two thread calling request_key().
request_key_and_linkquest_key_and_link - Request a key and cache it in a keyring.*@type: The type of key we want.*@description: The searchable description of the key.*@domain_tag: The domain in which the key operates.
request_key_rcuquest_key_rcu - Request key from RCU-read-locked context*@type: The type of key we want.*@description: The name of the key we want.*@domain_tag: The domain in which the key operates.* Request a key from a context that we may not sleep in (such as RCU-mode
request_key_auth_newCreate an authorisation token for /sbin/request-key or whoever to gain* access to the caller's security data.
key_create_persistent_registerCreate the persistent keyring register for the current user namespace.* Called with the namespace's sem locked for writing.
key_get_persistentGet the persistent keyring for a specific UID and link it to the nominated* keyring.
keyctl_get_persistentGet the persistent keyring for a specific UID and link it to the nominated* keyring.
kdf_alloc
__keyctl_dh_compute
keyctl_pkey_params_getInterpret parameters. Callers must always call the free function* on params, even if an error is returned.
keyctl_pkey_e_d_sEncrypt/decrypt/sign* Encrypt data, decrypt data or sign data using a public key
keyctl_pkey_verifyVerify a signature
big_key_preparsePreparse a big key
big_key_readad the key data* - the key's semaphore is read-locked
big_key_initRegister key type
TSS_sha1
TSS_rawhmac
TSS_authhmacalculate authorization info fields to send to TPM
TSS_checkhmac1verify the AUTH1_COMMAND (Seal) result from TPM
TSS_checkhmac2verify the AUTH2_COMMAND (unseal) result from TPM
trusted_shash_alloc
aes_get_sizes
calc_hmac
init_skcipher_req
request_master_key
derived_key_encryptBefore returning data to userspace, encrypt decrypted data.
derived_key_decrypt
encrypted_key_decrypt
encrypted_instantiaterypted_instantiate - instantiate an encrypted key* Decrypt an existing encrypted datablob or create a new encrypted key* based on a kernel random number.* On success, return 0. Otherwise return errno.
encrypted_updaterypted_update - update the master key description* Change the master key description for an existing encrypted key.* The next read will return an encrypted datablob using the new* master key description.* On success, return 0. Otherwise return errno.
encrypted_readrypted_read - format and copy the encrypted data to userspace* The resulting datablob format is:* * On success, return to userspace the encrypted key datablob size.
init_encrypted
selinux_genfs_get_sid
selinux_inode_follow_link
selinux_inode_permission
sel_write_checkreqprot
sel_write_validatetrans
selinux_transaction_write
sel_write_bool
sel_commit_bools_write
sel_write_avc_cache_threshold
sel_make_class_dir_entries
sel_make_classes
sel_fill_super
init_sel_fs
smack_set_mnt_optssmack_set_mnt_opts - set Smack specific mount options*@sb: the file system superblock*@mnt_opts: Smack mount options*@kern_flags: mount option from kernel space or user space*@set_kern_flags: where to store converted mount opts* Returns 0 on success, an
smack_inode_setxattrsmack_inode_setxattr - Smack check for setting xattrs*@dentry: the object*@name: name of the attribute*@value: value of the attribute*@size: size of the value*@flags: unused* This protects the Smack attribute explicitly
smack_inode_setsecuritysmack_inode_setsecurity - set smack xattrs*@inode: the object*@name: attribute name*@value: attribute value*@size: size of the attribute*@flags: unused* Sets the named attribute in the appropriate blob* Returns 0 on success, or an error code
smack_setprocattrsmack_setprocattr - Smack process attribute setting*@name: the name of the attribute in /proc/
smack_audit_rule_initsmack_audit_rule_init - Initialize a smack audit rule*@field: audit rule fields given from user-space (audit.h)*@op: required testing operator (=, !=, >, <, ...)*@rulestr: smack label to be audited*@vrule: pointer to save our own audit rule representation
smk_fill_rulesmk_fill_rule - Fill Smack rule from strings*@subject: subject label string*@object: object label string*@access1: access string*@access2: string with permissions to be removed*@rule: Smack rule*@import: if non-zero, import labels*@len: label length limit
smk_write_rules_listsmk_write_rules_list - write() for any /smack rule file*@file: file pointer, not actually used*@buf: where to get the data from*@count: bytes sent*@ppos: where to start - must be 0*@rule_list: the list of rules to write to*@rule_lock: lock for the rule
smk_set_cipsosmk_set_cipso - do the work for write() for cipso and cipso2*@file: file pointer, not actually used*@buf: where to get the data from*@count: bytes sent*@ppos: where to start*@format: /smack/cipso or /smack/cipso2
smk_write_net4addrsmk_write_net4addr - write() for /smack/netlabel*@file: file pointer, not actually used*@buf: where to get the data from*@count: bytes sent*@ppos: where to start* Accepts only one net4addr per write call
smk_write_net6addrsmk_write_net6addr - write() for /smack/netlabel*@file: file pointer, not actually used*@buf: where to get the data from*@count: bytes sent*@ppos: where to start* Accepts only one net6addr per write call
smk_write_ambientsmk_write_ambient - write() for /smack/ambient*@file: file pointer, not actually used*@buf: where to get the data from*@count: bytes sent*@ppos: where to start* Returns number of bytes written or error code, as appropriate
smk_parse_label_listsmk_parse_label_list - parse list of Smack labels, separated by spaces*@data: the string to parse*@private: destination list* Returns zero on success or error code, as appropriate
smk_write_onlycapsmk_write_onlycap - write() for smackfs/onlycap*@file: file pointer, not actually used*@buf: where to get the data from*@count: bytes sent*@ppos: where to start* Returns number of bytes written or error code, as appropriate
smk_user_accesssmk_user_access - handle access check transaction*@file: file pointer*@buf: data from user space*@count: bytes sent*@ppos: where to start - must be 0
smk_write_revoke_subjsmk_write_revoke_subj - write() for /smack/revoke-subject*@file: file pointer*@buf: data from user space*@count: bytes sent*@ppos: where to start - must be 0
smk_write_syslogsmk_write_syslog - write() for smackfs/syslog*@file: file pointer, not actually used*@buf: where to get the data from*@count: bytes sent*@ppos: where to start* Returns number of bytes written or error code, as appropriate
smk_write_relabel_selfsmk_write_relabel_self - write() for /smack/relabel-self*@file: file pointer, not actually used*@buf: where to get the data from*@count: bytes sent*@ppos: where to start - must be 0
init_smk_fs_smk_fs - get the smackfs superblock* register the smackfs* Do not register smackfs if Smack wasn't enabled* on boot
tomoyo_write_selfmoyo_write_self - write() for /sys/kernel/security/tomoyo/self_domain interface
aafs_createaafs_create - create a dentry in the apparmorfs filesystem*@name: name of dentry to create*@mode: permissions the file should have*@parent: parent directory for this dentry*@data: data to store on inode
policy_update
profile_remove.remove file hook fn to remove loaded policy
query_dataquery_data - queries a policy and writes its data to buf*@buf: the resulting data is stored here (NOT NULL)*@buf_len: size of buf*@query: query string used to retrieve data*@query_len: size of query including second NUL byte
query_labelquery_label - queries a label and writes permissions to buf*@buf: the resulting permissions string is stored here (NOT NULL)*@buf_len: size of buf*@query: binary query string to match against the dfa*@query_len: size of query*@view_only: only compute for
aa_write_accessaa_write_access - generic permissions and data query*@file: pointer to open apparmorfs/access file*@ubuf: user buffer containing the complete query string (NOT NULL)*@count: size of ubuf*@ppos: position in the file (MUST BE ZERO)* Allows for one
rawdata_open
__aa_fs_create_rawdata
__aafs_profile_mkdirRequires: @profile->ns->lock held
ns_mkdir_op
__aafs_ns_mkdir_entriesassumes cleanup in caller
__aafs_ns_mkdirRequires: @ns->lock held
entry_create_filery_create_file - create a file entry in the apparmor securityfs*@fs_file: aa_sfs_entry to build an entry for (NOT NULL)*@parent: the parent dentry in the securityfs* Use entry_remove_file to remove entries created with this fn.
entry_create_dirry_create_dir - recursively create a directory entry in the securityfs*@fs_dir: aa_sfs_entry (and all child entries) to build (NOT NULL)*@parent: the parent dentry in the securityfs* Use entry_remove_dir to remove entries created with this fn.
aa_mk_null_file
aa_create_aafsaa_create_aafs - create the apparmor security filesystem* dentries created here are released by aa_destroy_aafs* Returns: error on failure
aa_audit_rule_init
aa_setup_dfa_engine
d_namespace_pathd_namespace_path - lookup a name associated with a given path*@path: path to lookup (NOT NULL)*@buf: buffer to store path to (NOT NULL)*@name: Returns - pointer for start of path name with in @buf (NOT NULL)*@flags: flags controlling path
apparmor_bprm_set_credsapparmor_bprm_set_creds - set the new creds on the bprm struct*@bprm: binprm for the exec (NOT NULL)* Returns: %0 or error on failure* TODO: once the other paths are done see if we can't refactor into a fn
aa_change_hataa_change_hat - change hat to/from subprofile*@hats: vector of hat names to try changing into (MAYBE NULL if @count == 0)*@count: number of hat names in @hats*@token: magic value to validate the hat change*@flags: flags affecting behavior of the change
aa_change_profileaa_change_profile - perform a one-way profile transition*@fqname: name of profile may include namespace (NOT NULL)*@onexec: whether this transition is to take place immediately or at exec*@flags: flags affecting change behavior
aa_replace_profilesaa_replace_profiles - replace profile(s) on the profile list*@policy_ns: namespace load is occurring on*@label: label that is attempting to load/replace policy*@mask: permission mask*@udata: serialized data stream (NOT NULL)* unpack and replace a profile
unpack_profilepack_profile - unpack a serialized profile*@e: serialized data extent information (NOT NULL)* NOTE: unpack profile sets audit struct if there is a failure
aa_unpackaa_unpack - unpack packed binary profile(s) data loaded from user space*@udata: user data copied to kmem (NOT NULL)*@lh: list to place unpacked profiles in a aa_repl_ws*@ns: Returns namespace profile is in if specified else NULL (NOT NULL)* Unpack user
aa_setprocattr_changehataa_setprocattr_chagnehat - handle procattr interface to change_hat*@args: args received from writing to /proc//attr/current (NOT NULL)*@size: size of the args*@flags: set of flags governing behavior* Returns: %0 or error code if change_hat fails
apparmor_socket_getpeersec_streamapparmor_socket_getpeersec_stream - get security context of peer* Note: for tcp only valid if using ipsec or cipso on lan
apparmor_secctx_to_secid
match_mnt_path_strmatch_mnt_path_str - handle path matching for mount*@profile: the confining profile*@mntpath: for the mntpnt (NOT NULL)*@buffer: buffer to be used to lookup mntpath*@devnme: string for the devname/src_name (MAY BE NULL OR ERRPTR)*@type: string for the dev
aa_pivotroot
init_profile_hash
handle_policy_update
safesetid_init_securityfs
lockdown_write
integrity_fs_init
integrity_keyring_from_id
integrity_digsig_verify
integrity_modsig_verify
__integrity_init_keyring
integrity_add_key
request_asymmetric_keyRequest an asymmetric key.
asymmetric_verify
ima_write_policy
ima_init_crypto
ima_alloc_tfm
ima_alloc_atfm
ima_calc_file_ahash
ima_calc_file_shash
ima_calc_field_array_hash
calc_buffer_ahash
calc_buffer_shash
ima_calc_boot_aggregate
ima_read_modsigma_read_modsig - Read modsig from buf.* Return: 0 on success, error code otherwise.
init_desc
evm_calc_hmac_or_hashCalculate the HMAC value across the set of protected security xattrs.* Instead of retrieving the requested xattr, for performance, calculate* the hmac using the requested xattr value. Don't alloc/free memory for
evm_init_hmac
do_sys_open
vfs_dedupe_file_range_compareCompare extents of two files to see if they are the same.* Caller must have locked both inodes to prevent write races.
vfs_get_supervfs_get_super - Get a superblock with a search key set in s_fs_info.*@fc: The filesystem context holding the parameters*@keying: How to distinguish superblocks*@fill_super: Helper to initialise a new superblock
get_tree_bdevget_tree_bdev - Get a superblock based on a single block device*@fc: The filesystem context holding the parameters*@fill_super: Helper to initialise a new superblock
mount_bdev
reconfigure_single
register_chrdev_regiongister_chrdev_region() - register a range of device numbers*@from: the first in the desired range of device numbers; must include* the major number.*@count: the number of consecutive device numbers required*@name: the name of the device or driver.
alloc_chrdev_regionalloc_chrdev_region() - register a range of char device numbers*@dev: output parameter for first assigned number*@baseminor: first of the requested range of minor numbers*@count: the number of minor numbers required*@name: the name of the associated
__register_chrdev__register_chrdev() - create and register a cdev occupying a range of minors*@major: major device number or 0 for dynamic allocation*@baseminor: first of the requested range of minor numbers*@count: the number of minor numbers required*@name: name of this
kernel_read_file_from_path
__do_execve_filesys_execve() executes a new program.
create_pipe_files
init_pipe_fs
check_acl
follow_automountPerform an automount* - return -EISDIR to tell follow_managed() to stop and return the path we* were called with.
walk_component
link_path_walkName resolution.* This is the basic name resolution function, turning a pathname into* the final dentry. We expect 'base' to be positive and a directory.* Returns 0 and nd will have valid dentry and mnt on success.
filename_lookup
filename_mountpoint
lookup_openLook up and maybe create and open the last component
do_tmpfile
do_mknodat
do_mkdirat
do_rmdir
do_unlinkatMake sure that the actual truncation of the file will occur outside its* directory's i_mutex. Truncate can take a long time if there is a lot of* writeout happening, and we don't want to prevent access to the directory* while waiting on the I/O.
do_symlinkat
do_linkatHardlinks are often used in delicate situations. We avoid* security-related surprises by not following symlinks on the* newname. --KAB* We don't follow them on the oldname either to be compatible* with linux 2.0, and to avoid hard-linking to directories
do_renameat2
readlink_copy
vfs_readlinkvfs_readlink - copy symlink body into userspace buffer*@dentry: dentry on which to get symbolic link*@buffer: user memory pointer*@buflen: size of buffer* Does not touch atime. That's up to the caller if necessary* Does not call security hook.
ioctl_file_dedupe_range
do_umount_root
attach_recursive_mnt@source_mnt : mount tree to be attached*@nd : place the mount tree @source_mnt is attached*@parent_nd : if non-null, detach the source_mnt from its parent and* store the parent mount and mountpoint dentry
do_loopbackdo loopback mount.
SYSCALL_DEFINE3
do_remounthange filesystem flags. dir should be a physical root of filesystem.* If you've mounted a non-root directory somewhere and want to do remount* on it - tough luck.
do_move_mount
do_add_mountadd a mount into a namespace's mount tree
do_new_mount_fcCreate a new mount using a superblock configuration and request it* be added to the namespace tree.
do_new_mountreate a new mount for userspace and request it to be added into the* namespace's tree
SYSCALL_DEFINE5
SYSCALL_DEFINE3Create a kernel mount representation for a new, prepared superblock* (specified by fs_fd) and attach to an open_tree-like file descriptor.
SYSCALL_DEFINE2pivot_root Semantics:* Moves the root file system of the current process to the directory put_old,* makes new_root as the new root file system of the current process, and sets* root/cwd of all processes which had them on the current root to new_root
traverse
seq_readseq_read - ->read() method for sequential files.*@file: the file to read from*@buf: the buffer to read to*@size: the maximum number of bytes to read*@ppos: the current position in the file* Ready-made ->f_op->read()
seq_path_rootSame as seq_path, but relative to supplied root.
__vfs_setxattr
vfs_getxattr_allocvfs_getxattr_alloc - allocate memory, if necessary, before calling getxattr* Allocate memory, if not already allocated, or re-allocate correct size,* before retrieving the extended attribute.
__vfs_getxattr
__vfs_removexattr
simple_pin_fs
propagate_one
open_related_ns
legacy_get_treeGet a mountable root with the legacy mount command.
fs_lookup_params_lookup_param - Look up a path referred to by a parameter*@fc: The filesystem context to log errors through.*@param: The parameter.*@want_bdev: T if want a blockdev*@_path: The result of the lookup
SYSCALL_DEFINE2Open a filesystem by name so that it can be configured for mounting.* We are allowed to specify a container in which the filesystem will be* opened, thereby indicating which namespaces will be used (notably, which
SYSCALL_DEFINE3Pick a superblock into a context for reconfiguration.
blkdev_getlkdev_get - open a block device*@bdev: block_device to open*@mode: FMODE_* mask*@holder: exclusive holder identifier* Open @bdev with @mode. If @mode includes %FMODE_EXCL, @bdev is* open with exclusive access. Specifying %FMODE_EXCL with %NULL
do_direct_IOWalk the user pages, and the file, mapping blocks to disk and generating* a sequence of (page,offset,len,block) mappings. These mappings are injected* into submit_page_section(), which takes care of the next stage of submission
inotify_read
do_inotify_inity syscalls
create_fd
fanotify_read
fanotify_add_mark
SYSCALL_DEFINE2anotify syscalls
do_epoll_createOpen an eventpoll file descriptor.
anon_inode_getfdanon_inode_getfd - creates a new file instance by hooking it up to an* anonymous inode, and a dentry that describe the "class"* of the file*@name: [in] name of the "class" of the new file*@fops: [in] file operations for the new file*@priv: [in] private
anon_inode_init
SYSCALL_DEFINE2sys_io_setup:* Create an aio_context capable of receiving at least nr_events
COMPAT_SYSCALL_DEFINE2
__io_submit_one
io_sq_offload_start
io_eventfd_register
io_uring_mmap
io_uring_get_fdAllocate an anonymous fd, this is what constitutes the application* visible backing of an io_uring instance. The application mmaps this* fd to gain access to the SQ/CQ ring details. If UNIX sockets are enabled,
io_wq_create
fscrypt_init_hkdfCompute HKDF-Extract using the given master key as the input keying material,* and prepare an HMAC transform object keyed by the resulting pseudorandom key.* Afterwards, the keyed HMAC transform object can be used for HKDF-Expand many
search_fscrypt_keyringSearch ->s_master_keys or ->mk_users
allocate_filesystem_keyringCreate ->s_master_keys if needed. Synchronized by fscrypt_add_key_mutex.
allocate_master_key_users_keyring
add_master_key_userGive the current user a "key" in ->mk_users. This charges the user's quota* and marks the master key as added by the current user, so that it cannot be* removed by another user with the key. Either the master key's key->sem must
remove_master_key_userRemove the current user's "key" from ->mk_users.* The master key's key->sem must be held for write.* Returns 0 if removed, -ENOKEY if not found, or another -errno code.
add_new_master_keyAllocate a new fscrypt_master_key which contains the given secret, set it as* the payload of a new 'struct key' of type fscrypt, and link the 'struct key'* into the given keyring. Synchronized by fscrypt_add_key_mutex.
add_existing_master_key
add_master_key
fscrypt_verify_key_addedVerify that the current user has added a master key with the given identifier* (returns -ENOKEY if not)
do_remove_keyTry to remove an fscrypt master encryption key
fscrypt_ioctl_get_key_statusRetrieve the status of an fscrypt master encryption key
fscrypt_allocate_skcipherCreate a symmetric cipher object for the given encryption mode and key
fscrypt_set_derived_keyGiven the per-file key, set up the file's crypto transform object
setup_per_mode_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
fscrypt_get_encryption_info
derive_key_aesv1 key derivation function
fscrypt_get_direct_keyPrepare to encrypt directly using the master key in the given mode
setup_v1_file_key_directv1 policy, DIRECT_KEY: use the master key directly
fscrypt_setup_v1_file_key_via_subscribed_keyrings
build_merkle_tree_level
enable_verity
fsverity_get_hash_algsverity_get_hash_alg() - validate and prepare a hash algorithm*@inode: optional inode for logging purposes*@num: the hash algorithm number* Get the struct fsverity_hash_alg for the given hash algorithm number, and
fsverity_init_merkle_tree_paramssverity_init_merkle_tree_params() - initialize Merkle tree parameters*@params: the parameters struct to initialize*@inode: the inode for which the Merkle tree is being built*@hash_algorithm: number of hash algorithm to use*@log_blocksize: log base 2 of
ensure_verity_infoEnsure the inode has an ->i_verity_info
verify_pageVerify a single data page against the file's Merkle tree
fsverity_init_signature
__break_lease撤销所有未偿还的文件
do_fcntl_add_lease
SYSCALL_DEFINE2sys_flock: - flock() system call.*@fd: the file descriptor to lock.*@cmd: the type of lock to apply.* Apply a %FL_FLOCK style lock to an open file descriptor.* The @cmd can be one of:* - %LOCK_SH -- a shared lock.* - %LOCK_EX -- an exclusive lock.
COMPAT_SYSCALL_DEFINE5
load_em86
load_misc_binaryhe loader itself
bm_register_write/register
load_script
elf_map
load_elf_binary
load_elf_fdpic_binaryload an fdpic binary into various bits of memory
posix_acl_chmod
posix_acl_create
posix_acl_xattr_get
posix_acl_xattr_set
cn_print_exe_file
do_handle_to_path
do_handle_open
__dquot_initialize
dquot_transferWrapper for transferring ownership of an inode for uid/gid only* Called from FSXXX_setattr()
dquot_quota_on_mountThis function is used when filesystem needs to initialize quotas* during mount time.
dquot_get_dqblk
dquot_get_next_dqblk
dquot_set_dqblk
quota_quotaon
kernel_quotactlThis is the system call interface. This communicates with* the user-level programs. Currently this only supports diskquota* calls. Maybe we need to add the process quotas etc. in the future,* but we probably should use rlimits for that.
do_lookup_dcookieAnd here is where the userspace process can look up the cookie value* to retrieve the path.
PTR_ERR_OR_ZERO
rhashtable_insert_fasthashtable_insert_fast - insert object into hash table*@ht: hash table*@obj: pointer to hash head inside object*@params: hash table parameters* Will take the per bucket bitlock to protect against mutual mutations* on the same bucket
rhltable_insert_keyhltable_insert_key - insert object into hash list table*@hlt: hash list table*@key: the pointer to the key*@list: pointer to hash list head inside object*@params: hash table parameters* Will take the per bucket bitlock to protect against mutual mutations
rhashtable_lookup_insert_fasthashtable_lookup_insert_fast - lookup and insert object into hash table*@ht: hash table*@obj: pointer to hash head inside object*@params: hash table parameters* This lookup function may only be used for fixed key hash table (key_len* parameter set)
rhashtable_lookup_insert_keyhashtable_lookup_insert_key - search and insert object to hash table* with explicit key*@ht: hash table*@key: key*@obj: pointer to hash head inside object*@params: hash table parameters* Lookups may occur in parallel with hashtable mutations and resizing
idr_alloc_u32dr_alloc_u32() - Allocate an ID.*@idr: IDR handle.*@ptr: Pointer to be associated with the new ID.*@nextid: Pointer to an ID.*@max: The maximum ID to allocate (inclusive).*@gfp: Memory allocation flags.