函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:filldir64

函数原型:static int filldir64(struct dir_context *ctx, const char *name, int namlen, loff_t offset, u64 ino, unsigned int d_type)

返回类型:int

参数:

类型参数名称
struct dir_context *ctx
const char *name
intnamlen
loff_toffset
u64ino
unsigned intd_type
312  __userdirent
313  buf等于container_of - cast a member of a structure out to the containing structure*@ptr: the pointer to the member.*@type: the type of the container struct this is embedded in.*@member: the name of the member within the struct.(ctx, structgetdents_callback64, ctx)
315  reclen等于@a is a power of 2 value (offsetof(structlinux_dirent64, d_name) + namlen + 1, sizeof(u64))
319  error等于POSIX says that a dirent name cannot contain NULL or a '/'.* It's not 100% clear what we should really do in this case.* The filesystem is clearly corrupted, but returning a hard* error means that you now don't see any of the other names
320  如果此条件成立可能性小(为编译器优化)(error)则返回:error
322  error等于负EINVAL
323  如果reclen大于count则返回:负EINVAL
325  prev_reclen等于prev_reclen
326  如果prev_reclensignal_pending(当前进程)则返回:负EINTR
328  dirent等于current_dir
329  prev等于direntprev_reclen
330  如果非The "unsafe" user accesses aren't really "unsafe", but the naming* is a big fat warning: you have to not only do the access_ok()* checking before using them, but you have to surround them with the* user_access_begin/end() pair.则转到:efault
334  unsafe_put_user(offset, & d_off, efault_end)
335  unsafe_put_user(ino, & d_ino, efault_end)
336  unsafe_put_user(reclen, & d_reclen, efault_end)
337  unsafe_put_user(d_type, & d_type, efault_end)
338  Note the "unsafe_put_user() semantics: we goto a* label for errors.(d_name, name, namlen, efault_end)
339  user_access_end()
341  prev_reclen等于reclen
342  current_dir等于direntreclen
343  count减等于reclen
344  返回:0
346  efault_end :
347  user_access_end()
348  efault :
349  error等于负EFAULT
350  返回:负EFAULT