cregit-Linux how code gets into the kernel

Release 4.7 include/linux/namei.h

Directory: include/linux
#ifndef _LINUX_NAMEI_H

#define _LINUX_NAMEI_H

#include <linux/kernel.h>
#include <linux/path.h>
#include <linux/fcntl.h>
#include <linux/errno.h>


enum { MAX_NESTED_LINKS = 8 };


#define MAXSYMLINKS 40

/*
 * Type of the last component on LOOKUP_PARENT
 */





enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND};

/*
 * The bitmask for a lookup event:
 *  - follow links at the end
 *  - require a directory
 *  - ending slashes ok even for nonexistent files
 *  - internal "there are more path components" flag
 *  - dentry cache is untrusted; force a real lookup
 *  - suppress terminal automount
 */

#define LOOKUP_FOLLOW		0x0001

#define LOOKUP_DIRECTORY	0x0002

#define LOOKUP_AUTOMOUNT	0x0004


#define LOOKUP_PARENT		0x0010

#define LOOKUP_REVAL		0x0020

#define LOOKUP_RCU		0x0040

#define LOOKUP_NO_REVAL		0x0080

/*
 * Intent data
 */

#define LOOKUP_OPEN		0x0100

#define LOOKUP_CREATE		0x0200

#define LOOKUP_EXCL		0x0400

#define LOOKUP_RENAME_TARGET	0x0800


#define LOOKUP_JUMPED		0x1000

#define LOOKUP_ROOT		0x2000

#define LOOKUP_EMPTY		0x4000

extern int path_pts(struct path *path);

extern int user_path_at_empty(int, const char __user *, unsigned, struct path *, int *empty);


static inline int user_path_at(int dfd, const char __user *name, unsigned flags, struct path *path) { return user_path_at_empty(dfd, name, flags, path, NULL); }

Contributors

PersonTokensPropCommitsCommitProp
al viroal viro2360.53%150.00%
andy whitcroftandy whitcroft1539.47%150.00%
Total38100.00%2100.00%


static inline int user_path(const char __user *name, struct path *path) { return user_path_at_empty(AT_FDCWD, name, LOOKUP_FOLLOW, path, NULL); }

Contributors

PersonTokensPropCommitsCommitProp
al viroal viro2990.62%266.67%
harvey harrisonharvey harrison39.38%133.33%
Total32100.00%3100.00%


static inline int user_lpath(const char __user *name, struct path *path) { return user_path_at_empty(AT_FDCWD, name, 0, path, NULL); }

Contributors

PersonTokensPropCommitsCommitProp
al viroal viro2887.50%266.67%
christoph hellwigchristoph hellwig412.50%133.33%
Total32100.00%3100.00%


static inline int user_path_dir(const char __user *name, struct path *path) { return user_path_at_empty(AT_FDCWD, name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, path, NULL); }

Contributors

PersonTokensPropCommitsCommitProp
al viroal viro3088.24%266.67%
christoph hellwigchristoph hellwig411.76%133.33%
Total34100.00%3100.00%

extern int kern_path(const char *, unsigned, struct path *); extern struct dentry *kern_path_create(int, const char *, struct path *, unsigned int); extern struct dentry *user_path_create(int, const char __user *, struct path *, unsigned int); extern void done_path_create(struct path *, struct dentry *); extern struct dentry *kern_path_locked(const char *, struct path *); extern int kern_path_mountpoint(int, const char *, struct path *, unsigned int); extern struct dentry *lookup_one_len(const char *, struct dentry *, int); extern struct dentry *lookup_one_len_unlocked(const char *, struct dentry *, int); struct qstr; extern struct dentry *lookup_hash(const struct qstr *, struct dentry *); extern int follow_down_one(struct path *); extern int follow_down(struct path *); extern int follow_up(struct path *); extern struct dentry *lock_rename(struct dentry *, struct dentry *); extern void unlock_rename(struct dentry *, struct dentry *); extern void nd_jump_link(struct path *path);
static inline void nd_terminate_link(void *name, size_t len, size_t maxlen) { ((char *) name)[min(len, maxlen)] = '\0'; }

Contributors

PersonTokensPropCommitsCommitProp
duane griffinduane griffin35100.00%1100.00%
Total35100.00%1100.00%

/** * retry_estale - determine whether the caller should retry an operation * @error: the error that would currently be returned * @flags: flags being used for next lookup attempt * * Check to see if the error code was -ESTALE, and then determine whether * to retry the call based on whether "flags" already has LOOKUP_REVAL set. * * Returns true if the caller should try the operation again. */
static inline bool retry_estale(const long error, const unsigned int flags) { return error == -ESTALE && !(flags & LOOKUP_REVAL); }

Contributors

PersonTokensPropCommitsCommitProp
jeff laytonjeff layton29100.00%1100.00%
Total29100.00%1100.00%

#endif /* _LINUX_NAMEI_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
al viroal viro24644.17%1742.50%
christoph hellwigchristoph hellwig11520.65%25.00%
duane griffinduane griffin356.28%12.50%
jeff laytonjeff layton325.75%25.00%
harvey harrisonharvey harrison223.95%12.50%
miklos szeredimiklos szeredi193.41%12.50%
neil brownneil brown173.05%12.50%
andy whitcroftandy whitcroft152.69%12.50%
trond myklebusttrond myklebust111.97%37.50%
eric w. biedermaneric w. biederman101.80%12.50%
david howellsdavid howells101.80%25.00%
nick pigginnick piggin81.44%12.50%
hirofumi ogawahirofumi ogawa40.72%12.50%
linus torvaldslinus torvalds40.72%12.50%
alexey dobriyanalexey dobriyan20.36%12.50%
david s. millerdavid s. miller20.36%12.50%
jan blunckjan blunck20.36%12.50%
stephen warrenstephen warren20.36%12.50%
josef 'jeff' sipekjosef 'jeff' sipek10.18%12.50%
Total557100.00%40100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}