1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2c5e725f3SJan Blunck #ifndef _LINUX_PATH_H 3c5e725f3SJan Blunck #define _LINUX_PATH_H 4c5e725f3SJan Blunck 5c5e725f3SJan Blunck struct dentry; 6c5e725f3SJan Blunck struct vfsmount; 7c5e725f3SJan Blunck 8c5e725f3SJan Blunck struct path { 9c5e725f3SJan Blunck struct vfsmount *mnt; 10c5e725f3SJan Blunck struct dentry *dentry; 113859a271SKees Cook } __randomize_layout; 12c5e725f3SJan Blunck 13dcf787f3SAl Viro extern void path_get(const struct path *); 14dcf787f3SAl Viro extern void path_put(const struct path *); 151d957f9bSJan Blunck path_equal(const struct path * path1,const struct path * path2)168df9d1a4SMiklos Szeredistatic inline int path_equal(const struct path *path1, const struct path *path2) 178df9d1a4SMiklos Szeredi { 188df9d1a4SMiklos Szeredi return path1->mnt == path2->mnt && path1->dentry == path2->dentry; 198df9d1a4SMiklos Szeredi } 208df9d1a4SMiklos Szeredi 21*ff2c570eSChristian Brauner /* 22*ff2c570eSChristian Brauner * Cleanup macro for use with __free(path_put). Avoids dereference and 23*ff2c570eSChristian Brauner * copying @path unlike DEFINE_FREE(). path_put() will handle the empty 24*ff2c570eSChristian Brauner * path correctly just ensure @path is initialized: 25*ff2c570eSChristian Brauner * 26*ff2c570eSChristian Brauner * struct path path __free(path_put) = {}; 27*ff2c570eSChristian Brauner */ 28*ff2c570eSChristian Brauner #define __free_path_put path_put 29*ff2c570eSChristian Brauner 30c5e725f3SJan Blunck #endif /* _LINUX_PATH_H */ 31