cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

internal.h (5909B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/* fs/ internal definitions
      3 *
      4 * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
      5 * Written by David Howells (dhowells@redhat.com)
      6 */
      7
      8struct super_block;
      9struct file_system_type;
     10struct iomap;
     11struct iomap_ops;
     12struct linux_binprm;
     13struct path;
     14struct mount;
     15struct shrink_control;
     16struct fs_context;
     17struct user_namespace;
     18struct pipe_inode_info;
     19
     20/*
     21 * block/bdev.c
     22 */
     23#ifdef CONFIG_BLOCK
     24extern void __init bdev_cache_init(void);
     25
     26void emergency_thaw_bdev(struct super_block *sb);
     27#else
     28static inline void bdev_cache_init(void)
     29{
     30}
     31static inline int emergency_thaw_bdev(struct super_block *sb)
     32{
     33	return 0;
     34}
     35#endif /* CONFIG_BLOCK */
     36
     37/*
     38 * buffer.c
     39 */
     40int __block_write_begin_int(struct folio *folio, loff_t pos, unsigned len,
     41		get_block_t *get_block, const struct iomap *iomap);
     42
     43/*
     44 * char_dev.c
     45 */
     46extern void __init chrdev_init(void);
     47
     48/*
     49 * fs_context.c
     50 */
     51extern const struct fs_context_operations legacy_fs_context_ops;
     52extern int parse_monolithic_mount_data(struct fs_context *, void *);
     53extern void vfs_clean_context(struct fs_context *fc);
     54extern int finish_clean_context(struct fs_context *fc);
     55
     56/*
     57 * namei.c
     58 */
     59extern int filename_lookup(int dfd, struct filename *name, unsigned flags,
     60			   struct path *path, struct path *root);
     61extern int vfs_path_lookup(struct dentry *, struct vfsmount *,
     62			   const char *, unsigned int, struct path *);
     63int do_rmdir(int dfd, struct filename *name);
     64int do_unlinkat(int dfd, struct filename *name);
     65int may_linkat(struct user_namespace *mnt_userns, struct path *link);
     66int do_renameat2(int olddfd, struct filename *oldname, int newdfd,
     67		 struct filename *newname, unsigned int flags);
     68int do_mkdirat(int dfd, struct filename *name, umode_t mode);
     69int do_symlinkat(struct filename *from, int newdfd, struct filename *to);
     70int do_linkat(int olddfd, struct filename *old, int newdfd,
     71			struct filename *new, int flags);
     72
     73/*
     74 * namespace.c
     75 */
     76extern struct vfsmount *lookup_mnt(const struct path *);
     77extern int finish_automount(struct vfsmount *, const struct path *);
     78
     79extern int sb_prepare_remount_readonly(struct super_block *);
     80
     81extern void __init mnt_init(void);
     82
     83extern int __mnt_want_write_file(struct file *);
     84extern void __mnt_drop_write_file(struct file *);
     85
     86extern void dissolve_on_fput(struct vfsmount *);
     87extern bool may_mount(void);
     88
     89int path_mount(const char *dev_name, struct path *path,
     90		const char *type_page, unsigned long flags, void *data_page);
     91int path_umount(struct path *path, int flags);
     92
     93/*
     94 * fs_struct.c
     95 */
     96extern void chroot_fs_refs(const struct path *, const struct path *);
     97
     98/*
     99 * file_table.c
    100 */
    101extern struct file *alloc_empty_file(int, const struct cred *);
    102extern struct file *alloc_empty_file_noaccount(int, const struct cred *);
    103
    104/*
    105 * super.c
    106 */
    107extern int reconfigure_super(struct fs_context *);
    108extern bool trylock_super(struct super_block *sb);
    109struct super_block *user_get_super(dev_t, bool excl);
    110void put_super(struct super_block *sb);
    111extern bool mount_capable(struct fs_context *);
    112
    113/*
    114 * open.c
    115 */
    116struct open_flags {
    117	int open_flag;
    118	umode_t mode;
    119	int acc_mode;
    120	int intent;
    121	int lookup_flags;
    122};
    123extern struct file *do_filp_open(int dfd, struct filename *pathname,
    124		const struct open_flags *op);
    125extern struct file *do_file_open_root(const struct path *,
    126		const char *, const struct open_flags *);
    127extern struct open_how build_open_how(int flags, umode_t mode);
    128extern int build_open_flags(const struct open_how *how, struct open_flags *op);
    129extern struct file *__close_fd_get_file(unsigned int fd);
    130
    131long do_sys_ftruncate(unsigned int fd, loff_t length, int small);
    132int chmod_common(const struct path *path, umode_t mode);
    133int do_fchownat(int dfd, const char __user *filename, uid_t user, gid_t group,
    134		int flag);
    135int chown_common(const struct path *path, uid_t user, gid_t group);
    136extern int vfs_open(const struct path *, struct file *);
    137
    138/*
    139 * inode.c
    140 */
    141extern long prune_icache_sb(struct super_block *sb, struct shrink_control *sc);
    142extern int dentry_needs_remove_privs(struct dentry *dentry);
    143
    144/*
    145 * fs-writeback.c
    146 */
    147extern long get_nr_dirty_inodes(void);
    148extern int invalidate_inodes(struct super_block *, bool);
    149
    150/*
    151 * dcache.c
    152 */
    153extern int d_set_mounted(struct dentry *dentry);
    154extern long prune_dcache_sb(struct super_block *sb, struct shrink_control *sc);
    155extern struct dentry *d_alloc_cursor(struct dentry *);
    156extern struct dentry * d_alloc_pseudo(struct super_block *, const struct qstr *);
    157extern char *simple_dname(struct dentry *, char *, int);
    158extern void dput_to_list(struct dentry *, struct list_head *);
    159extern void shrink_dentry_list(struct list_head *);
    160
    161/*
    162 * pipe.c
    163 */
    164extern const struct file_operations pipefifo_fops;
    165
    166/*
    167 * fs_pin.c
    168 */
    169extern void group_pin_kill(struct hlist_head *p);
    170extern void mnt_pin_kill(struct mount *m);
    171
    172/*
    173 * fs/nsfs.c
    174 */
    175extern const struct dentry_operations ns_dentry_operations;
    176
    177/* direct-io.c: */
    178int sb_init_dio_done_wq(struct super_block *sb);
    179
    180/*
    181 * fs/stat.c:
    182 */
    183
    184int getname_statx_lookup_flags(int flags);
    185int do_statx(int dfd, struct filename *filename, unsigned int flags,
    186	     unsigned int mask, struct statx __user *buffer);
    187
    188/*
    189 * fs/splice.c:
    190 */
    191long splice_file_to_pipe(struct file *in,
    192			 struct pipe_inode_info *opipe,
    193			 loff_t *offset,
    194			 size_t len, unsigned int flags);
    195
    196/*
    197 * fs/xattr.c:
    198 */
    199struct xattr_name {
    200	char name[XATTR_NAME_MAX + 1];
    201};
    202
    203struct xattr_ctx {
    204	/* Value of attribute */
    205	union {
    206		const void __user *cvalue;
    207		void __user *value;
    208	};
    209	void *kvalue;
    210	size_t size;
    211	/* Attribute name */
    212	struct xattr_name *kname;
    213	unsigned int flags;
    214};
    215
    216
    217ssize_t do_getxattr(struct user_namespace *mnt_userns,
    218		    struct dentry *d,
    219		    struct xattr_ctx *ctx);
    220
    221int setxattr_copy(const char __user *name, struct xattr_ctx *ctx);
    222int do_setxattr(struct user_namespace *mnt_userns, struct dentry *dentry,
    223		struct xattr_ctx *ctx);