at v6.11-rc1 854 B view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _LINUX_PATH_H 3#define _LINUX_PATH_H 4 5struct dentry; 6struct vfsmount; 7 8struct path { 9 struct vfsmount *mnt; 10 struct dentry *dentry; 11} __randomize_layout; 12 13extern void path_get(const struct path *); 14extern void path_put(const struct path *); 15 16static inline int path_equal(const struct path *path1, const struct path *path2) 17{ 18 return path1->mnt == path2->mnt && path1->dentry == path2->dentry; 19} 20 21static inline void path_put_init(struct path *path) 22{ 23 path_put(path); 24 *path = (struct path) { }; 25} 26 27/* 28 * Cleanup macro for use with __free(path_put). Avoids dereference and 29 * copying @path unlike DEFINE_FREE(). path_put() will handle the empty 30 * path correctly just ensure @path is initialized: 31 * 32 * struct path path __free(path_put) = {}; 33 */ 34#define __free_path_put path_put 35 36#endif /* _LINUX_PATH_H */