cregit-Linux how code gets into the kernel

Release 4.18 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 *try_lookup_one_len(const char *, struct dentry *, 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 Viro25044.64%1842.86%
Christoph Hellwig11520.54%24.76%
Duane Griffin356.25%12.38%
Jeff Layton325.71%24.76%
David Howells274.82%37.14%
Harvey Harrison223.93%12.38%
Neil Brown173.04%12.38%
Andy Whitcroft152.68%12.38%
Trond Myklebust111.96%37.14%
Eric W. Biedermann101.79%12.38%
Nicholas Piggin81.43%12.38%
Hirofumi Ogawa40.71%12.38%
Linus Torvalds40.71%12.38%
Stephen Warren20.36%12.38%
Jan Blunck20.36%12.38%
David S. Miller20.36%12.38%
Alexey Dobriyan20.36%12.38%
Josef 'Jeff' Sipek10.18%12.38%
Greg Kroah-Hartman10.18%12.38%
Total560100.00%42100.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.