cregit-Linux how code gets into the kernel

Release 4.15 include/linux/namei.h

Directory: include/linux
/* SPDX-License-Identifier: GPL-2.0 */
#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

#define LOOKUP_DOWN		0x8000

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 Viro2360.53%150.00%
Andy 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 Viro2990.62%266.67%
Harvey 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 Viro2887.50%266.67%
Christoph 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 Viro3088.24%266.67%
Christoph 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); 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 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 Layton29100.00%1100.00%
Total29100.00%1100.00%

#endif /* _LINUX_NAMEI_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Al Viro25046.04%1843.90%
Christoph Hellwig11521.18%24.88%
Duane Griffin356.45%12.44%
Jeff Layton325.89%24.88%
Harvey Harrison224.05%12.44%
Neil Brown173.13%12.44%
Andy Whitcroft152.76%12.44%
Trond Myklebust112.03%37.32%
David Howells101.84%24.88%
Eric W. Biedermann101.84%12.44%
Nicholas Piggin81.47%12.44%
Hirofumi Ogawa40.74%12.44%
Linus Torvalds40.74%12.44%
Stephen Warren20.37%12.44%
Jan Blunck20.37%12.44%
Alexey Dobriyan20.37%12.44%
David S. Miller20.37%12.44%
Josef 'Jeff' Sipek10.18%12.44%
Greg Kroah-Hartman10.18%12.44%
Total543100.00%41100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.