0001
0002 #ifndef _LINUX_FS_H
0003 #define _LINUX_FS_H
0004
0005 #include <linux/linkage.h>
0006 #include <linux/wait_bit.h>
0007 #include <linux/kdev_t.h>
0008 #include <linux/dcache.h>
0009 #include <linux/path.h>
0010 #include <linux/stat.h>
0011 #include <linux/cache.h>
0012 #include <linux/list.h>
0013 #include <linux/list_lru.h>
0014 #include <linux/llist.h>
0015 #include <linux/radix-tree.h>
0016 #include <linux/xarray.h>
0017 #include <linux/rbtree.h>
0018 #include <linux/init.h>
0019 #include <linux/pid.h>
0020 #include <linux/bug.h>
0021 #include <linux/mutex.h>
0022 #include <linux/rwsem.h>
0023 #include <linux/mm_types.h>
0024 #include <linux/capability.h>
0025 #include <linux/semaphore.h>
0026 #include <linux/fcntl.h>
0027 #include <linux/rculist_bl.h>
0028 #include <linux/atomic.h>
0029 #include <linux/shrinker.h>
0030 #include <linux/migrate_mode.h>
0031 #include <linux/uidgid.h>
0032 #include <linux/lockdep.h>
0033 #include <linux/percpu-rwsem.h>
0034 #include <linux/workqueue.h>
0035 #include <linux/delayed_call.h>
0036 #include <linux/uuid.h>
0037 #include <linux/errseq.h>
0038 #include <linux/ioprio.h>
0039 #include <linux/fs_types.h>
0040 #include <linux/build_bug.h>
0041 #include <linux/stddef.h>
0042 #include <linux/mount.h>
0043 #include <linux/cred.h>
0044 #include <linux/mnt_idmapping.h>
0045 #include <linux/slab.h>
0046
0047 #include <asm/byteorder.h>
0048 #include <uapi/linux/fs.h>
0049
0050 struct backing_dev_info;
0051 struct bdi_writeback;
0052 struct bio;
0053 struct io_comp_batch;
0054 struct export_operations;
0055 struct fiemap_extent_info;
0056 struct hd_geometry;
0057 struct iovec;
0058 struct kiocb;
0059 struct kobject;
0060 struct pipe_inode_info;
0061 struct poll_table_struct;
0062 struct kstatfs;
0063 struct vm_area_struct;
0064 struct vfsmount;
0065 struct cred;
0066 struct swap_info_struct;
0067 struct seq_file;
0068 struct workqueue_struct;
0069 struct iov_iter;
0070 struct fscrypt_info;
0071 struct fscrypt_operations;
0072 struct fsverity_info;
0073 struct fsverity_operations;
0074 struct fs_context;
0075 struct fs_parameter_spec;
0076 struct fileattr;
0077 struct iomap_ops;
0078
0079 extern void __init inode_init(void);
0080 extern void __init inode_init_early(void);
0081 extern void __init files_init(void);
0082 extern void __init files_maxfiles_init(void);
0083
0084 extern unsigned long get_max_files(void);
0085 extern unsigned int sysctl_nr_open;
0086
0087 typedef __kernel_rwf_t rwf_t;
0088
0089 struct buffer_head;
0090 typedef int (get_block_t)(struct inode *inode, sector_t iblock,
0091 struct buffer_head *bh_result, int create);
0092 typedef int (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
0093 ssize_t bytes, void *private);
0094
0095 #define MAY_EXEC 0x00000001
0096 #define MAY_WRITE 0x00000002
0097 #define MAY_READ 0x00000004
0098 #define MAY_APPEND 0x00000008
0099 #define MAY_ACCESS 0x00000010
0100 #define MAY_OPEN 0x00000020
0101 #define MAY_CHDIR 0x00000040
0102
0103 #define MAY_NOT_BLOCK 0x00000080
0104
0105
0106
0107
0108
0109
0110
0111 #define FMODE_READ ((__force fmode_t)0x1)
0112
0113 #define FMODE_WRITE ((__force fmode_t)0x2)
0114
0115 #define FMODE_LSEEK ((__force fmode_t)0x4)
0116
0117 #define FMODE_PREAD ((__force fmode_t)0x8)
0118
0119 #define FMODE_PWRITE ((__force fmode_t)0x10)
0120
0121 #define FMODE_EXEC ((__force fmode_t)0x20)
0122
0123 #define FMODE_NDELAY ((__force fmode_t)0x40)
0124
0125 #define FMODE_EXCL ((__force fmode_t)0x80)
0126
0127
0128 #define FMODE_WRITE_IOCTL ((__force fmode_t)0x100)
0129
0130 #define FMODE_32BITHASH ((__force fmode_t)0x200)
0131
0132 #define FMODE_64BITHASH ((__force fmode_t)0x400)
0133
0134
0135
0136
0137
0138
0139
0140 #define FMODE_NOCMTIME ((__force fmode_t)0x800)
0141
0142
0143 #define FMODE_RANDOM ((__force fmode_t)0x1000)
0144
0145
0146 #define FMODE_UNSIGNED_OFFSET ((__force fmode_t)0x2000)
0147
0148
0149 #define FMODE_PATH ((__force fmode_t)0x4000)
0150
0151
0152 #define FMODE_ATOMIC_POS ((__force fmode_t)0x8000)
0153
0154 #define FMODE_WRITER ((__force fmode_t)0x10000)
0155
0156 #define FMODE_CAN_READ ((__force fmode_t)0x20000)
0157
0158 #define FMODE_CAN_WRITE ((__force fmode_t)0x40000)
0159
0160 #define FMODE_OPENED ((__force fmode_t)0x80000)
0161 #define FMODE_CREATED ((__force fmode_t)0x100000)
0162
0163
0164 #define FMODE_STREAM ((__force fmode_t)0x200000)
0165
0166
0167 #define FMODE_CAN_ODIRECT ((__force fmode_t)0x400000)
0168
0169
0170 #define FMODE_NONOTIFY ((__force fmode_t)0x4000000)
0171
0172
0173 #define FMODE_NOWAIT ((__force fmode_t)0x8000000)
0174
0175
0176 #define FMODE_NEED_UNMOUNT ((__force fmode_t)0x10000000)
0177
0178
0179 #define FMODE_NOACCOUNT ((__force fmode_t)0x20000000)
0180
0181
0182 #define FMODE_BUF_RASYNC ((__force fmode_t)0x40000000)
0183
0184
0185 #define FMODE_BUF_WASYNC ((__force fmode_t)0x80000000)
0186
0187
0188
0189
0190
0191 #define ATTR_MODE (1 << 0)
0192 #define ATTR_UID (1 << 1)
0193 #define ATTR_GID (1 << 2)
0194 #define ATTR_SIZE (1 << 3)
0195 #define ATTR_ATIME (1 << 4)
0196 #define ATTR_MTIME (1 << 5)
0197 #define ATTR_CTIME (1 << 6)
0198 #define ATTR_ATIME_SET (1 << 7)
0199 #define ATTR_MTIME_SET (1 << 8)
0200 #define ATTR_FORCE (1 << 9)
0201 #define ATTR_KILL_SUID (1 << 11)
0202 #define ATTR_KILL_SGID (1 << 12)
0203 #define ATTR_FILE (1 << 13)
0204 #define ATTR_KILL_PRIV (1 << 14)
0205 #define ATTR_OPEN (1 << 15)
0206 #define ATTR_TIMES_SET (1 << 16)
0207 #define ATTR_TOUCH (1 << 17)
0208
0209
0210
0211
0212
0213 #define WHITEOUT_MODE 0
0214 #define WHITEOUT_DEV 0
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225 struct iattr {
0226 unsigned int ia_valid;
0227 umode_t ia_mode;
0228
0229
0230
0231
0232
0233
0234
0235
0236
0237
0238
0239
0240 union {
0241 kuid_t ia_uid;
0242 vfsuid_t ia_vfsuid;
0243 };
0244 union {
0245 kgid_t ia_gid;
0246 vfsgid_t ia_vfsgid;
0247 };
0248 loff_t ia_size;
0249 struct timespec64 ia_atime;
0250 struct timespec64 ia_mtime;
0251 struct timespec64 ia_ctime;
0252
0253
0254
0255
0256
0257
0258 struct file *ia_file;
0259 };
0260
0261
0262
0263
0264 #include <linux/quota.h>
0265
0266
0267
0268
0269
0270 #define FILESYSTEM_MAX_STACK_DEPTH 2
0271
0272
0273
0274
0275
0276
0277
0278
0279
0280
0281
0282
0283
0284
0285
0286
0287
0288
0289
0290
0291
0292
0293
0294
0295
0296
0297
0298 enum positive_aop_returns {
0299 AOP_WRITEPAGE_ACTIVATE = 0x80000,
0300 AOP_TRUNCATED_PAGE = 0x80001,
0301 };
0302
0303
0304
0305
0306 struct page;
0307 struct address_space;
0308 struct writeback_control;
0309 struct readahead_control;
0310
0311
0312
0313
0314
0315 enum rw_hint {
0316 WRITE_LIFE_NOT_SET = 0,
0317 WRITE_LIFE_NONE = RWH_WRITE_LIFE_NONE,
0318 WRITE_LIFE_SHORT = RWH_WRITE_LIFE_SHORT,
0319 WRITE_LIFE_MEDIUM = RWH_WRITE_LIFE_MEDIUM,
0320 WRITE_LIFE_LONG = RWH_WRITE_LIFE_LONG,
0321 WRITE_LIFE_EXTREME = RWH_WRITE_LIFE_EXTREME,
0322 };
0323
0324
0325 #define IOCB_HIPRI (__force int) RWF_HIPRI
0326 #define IOCB_DSYNC (__force int) RWF_DSYNC
0327 #define IOCB_SYNC (__force int) RWF_SYNC
0328 #define IOCB_NOWAIT (__force int) RWF_NOWAIT
0329 #define IOCB_APPEND (__force int) RWF_APPEND
0330
0331
0332 #define IOCB_EVENTFD (1 << 16)
0333 #define IOCB_DIRECT (1 << 17)
0334 #define IOCB_WRITE (1 << 18)
0335
0336 #define IOCB_WAITQ (1 << 19)
0337 #define IOCB_NOIO (1 << 20)
0338
0339 #define IOCB_ALLOC_CACHE (1 << 21)
0340
0341 struct kiocb {
0342 struct file *ki_filp;
0343 loff_t ki_pos;
0344 void (*ki_complete)(struct kiocb *iocb, long ret);
0345 void *private;
0346 int ki_flags;
0347 u16 ki_ioprio;
0348 struct wait_page_queue *ki_waitq;
0349 };
0350
0351 static inline bool is_sync_kiocb(struct kiocb *kiocb)
0352 {
0353 return kiocb->ki_complete == NULL;
0354 }
0355
0356 struct address_space_operations {
0357 int (*writepage)(struct page *page, struct writeback_control *wbc);
0358 int (*read_folio)(struct file *, struct folio *);
0359
0360
0361 int (*writepages)(struct address_space *, struct writeback_control *);
0362
0363
0364 bool (*dirty_folio)(struct address_space *, struct folio *);
0365
0366 void (*readahead)(struct readahead_control *);
0367
0368 int (*write_begin)(struct file *, struct address_space *mapping,
0369 loff_t pos, unsigned len,
0370 struct page **pagep, void **fsdata);
0371 int (*write_end)(struct file *, struct address_space *mapping,
0372 loff_t pos, unsigned len, unsigned copied,
0373 struct page *page, void *fsdata);
0374
0375
0376 sector_t (*bmap)(struct address_space *, sector_t);
0377 void (*invalidate_folio) (struct folio *, size_t offset, size_t len);
0378 bool (*release_folio)(struct folio *, gfp_t);
0379 void (*free_folio)(struct folio *folio);
0380 ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter);
0381
0382
0383
0384
0385 int (*migrate_folio)(struct address_space *, struct folio *dst,
0386 struct folio *src, enum migrate_mode);
0387 int (*launder_folio)(struct folio *);
0388 bool (*is_partially_uptodate) (struct folio *, size_t from,
0389 size_t count);
0390 void (*is_dirty_writeback) (struct folio *, bool *dirty, bool *wb);
0391 int (*error_remove_page)(struct address_space *, struct page *);
0392
0393
0394 int (*swap_activate)(struct swap_info_struct *sis, struct file *file,
0395 sector_t *span);
0396 void (*swap_deactivate)(struct file *file);
0397 int (*swap_rw)(struct kiocb *iocb, struct iov_iter *iter);
0398 };
0399
0400 extern const struct address_space_operations empty_aops;
0401
0402
0403
0404
0405
0406
0407
0408
0409
0410
0411
0412
0413
0414
0415
0416
0417
0418
0419
0420
0421
0422
0423
0424 struct address_space {
0425 struct inode *host;
0426 struct xarray i_pages;
0427 struct rw_semaphore invalidate_lock;
0428 gfp_t gfp_mask;
0429 atomic_t i_mmap_writable;
0430 #ifdef CONFIG_READ_ONLY_THP_FOR_FS
0431
0432 atomic_t nr_thps;
0433 #endif
0434 struct rb_root_cached i_mmap;
0435 struct rw_semaphore i_mmap_rwsem;
0436 unsigned long nrpages;
0437 pgoff_t writeback_index;
0438 const struct address_space_operations *a_ops;
0439 unsigned long flags;
0440 errseq_t wb_err;
0441 spinlock_t private_lock;
0442 struct list_head private_list;
0443 void *private_data;
0444 } __attribute__((aligned(sizeof(long)))) __randomize_layout;
0445
0446
0447
0448
0449
0450
0451
0452 #define PAGECACHE_TAG_DIRTY XA_MARK_0
0453 #define PAGECACHE_TAG_WRITEBACK XA_MARK_1
0454 #define PAGECACHE_TAG_TOWRITE XA_MARK_2
0455
0456
0457
0458
0459 static inline bool mapping_tagged(struct address_space *mapping, xa_mark_t tag)
0460 {
0461 return xa_marked(&mapping->i_pages, tag);
0462 }
0463
0464 static inline void i_mmap_lock_write(struct address_space *mapping)
0465 {
0466 down_write(&mapping->i_mmap_rwsem);
0467 }
0468
0469 static inline int i_mmap_trylock_write(struct address_space *mapping)
0470 {
0471 return down_write_trylock(&mapping->i_mmap_rwsem);
0472 }
0473
0474 static inline void i_mmap_unlock_write(struct address_space *mapping)
0475 {
0476 up_write(&mapping->i_mmap_rwsem);
0477 }
0478
0479 static inline int i_mmap_trylock_read(struct address_space *mapping)
0480 {
0481 return down_read_trylock(&mapping->i_mmap_rwsem);
0482 }
0483
0484 static inline void i_mmap_lock_read(struct address_space *mapping)
0485 {
0486 down_read(&mapping->i_mmap_rwsem);
0487 }
0488
0489 static inline void i_mmap_unlock_read(struct address_space *mapping)
0490 {
0491 up_read(&mapping->i_mmap_rwsem);
0492 }
0493
0494 static inline void i_mmap_assert_locked(struct address_space *mapping)
0495 {
0496 lockdep_assert_held(&mapping->i_mmap_rwsem);
0497 }
0498
0499 static inline void i_mmap_assert_write_locked(struct address_space *mapping)
0500 {
0501 lockdep_assert_held_write(&mapping->i_mmap_rwsem);
0502 }
0503
0504
0505
0506
0507 static inline int mapping_mapped(struct address_space *mapping)
0508 {
0509 return !RB_EMPTY_ROOT(&mapping->i_mmap.rb_root);
0510 }
0511
0512
0513
0514
0515
0516
0517
0518
0519
0520
0521 static inline int mapping_writably_mapped(struct address_space *mapping)
0522 {
0523 return atomic_read(&mapping->i_mmap_writable) > 0;
0524 }
0525
0526 static inline int mapping_map_writable(struct address_space *mapping)
0527 {
0528 return atomic_inc_unless_negative(&mapping->i_mmap_writable) ?
0529 0 : -EPERM;
0530 }
0531
0532 static inline void mapping_unmap_writable(struct address_space *mapping)
0533 {
0534 atomic_dec(&mapping->i_mmap_writable);
0535 }
0536
0537 static inline int mapping_deny_writable(struct address_space *mapping)
0538 {
0539 return atomic_dec_unless_positive(&mapping->i_mmap_writable) ?
0540 0 : -EBUSY;
0541 }
0542
0543 static inline void mapping_allow_writable(struct address_space *mapping)
0544 {
0545 atomic_inc(&mapping->i_mmap_writable);
0546 }
0547
0548
0549
0550
0551 #if BITS_PER_LONG==32 && defined(CONFIG_SMP)
0552 #include <linux/seqlock.h>
0553 #define __NEED_I_SIZE_ORDERED
0554 #define i_size_ordered_init(inode) seqcount_init(&inode->i_size_seqcount)
0555 #else
0556 #define i_size_ordered_init(inode) do { } while (0)
0557 #endif
0558
0559 struct posix_acl;
0560 #define ACL_NOT_CACHED ((void *)(-1))
0561
0562
0563
0564
0565
0566 #define ACL_DONT_CACHE ((void *)(-3))
0567
0568 static inline struct posix_acl *
0569 uncached_acl_sentinel(struct task_struct *task)
0570 {
0571 return (void *)task + 1;
0572 }
0573
0574 static inline bool
0575 is_uncached_acl(struct posix_acl *acl)
0576 {
0577 return (long)acl & 1;
0578 }
0579
0580 #define IOP_FASTPERM 0x0001
0581 #define IOP_LOOKUP 0x0002
0582 #define IOP_NOFOLLOW 0x0004
0583 #define IOP_XATTR 0x0008
0584 #define IOP_DEFAULT_READLINK 0x0010
0585
0586 struct fsnotify_mark_connector;
0587
0588
0589
0590
0591
0592
0593 struct inode {
0594 umode_t i_mode;
0595 unsigned short i_opflags;
0596 kuid_t i_uid;
0597 kgid_t i_gid;
0598 unsigned int i_flags;
0599
0600 #ifdef CONFIG_FS_POSIX_ACL
0601 struct posix_acl *i_acl;
0602 struct posix_acl *i_default_acl;
0603 #endif
0604
0605 const struct inode_operations *i_op;
0606 struct super_block *i_sb;
0607 struct address_space *i_mapping;
0608
0609 #ifdef CONFIG_SECURITY
0610 void *i_security;
0611 #endif
0612
0613
0614 unsigned long i_ino;
0615
0616
0617
0618
0619
0620
0621
0622 union {
0623 const unsigned int i_nlink;
0624 unsigned int __i_nlink;
0625 };
0626 dev_t i_rdev;
0627 loff_t i_size;
0628 struct timespec64 i_atime;
0629 struct timespec64 i_mtime;
0630 struct timespec64 i_ctime;
0631 spinlock_t i_lock;
0632 unsigned short i_bytes;
0633 u8 i_blkbits;
0634 u8 i_write_hint;
0635 blkcnt_t i_blocks;
0636
0637 #ifdef __NEED_I_SIZE_ORDERED
0638 seqcount_t i_size_seqcount;
0639 #endif
0640
0641
0642 unsigned long i_state;
0643 struct rw_semaphore i_rwsem;
0644
0645 unsigned long dirtied_when;
0646 unsigned long dirtied_time_when;
0647
0648 struct hlist_node i_hash;
0649 struct list_head i_io_list;
0650 #ifdef CONFIG_CGROUP_WRITEBACK
0651 struct bdi_writeback *i_wb;
0652
0653
0654 int i_wb_frn_winner;
0655 u16 i_wb_frn_avg_time;
0656 u16 i_wb_frn_history;
0657 #endif
0658 struct list_head i_lru;
0659 struct list_head i_sb_list;
0660 struct list_head i_wb_list;
0661 union {
0662 struct hlist_head i_dentry;
0663 struct rcu_head i_rcu;
0664 };
0665 atomic64_t i_version;
0666 atomic64_t i_sequence;
0667 atomic_t i_count;
0668 atomic_t i_dio_count;
0669 atomic_t i_writecount;
0670 #if defined(CONFIG_IMA) || defined(CONFIG_FILE_LOCKING)
0671 atomic_t i_readcount;
0672 #endif
0673 union {
0674 const struct file_operations *i_fop;
0675 void (*free_inode)(struct inode *);
0676 };
0677 struct file_lock_context *i_flctx;
0678 struct address_space i_data;
0679 struct list_head i_devices;
0680 union {
0681 struct pipe_inode_info *i_pipe;
0682 struct cdev *i_cdev;
0683 char *i_link;
0684 unsigned i_dir_seq;
0685 };
0686
0687 __u32 i_generation;
0688
0689 #ifdef CONFIG_FSNOTIFY
0690 __u32 i_fsnotify_mask;
0691 struct fsnotify_mark_connector __rcu *i_fsnotify_marks;
0692 #endif
0693
0694 #ifdef CONFIG_FS_ENCRYPTION
0695 struct fscrypt_info *i_crypt_info;
0696 #endif
0697
0698 #ifdef CONFIG_FS_VERITY
0699 struct fsverity_info *i_verity_info;
0700 #endif
0701
0702 void *i_private;
0703 } __randomize_layout;
0704
0705 struct timespec64 timestamp_truncate(struct timespec64 t, struct inode *inode);
0706
0707 static inline unsigned int i_blocksize(const struct inode *node)
0708 {
0709 return (1 << node->i_blkbits);
0710 }
0711
0712 static inline int inode_unhashed(struct inode *inode)
0713 {
0714 return hlist_unhashed(&inode->i_hash);
0715 }
0716
0717
0718
0719
0720
0721
0722
0723 static inline void inode_fake_hash(struct inode *inode)
0724 {
0725 hlist_add_fake(&inode->i_hash);
0726 }
0727
0728
0729
0730
0731
0732
0733
0734
0735
0736
0737
0738
0739
0740
0741
0742
0743
0744 enum inode_i_mutex_lock_class
0745 {
0746 I_MUTEX_NORMAL,
0747 I_MUTEX_PARENT,
0748 I_MUTEX_CHILD,
0749 I_MUTEX_XATTR,
0750 I_MUTEX_NONDIR2,
0751 I_MUTEX_PARENT2,
0752 };
0753
0754 static inline void inode_lock(struct inode *inode)
0755 {
0756 down_write(&inode->i_rwsem);
0757 }
0758
0759 static inline void inode_unlock(struct inode *inode)
0760 {
0761 up_write(&inode->i_rwsem);
0762 }
0763
0764 static inline void inode_lock_shared(struct inode *inode)
0765 {
0766 down_read(&inode->i_rwsem);
0767 }
0768
0769 static inline void inode_unlock_shared(struct inode *inode)
0770 {
0771 up_read(&inode->i_rwsem);
0772 }
0773
0774 static inline int inode_trylock(struct inode *inode)
0775 {
0776 return down_write_trylock(&inode->i_rwsem);
0777 }
0778
0779 static inline int inode_trylock_shared(struct inode *inode)
0780 {
0781 return down_read_trylock(&inode->i_rwsem);
0782 }
0783
0784 static inline int inode_is_locked(struct inode *inode)
0785 {
0786 return rwsem_is_locked(&inode->i_rwsem);
0787 }
0788
0789 static inline void inode_lock_nested(struct inode *inode, unsigned subclass)
0790 {
0791 down_write_nested(&inode->i_rwsem, subclass);
0792 }
0793
0794 static inline void inode_lock_shared_nested(struct inode *inode, unsigned subclass)
0795 {
0796 down_read_nested(&inode->i_rwsem, subclass);
0797 }
0798
0799 static inline void filemap_invalidate_lock(struct address_space *mapping)
0800 {
0801 down_write(&mapping->invalidate_lock);
0802 }
0803
0804 static inline void filemap_invalidate_unlock(struct address_space *mapping)
0805 {
0806 up_write(&mapping->invalidate_lock);
0807 }
0808
0809 static inline void filemap_invalidate_lock_shared(struct address_space *mapping)
0810 {
0811 down_read(&mapping->invalidate_lock);
0812 }
0813
0814 static inline int filemap_invalidate_trylock_shared(
0815 struct address_space *mapping)
0816 {
0817 return down_read_trylock(&mapping->invalidate_lock);
0818 }
0819
0820 static inline void filemap_invalidate_unlock_shared(
0821 struct address_space *mapping)
0822 {
0823 up_read(&mapping->invalidate_lock);
0824 }
0825
0826 void lock_two_nondirectories(struct inode *, struct inode*);
0827 void unlock_two_nondirectories(struct inode *, struct inode*);
0828
0829 void filemap_invalidate_lock_two(struct address_space *mapping1,
0830 struct address_space *mapping2);
0831 void filemap_invalidate_unlock_two(struct address_space *mapping1,
0832 struct address_space *mapping2);
0833
0834
0835
0836
0837
0838
0839
0840
0841
0842
0843
0844
0845 static inline loff_t i_size_read(const struct inode *inode)
0846 {
0847 #if BITS_PER_LONG==32 && defined(CONFIG_SMP)
0848 loff_t i_size;
0849 unsigned int seq;
0850
0851 do {
0852 seq = read_seqcount_begin(&inode->i_size_seqcount);
0853 i_size = inode->i_size;
0854 } while (read_seqcount_retry(&inode->i_size_seqcount, seq));
0855 return i_size;
0856 #elif BITS_PER_LONG==32 && defined(CONFIG_PREEMPTION)
0857 loff_t i_size;
0858
0859 preempt_disable();
0860 i_size = inode->i_size;
0861 preempt_enable();
0862 return i_size;
0863 #else
0864 return inode->i_size;
0865 #endif
0866 }
0867
0868
0869
0870
0871
0872
0873 static inline void i_size_write(struct inode *inode, loff_t i_size)
0874 {
0875 #if BITS_PER_LONG==32 && defined(CONFIG_SMP)
0876 preempt_disable();
0877 write_seqcount_begin(&inode->i_size_seqcount);
0878 inode->i_size = i_size;
0879 write_seqcount_end(&inode->i_size_seqcount);
0880 preempt_enable();
0881 #elif BITS_PER_LONG==32 && defined(CONFIG_PREEMPTION)
0882 preempt_disable();
0883 inode->i_size = i_size;
0884 preempt_enable();
0885 #else
0886 inode->i_size = i_size;
0887 #endif
0888 }
0889
0890 static inline unsigned iminor(const struct inode *inode)
0891 {
0892 return MINOR(inode->i_rdev);
0893 }
0894
0895 static inline unsigned imajor(const struct inode *inode)
0896 {
0897 return MAJOR(inode->i_rdev);
0898 }
0899
0900 struct fown_struct {
0901 rwlock_t lock;
0902 struct pid *pid;
0903 enum pid_type pid_type;
0904 kuid_t uid, euid;
0905 int signum;
0906 };
0907
0908
0909
0910
0911
0912
0913
0914
0915
0916
0917
0918
0919
0920
0921
0922 struct file_ra_state {
0923 pgoff_t start;
0924 unsigned int size;
0925 unsigned int async_size;
0926 unsigned int ra_pages;
0927 unsigned int mmap_miss;
0928 loff_t prev_pos;
0929 };
0930
0931
0932
0933
0934 static inline int ra_has_index(struct file_ra_state *ra, pgoff_t index)
0935 {
0936 return (index >= ra->start &&
0937 index < ra->start + ra->size);
0938 }
0939
0940 struct file {
0941 union {
0942 struct llist_node f_llist;
0943 struct rcu_head f_rcuhead;
0944 unsigned int f_iocb_flags;
0945 };
0946 struct path f_path;
0947 struct inode *f_inode;
0948 const struct file_operations *f_op;
0949
0950
0951
0952
0953
0954 spinlock_t f_lock;
0955 atomic_long_t f_count;
0956 unsigned int f_flags;
0957 fmode_t f_mode;
0958 struct mutex f_pos_lock;
0959 loff_t f_pos;
0960 struct fown_struct f_owner;
0961 const struct cred *f_cred;
0962 struct file_ra_state f_ra;
0963
0964 u64 f_version;
0965 #ifdef CONFIG_SECURITY
0966 void *f_security;
0967 #endif
0968
0969 void *private_data;
0970
0971 #ifdef CONFIG_EPOLL
0972
0973 struct hlist_head *f_ep;
0974 #endif
0975 struct address_space *f_mapping;
0976 errseq_t f_wb_err;
0977 errseq_t f_sb_err;
0978 } __randomize_layout
0979 __attribute__((aligned(4)));
0980
0981 struct file_handle {
0982 __u32 handle_bytes;
0983 int handle_type;
0984
0985 unsigned char f_handle[];
0986 };
0987
0988 static inline struct file *get_file(struct file *f)
0989 {
0990 atomic_long_inc(&f->f_count);
0991 return f;
0992 }
0993 #define get_file_rcu(x) atomic_long_inc_not_zero(&(x)->f_count)
0994 #define file_count(x) atomic_long_read(&(x)->f_count)
0995
0996 #define MAX_NON_LFS ((1UL<<31) - 1)
0997
0998
0999
1000 #if BITS_PER_LONG==32
1001 #define MAX_LFS_FILESIZE ((loff_t)ULONG_MAX << PAGE_SHIFT)
1002 #elif BITS_PER_LONG==64
1003 #define MAX_LFS_FILESIZE ((loff_t)LLONG_MAX)
1004 #endif
1005
1006 #define FL_POSIX 1
1007 #define FL_FLOCK 2
1008 #define FL_DELEG 4
1009 #define FL_ACCESS 8
1010 #define FL_EXISTS 16
1011 #define FL_LEASE 32
1012 #define FL_CLOSE 64
1013 #define FL_SLEEP 128
1014 #define FL_DOWNGRADE_PENDING 256
1015 #define FL_UNLOCK_PENDING 512
1016 #define FL_OFDLCK 1024
1017 #define FL_LAYOUT 2048
1018 #define FL_RECLAIM 4096
1019
1020 #define FL_CLOSE_POSIX (FL_POSIX | FL_CLOSE)
1021
1022
1023
1024
1025
1026 #define FILE_LOCK_DEFERRED 1
1027
1028
1029 typedef void *fl_owner_t;
1030
1031 struct file_lock;
1032
1033 struct file_lock_operations {
1034 void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
1035 void (*fl_release_private)(struct file_lock *);
1036 };
1037
1038 struct lock_manager_operations {
1039 void *lm_mod_owner;
1040 fl_owner_t (*lm_get_owner)(fl_owner_t);
1041 void (*lm_put_owner)(fl_owner_t);
1042 void (*lm_notify)(struct file_lock *);
1043 int (*lm_grant)(struct file_lock *, int);
1044 bool (*lm_break)(struct file_lock *);
1045 int (*lm_change)(struct file_lock *, int, struct list_head *);
1046 void (*lm_setup)(struct file_lock *, void **);
1047 bool (*lm_breaker_owns_lease)(struct file_lock *);
1048 bool (*lm_lock_expirable)(struct file_lock *cfl);
1049 void (*lm_expire_lock)(void);
1050 };
1051
1052 struct lock_manager {
1053 struct list_head list;
1054
1055
1056
1057
1058 bool block_opens;
1059 };
1060
1061 struct net;
1062 void locks_start_grace(struct net *, struct lock_manager *);
1063 void locks_end_grace(struct lock_manager *);
1064 bool locks_in_grace(struct net *);
1065 bool opens_in_grace(struct net *);
1066
1067
1068 #include <linux/nfs_fs_i.h>
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087 struct file_lock {
1088 struct file_lock *fl_blocker;
1089 struct list_head fl_list;
1090 struct hlist_node fl_link;
1091 struct list_head fl_blocked_requests;
1092
1093
1094 struct list_head fl_blocked_member;
1095
1096
1097 fl_owner_t fl_owner;
1098 unsigned int fl_flags;
1099 unsigned char fl_type;
1100 unsigned int fl_pid;
1101 int fl_link_cpu;
1102 wait_queue_head_t fl_wait;
1103 struct file *fl_file;
1104 loff_t fl_start;
1105 loff_t fl_end;
1106
1107 struct fasync_struct * fl_fasync;
1108
1109 unsigned long fl_break_time;
1110 unsigned long fl_downgrade_time;
1111
1112 const struct file_lock_operations *fl_ops;
1113 const struct lock_manager_operations *fl_lmops;
1114 union {
1115 struct nfs_lock_info nfs_fl;
1116 struct nfs4_lock_info nfs4_fl;
1117 struct {
1118 struct list_head link;
1119 int state;
1120 unsigned int debug_id;
1121 } afs;
1122 } fl_u;
1123 } __randomize_layout;
1124
1125 struct file_lock_context {
1126 spinlock_t flc_lock;
1127 struct list_head flc_flock;
1128 struct list_head flc_posix;
1129 struct list_head flc_lease;
1130 };
1131
1132
1133 #ifndef OFFSET_MAX
1134 #define INT_LIMIT(x) (~((x)1 << (sizeof(x)*8 - 1)))
1135 #define OFFSET_MAX INT_LIMIT(loff_t)
1136 #define OFFT_OFFSET_MAX INT_LIMIT(off_t)
1137 #endif
1138
1139 extern void send_sigio(struct fown_struct *fown, int fd, int band);
1140
1141 #define locks_inode(f) file_inode(f)
1142
1143 #ifdef CONFIG_FILE_LOCKING
1144 extern int fcntl_getlk(struct file *, unsigned int, struct flock *);
1145 extern int fcntl_setlk(unsigned int, struct file *, unsigned int,
1146 struct flock *);
1147
1148 #if BITS_PER_LONG == 32
1149 extern int fcntl_getlk64(struct file *, unsigned int, struct flock64 *);
1150 extern int fcntl_setlk64(unsigned int, struct file *, unsigned int,
1151 struct flock64 *);
1152 #endif
1153
1154 extern int fcntl_setlease(unsigned int fd, struct file *filp, long arg);
1155 extern int fcntl_getlease(struct file *filp);
1156
1157
1158 void locks_free_lock_context(struct inode *inode);
1159 void locks_free_lock(struct file_lock *fl);
1160 extern void locks_init_lock(struct file_lock *);
1161 extern struct file_lock * locks_alloc_lock(void);
1162 extern void locks_copy_lock(struct file_lock *, struct file_lock *);
1163 extern void locks_copy_conflock(struct file_lock *, struct file_lock *);
1164 extern void locks_remove_posix(struct file *, fl_owner_t);
1165 extern void locks_remove_file(struct file *);
1166 extern void locks_release_private(struct file_lock *);
1167 extern void posix_test_lock(struct file *, struct file_lock *);
1168 extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock *);
1169 extern int locks_delete_block(struct file_lock *);
1170 extern int vfs_test_lock(struct file *, struct file_lock *);
1171 extern int vfs_lock_file(struct file *, unsigned int, struct file_lock *, struct file_lock *);
1172 extern int vfs_cancel_lock(struct file *filp, struct file_lock *fl);
1173 extern int locks_lock_inode_wait(struct inode *inode, struct file_lock *fl);
1174 extern int __break_lease(struct inode *inode, unsigned int flags, unsigned int type);
1175 extern void lease_get_mtime(struct inode *, struct timespec64 *time);
1176 extern int generic_setlease(struct file *, long, struct file_lock **, void **priv);
1177 extern int vfs_setlease(struct file *, long, struct file_lock **, void **);
1178 extern int lease_modify(struct file_lock *, int, struct list_head *);
1179
1180 struct notifier_block;
1181 extern int lease_register_notifier(struct notifier_block *);
1182 extern void lease_unregister_notifier(struct notifier_block *);
1183
1184 struct files_struct;
1185 extern void show_fd_locks(struct seq_file *f,
1186 struct file *filp, struct files_struct *files);
1187 extern bool locks_owner_has_blockers(struct file_lock_context *flctx,
1188 fl_owner_t owner);
1189 #else
1190 static inline int fcntl_getlk(struct file *file, unsigned int cmd,
1191 struct flock __user *user)
1192 {
1193 return -EINVAL;
1194 }
1195
1196 static inline int fcntl_setlk(unsigned int fd, struct file *file,
1197 unsigned int cmd, struct flock __user *user)
1198 {
1199 return -EACCES;
1200 }
1201
1202 #if BITS_PER_LONG == 32
1203 static inline int fcntl_getlk64(struct file *file, unsigned int cmd,
1204 struct flock64 *user)
1205 {
1206 return -EINVAL;
1207 }
1208
1209 static inline int fcntl_setlk64(unsigned int fd, struct file *file,
1210 unsigned int cmd, struct flock64 *user)
1211 {
1212 return -EACCES;
1213 }
1214 #endif
1215 static inline int fcntl_setlease(unsigned int fd, struct file *filp, long arg)
1216 {
1217 return -EINVAL;
1218 }
1219
1220 static inline int fcntl_getlease(struct file *filp)
1221 {
1222 return F_UNLCK;
1223 }
1224
1225 static inline void
1226 locks_free_lock_context(struct inode *inode)
1227 {
1228 }
1229
1230 static inline void locks_init_lock(struct file_lock *fl)
1231 {
1232 return;
1233 }
1234
1235 static inline void locks_copy_conflock(struct file_lock *new, struct file_lock *fl)
1236 {
1237 return;
1238 }
1239
1240 static inline void locks_copy_lock(struct file_lock *new, struct file_lock *fl)
1241 {
1242 return;
1243 }
1244
1245 static inline void locks_remove_posix(struct file *filp, fl_owner_t owner)
1246 {
1247 return;
1248 }
1249
1250 static inline void locks_remove_file(struct file *filp)
1251 {
1252 return;
1253 }
1254
1255 static inline void posix_test_lock(struct file *filp, struct file_lock *fl)
1256 {
1257 return;
1258 }
1259
1260 static inline int posix_lock_file(struct file *filp, struct file_lock *fl,
1261 struct file_lock *conflock)
1262 {
1263 return -ENOLCK;
1264 }
1265
1266 static inline int locks_delete_block(struct file_lock *waiter)
1267 {
1268 return -ENOENT;
1269 }
1270
1271 static inline int vfs_test_lock(struct file *filp, struct file_lock *fl)
1272 {
1273 return 0;
1274 }
1275
1276 static inline int vfs_lock_file(struct file *filp, unsigned int cmd,
1277 struct file_lock *fl, struct file_lock *conf)
1278 {
1279 return -ENOLCK;
1280 }
1281
1282 static inline int vfs_cancel_lock(struct file *filp, struct file_lock *fl)
1283 {
1284 return 0;
1285 }
1286
1287 static inline int locks_lock_inode_wait(struct inode *inode, struct file_lock *fl)
1288 {
1289 return -ENOLCK;
1290 }
1291
1292 static inline int __break_lease(struct inode *inode, unsigned int mode, unsigned int type)
1293 {
1294 return 0;
1295 }
1296
1297 static inline void lease_get_mtime(struct inode *inode,
1298 struct timespec64 *time)
1299 {
1300 return;
1301 }
1302
1303 static inline int generic_setlease(struct file *filp, long arg,
1304 struct file_lock **flp, void **priv)
1305 {
1306 return -EINVAL;
1307 }
1308
1309 static inline int vfs_setlease(struct file *filp, long arg,
1310 struct file_lock **lease, void **priv)
1311 {
1312 return -EINVAL;
1313 }
1314
1315 static inline int lease_modify(struct file_lock *fl, int arg,
1316 struct list_head *dispose)
1317 {
1318 return -EINVAL;
1319 }
1320
1321 struct files_struct;
1322 static inline void show_fd_locks(struct seq_file *f,
1323 struct file *filp, struct files_struct *files) {}
1324 static inline bool locks_owner_has_blockers(struct file_lock_context *flctx,
1325 fl_owner_t owner)
1326 {
1327 return false;
1328 }
1329 #endif
1330
1331 static inline struct inode *file_inode(const struct file *f)
1332 {
1333 return f->f_inode;
1334 }
1335
1336 static inline struct dentry *file_dentry(const struct file *file)
1337 {
1338 return d_real(file->f_path.dentry, file_inode(file));
1339 }
1340
1341 static inline int locks_lock_file_wait(struct file *filp, struct file_lock *fl)
1342 {
1343 return locks_lock_inode_wait(locks_inode(filp), fl);
1344 }
1345
1346 struct fasync_struct {
1347 rwlock_t fa_lock;
1348 int magic;
1349 int fa_fd;
1350 struct fasync_struct *fa_next;
1351 struct file *fa_file;
1352 struct rcu_head fa_rcu;
1353 };
1354
1355 #define FASYNC_MAGIC 0x4601
1356
1357
1358 extern int fasync_helper(int, struct file *, int, struct fasync_struct **);
1359 extern struct fasync_struct *fasync_insert_entry(int, struct file *, struct fasync_struct **, struct fasync_struct *);
1360 extern int fasync_remove_entry(struct file *, struct fasync_struct **);
1361 extern struct fasync_struct *fasync_alloc(void);
1362 extern void fasync_free(struct fasync_struct *);
1363
1364
1365 extern void kill_fasync(struct fasync_struct **, int, int);
1366
1367 extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
1368 extern int f_setown(struct file *filp, unsigned long arg, int force);
1369 extern void f_delown(struct file *filp);
1370 extern pid_t f_getown(struct file *filp);
1371 extern int send_sigurg(struct fown_struct *fown);
1372
1373
1374
1375
1376
1377 #define SB_RDONLY 1
1378 #define SB_NOSUID 2
1379 #define SB_NODEV 4
1380 #define SB_NOEXEC 8
1381 #define SB_SYNCHRONOUS 16
1382 #define SB_MANDLOCK 64
1383 #define SB_DIRSYNC 128
1384 #define SB_NOATIME 1024
1385 #define SB_NODIRATIME 2048
1386 #define SB_SILENT 32768
1387 #define SB_POSIXACL (1<<16)
1388 #define SB_INLINECRYPT (1<<17)
1389 #define SB_KERNMOUNT (1<<22)
1390 #define SB_I_VERSION (1<<23)
1391 #define SB_LAZYTIME (1<<25)
1392
1393
1394 #define SB_SUBMOUNT (1<<26)
1395 #define SB_FORCE (1<<27)
1396 #define SB_NOSEC (1<<28)
1397 #define SB_BORN (1<<29)
1398 #define SB_ACTIVE (1<<30)
1399 #define SB_NOUSER (1<<31)
1400
1401
1402 #define SB_ENC_STRICT_MODE_FL (1 << 0)
1403
1404 #define sb_has_strict_encoding(sb) \
1405 (sb->s_encoding_flags & SB_ENC_STRICT_MODE_FL)
1406
1407
1408
1409
1410
1411 #define MNT_FORCE 0x00000001
1412 #define MNT_DETACH 0x00000002
1413 #define MNT_EXPIRE 0x00000004
1414 #define UMOUNT_NOFOLLOW 0x00000008
1415 #define UMOUNT_UNUSED 0x80000000
1416
1417
1418 #define SB_I_CGROUPWB 0x00000001
1419 #define SB_I_NOEXEC 0x00000002
1420 #define SB_I_NODEV 0x00000004
1421 #define SB_I_STABLE_WRITES 0x00000008
1422
1423
1424 #define SB_I_USERNS_VISIBLE 0x00000010
1425 #define SB_I_IMA_UNVERIFIABLE_SIGNATURE 0x00000020
1426 #define SB_I_UNTRUSTED_MOUNTER 0x00000040
1427
1428 #define SB_I_SKIP_SYNC 0x00000100
1429 #define SB_I_PERSB_BDI 0x00000200
1430 #define SB_I_TS_EXPIRY_WARNED 0x00000400
1431 #define SB_I_RETIRED 0x00000800
1432
1433
1434 enum {
1435 SB_UNFROZEN = 0,
1436 SB_FREEZE_WRITE = 1,
1437 SB_FREEZE_PAGEFAULT = 2,
1438 SB_FREEZE_FS = 3,
1439
1440 SB_FREEZE_COMPLETE = 4,
1441 };
1442
1443 #define SB_FREEZE_LEVELS (SB_FREEZE_COMPLETE - 1)
1444
1445 struct sb_writers {
1446 int frozen;
1447 wait_queue_head_t wait_unfrozen;
1448 struct percpu_rw_semaphore rw_sem[SB_FREEZE_LEVELS];
1449 };
1450
1451 struct super_block {
1452 struct list_head s_list;
1453 dev_t s_dev;
1454 unsigned char s_blocksize_bits;
1455 unsigned long s_blocksize;
1456 loff_t s_maxbytes;
1457 struct file_system_type *s_type;
1458 const struct super_operations *s_op;
1459 const struct dquot_operations *dq_op;
1460 const struct quotactl_ops *s_qcop;
1461 const struct export_operations *s_export_op;
1462 unsigned long s_flags;
1463 unsigned long s_iflags;
1464 unsigned long s_magic;
1465 struct dentry *s_root;
1466 struct rw_semaphore s_umount;
1467 int s_count;
1468 atomic_t s_active;
1469 #ifdef CONFIG_SECURITY
1470 void *s_security;
1471 #endif
1472 const struct xattr_handler **s_xattr;
1473 #ifdef CONFIG_FS_ENCRYPTION
1474 const struct fscrypt_operations *s_cop;
1475 struct key *s_master_keys;
1476 #endif
1477 #ifdef CONFIG_FS_VERITY
1478 const struct fsverity_operations *s_vop;
1479 #endif
1480 #if IS_ENABLED(CONFIG_UNICODE)
1481 struct unicode_map *s_encoding;
1482 __u16 s_encoding_flags;
1483 #endif
1484 struct hlist_bl_head s_roots;
1485 struct list_head s_mounts;
1486 struct block_device *s_bdev;
1487 struct backing_dev_info *s_bdi;
1488 struct mtd_info *s_mtd;
1489 struct hlist_node s_instances;
1490 unsigned int s_quota_types;
1491 struct quota_info s_dquot;
1492
1493 struct sb_writers s_writers;
1494
1495
1496
1497
1498
1499
1500 void *s_fs_info;
1501
1502
1503 u32 s_time_gran;
1504
1505 time64_t s_time_min;
1506 time64_t s_time_max;
1507 #ifdef CONFIG_FSNOTIFY
1508 __u32 s_fsnotify_mask;
1509 struct fsnotify_mark_connector __rcu *s_fsnotify_marks;
1510 #endif
1511
1512 char s_id[32];
1513 uuid_t s_uuid;
1514
1515 unsigned int s_max_links;
1516 fmode_t s_mode;
1517
1518
1519
1520
1521
1522 struct mutex s_vfs_rename_mutex;
1523
1524
1525
1526
1527
1528 const char *s_subtype;
1529
1530 const struct dentry_operations *s_d_op;
1531
1532 struct shrinker s_shrink;
1533
1534
1535 atomic_long_t s_remove_count;
1536
1537
1538
1539
1540
1541 atomic_long_t s_fsnotify_connectors;
1542
1543
1544 int s_readonly_remount;
1545
1546
1547 errseq_t s_wb_err;
1548
1549
1550 struct workqueue_struct *s_dio_done_wq;
1551 struct hlist_head s_pins;
1552
1553
1554
1555
1556
1557
1558 struct user_namespace *s_user_ns;
1559
1560
1561
1562
1563
1564
1565 struct list_lru s_dentry_lru;
1566 struct list_lru s_inode_lru;
1567 struct rcu_head rcu;
1568 struct work_struct destroy_work;
1569
1570 struct mutex s_sync_lock;
1571
1572
1573
1574
1575 int s_stack_depth;
1576
1577
1578 spinlock_t s_inode_list_lock ____cacheline_aligned_in_smp;
1579 struct list_head s_inodes;
1580
1581 spinlock_t s_inode_wblist_lock;
1582 struct list_head s_inodes_wb;
1583 } __randomize_layout;
1584
1585 static inline struct user_namespace *i_user_ns(const struct inode *inode)
1586 {
1587 return inode->i_sb->s_user_ns;
1588 }
1589
1590
1591
1592
1593
1594
1595 static inline uid_t i_uid_read(const struct inode *inode)
1596 {
1597 return from_kuid(i_user_ns(inode), inode->i_uid);
1598 }
1599
1600 static inline gid_t i_gid_read(const struct inode *inode)
1601 {
1602 return from_kgid(i_user_ns(inode), inode->i_gid);
1603 }
1604
1605 static inline void i_uid_write(struct inode *inode, uid_t uid)
1606 {
1607 inode->i_uid = make_kuid(i_user_ns(inode), uid);
1608 }
1609
1610 static inline void i_gid_write(struct inode *inode, gid_t gid)
1611 {
1612 inode->i_gid = make_kgid(i_user_ns(inode), gid);
1613 }
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626 static inline kuid_t i_uid_into_mnt(struct user_namespace *mnt_userns,
1627 const struct inode *inode)
1628 {
1629 return AS_KUIDT(make_vfsuid(mnt_userns, i_user_ns(inode), inode->i_uid));
1630 }
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640 static inline vfsuid_t i_uid_into_vfsuid(struct user_namespace *mnt_userns,
1641 const struct inode *inode)
1642 {
1643 return make_vfsuid(mnt_userns, i_user_ns(inode), inode->i_uid);
1644 }
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657 static inline bool i_uid_needs_update(struct user_namespace *mnt_userns,
1658 const struct iattr *attr,
1659 const struct inode *inode)
1660 {
1661 return ((attr->ia_valid & ATTR_UID) &&
1662 !vfsuid_eq(attr->ia_vfsuid,
1663 i_uid_into_vfsuid(mnt_userns, inode)));
1664 }
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675 static inline void i_uid_update(struct user_namespace *mnt_userns,
1676 const struct iattr *attr,
1677 struct inode *inode)
1678 {
1679 if (attr->ia_valid & ATTR_UID)
1680 inode->i_uid = from_vfsuid(mnt_userns, i_user_ns(inode),
1681 attr->ia_vfsuid);
1682 }
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695 static inline kgid_t i_gid_into_mnt(struct user_namespace *mnt_userns,
1696 const struct inode *inode)
1697 {
1698 return AS_KGIDT(make_vfsgid(mnt_userns, i_user_ns(inode), inode->i_gid));
1699 }
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709 static inline vfsgid_t i_gid_into_vfsgid(struct user_namespace *mnt_userns,
1710 const struct inode *inode)
1711 {
1712 return make_vfsgid(mnt_userns, i_user_ns(inode), inode->i_gid);
1713 }
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726 static inline bool i_gid_needs_update(struct user_namespace *mnt_userns,
1727 const struct iattr *attr,
1728 const struct inode *inode)
1729 {
1730 return ((attr->ia_valid & ATTR_GID) &&
1731 !vfsgid_eq(attr->ia_vfsgid,
1732 i_gid_into_vfsgid(mnt_userns, inode)));
1733 }
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744 static inline void i_gid_update(struct user_namespace *mnt_userns,
1745 const struct iattr *attr,
1746 struct inode *inode)
1747 {
1748 if (attr->ia_valid & ATTR_GID)
1749 inode->i_gid = from_vfsgid(mnt_userns, i_user_ns(inode),
1750 attr->ia_vfsgid);
1751 }
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761 static inline void inode_fsuid_set(struct inode *inode,
1762 struct user_namespace *mnt_userns)
1763 {
1764 inode->i_uid = mapped_fsuid(mnt_userns, i_user_ns(inode));
1765 }
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775 static inline void inode_fsgid_set(struct inode *inode,
1776 struct user_namespace *mnt_userns)
1777 {
1778 inode->i_gid = mapped_fsgid(mnt_userns, i_user_ns(inode));
1779 }
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792 static inline bool fsuidgid_has_mapping(struct super_block *sb,
1793 struct user_namespace *mnt_userns)
1794 {
1795 struct user_namespace *fs_userns = sb->s_user_ns;
1796 kuid_t kuid;
1797 kgid_t kgid;
1798
1799 kuid = mapped_fsuid(mnt_userns, fs_userns);
1800 if (!uid_valid(kuid))
1801 return false;
1802 kgid = mapped_fsgid(mnt_userns, fs_userns);
1803 if (!gid_valid(kgid))
1804 return false;
1805 return kuid_has_mapping(fs_userns, kuid) &&
1806 kgid_has_mapping(fs_userns, kgid);
1807 }
1808
1809 extern struct timespec64 current_time(struct inode *inode);
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819 static inline void __sb_end_write(struct super_block *sb, int level)
1820 {
1821 percpu_up_read(sb->s_writers.rw_sem + level-1);
1822 }
1823
1824 static inline void __sb_start_write(struct super_block *sb, int level)
1825 {
1826 percpu_down_read(sb->s_writers.rw_sem + level - 1);
1827 }
1828
1829 static inline bool __sb_start_write_trylock(struct super_block *sb, int level)
1830 {
1831 return percpu_down_read_trylock(sb->s_writers.rw_sem + level - 1);
1832 }
1833
1834 #define __sb_writers_acquired(sb, lev) \
1835 percpu_rwsem_acquire(&(sb)->s_writers.rw_sem[(lev)-1], 1, _THIS_IP_)
1836 #define __sb_writers_release(sb, lev) \
1837 percpu_rwsem_release(&(sb)->s_writers.rw_sem[(lev)-1], 1, _THIS_IP_)
1838
1839 static inline bool sb_write_started(const struct super_block *sb)
1840 {
1841 return lockdep_is_held_type(sb->s_writers.rw_sem + SB_FREEZE_WRITE - 1, 1);
1842 }
1843
1844
1845
1846
1847
1848
1849
1850
1851 static inline void sb_end_write(struct super_block *sb)
1852 {
1853 __sb_end_write(sb, SB_FREEZE_WRITE);
1854 }
1855
1856
1857
1858
1859
1860
1861
1862
1863 static inline void sb_end_pagefault(struct super_block *sb)
1864 {
1865 __sb_end_write(sb, SB_FREEZE_PAGEFAULT);
1866 }
1867
1868
1869
1870
1871
1872
1873
1874
1875 static inline void sb_end_intwrite(struct super_block *sb)
1876 {
1877 __sb_end_write(sb, SB_FREEZE_FS);
1878 }
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899 static inline void sb_start_write(struct super_block *sb)
1900 {
1901 __sb_start_write(sb, SB_FREEZE_WRITE);
1902 }
1903
1904 static inline bool sb_start_write_trylock(struct super_block *sb)
1905 {
1906 return __sb_start_write_trylock(sb, SB_FREEZE_WRITE);
1907 }
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928 static inline void sb_start_pagefault(struct super_block *sb)
1929 {
1930 __sb_start_write(sb, SB_FREEZE_PAGEFAULT);
1931 }
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946 static inline void sb_start_intwrite(struct super_block *sb)
1947 {
1948 __sb_start_write(sb, SB_FREEZE_FS);
1949 }
1950
1951 static inline bool sb_start_intwrite_trylock(struct super_block *sb)
1952 {
1953 return __sb_start_write_trylock(sb, SB_FREEZE_FS);
1954 }
1955
1956 bool inode_owner_or_capable(struct user_namespace *mnt_userns,
1957 const struct inode *inode);
1958
1959
1960
1961
1962 int vfs_create(struct user_namespace *, struct inode *,
1963 struct dentry *, umode_t, bool);
1964 int vfs_mkdir(struct user_namespace *, struct inode *,
1965 struct dentry *, umode_t);
1966 int vfs_mknod(struct user_namespace *, struct inode *, struct dentry *,
1967 umode_t, dev_t);
1968 int vfs_symlink(struct user_namespace *, struct inode *,
1969 struct dentry *, const char *);
1970 int vfs_link(struct dentry *, struct user_namespace *, struct inode *,
1971 struct dentry *, struct inode **);
1972 int vfs_rmdir(struct user_namespace *, struct inode *, struct dentry *);
1973 int vfs_unlink(struct user_namespace *, struct inode *, struct dentry *,
1974 struct inode **);
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987 struct renamedata {
1988 struct user_namespace *old_mnt_userns;
1989 struct inode *old_dir;
1990 struct dentry *old_dentry;
1991 struct user_namespace *new_mnt_userns;
1992 struct inode *new_dir;
1993 struct dentry *new_dentry;
1994 struct inode **delegated_inode;
1995 unsigned int flags;
1996 } __randomize_layout;
1997
1998 int vfs_rename(struct renamedata *);
1999
2000 static inline int vfs_whiteout(struct user_namespace *mnt_userns,
2001 struct inode *dir, struct dentry *dentry)
2002 {
2003 return vfs_mknod(mnt_userns, dir, dentry, S_IFCHR | WHITEOUT_MODE,
2004 WHITEOUT_DEV);
2005 }
2006
2007 struct dentry *vfs_tmpfile(struct user_namespace *mnt_userns,
2008 struct dentry *dentry, umode_t mode, int open_flag);
2009
2010 int vfs_mkobj(struct dentry *, umode_t,
2011 int (*f)(struct dentry *, umode_t, void *),
2012 void *);
2013
2014 int vfs_fchown(struct file *file, uid_t user, gid_t group);
2015 int vfs_fchmod(struct file *file, umode_t mode);
2016 int vfs_utimes(const struct path *path, struct timespec64 *times);
2017
2018 extern long vfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
2019
2020 #ifdef CONFIG_COMPAT
2021 extern long compat_ptr_ioctl(struct file *file, unsigned int cmd,
2022 unsigned long arg);
2023 #else
2024 #define compat_ptr_ioctl NULL
2025 #endif
2026
2027
2028
2029
2030 void inode_init_owner(struct user_namespace *mnt_userns, struct inode *inode,
2031 const struct inode *dir, umode_t mode);
2032 extern bool may_open_dev(const struct path *path);
2033 umode_t mode_strip_sgid(struct user_namespace *mnt_userns,
2034 const struct inode *dir, umode_t mode);
2035
2036
2037
2038
2039
2040
2041
2042 struct dir_context;
2043 typedef int (*filldir_t)(struct dir_context *, const char *, int, loff_t, u64,
2044 unsigned);
2045
2046 struct dir_context {
2047 filldir_t actor;
2048 loff_t pos;
2049 };
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061 #define NOMMU_MAP_COPY 0x00000001
2062 #define NOMMU_MAP_DIRECT 0x00000008
2063 #define NOMMU_MAP_READ VM_MAYREAD
2064 #define NOMMU_MAP_WRITE VM_MAYWRITE
2065 #define NOMMU_MAP_EXEC VM_MAYEXEC
2066
2067 #define NOMMU_VMFLAGS \
2068 (NOMMU_MAP_READ | NOMMU_MAP_WRITE | NOMMU_MAP_EXEC)
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078 #define REMAP_FILE_DEDUP (1 << 0)
2079 #define REMAP_FILE_CAN_SHORTEN (1 << 1)
2080
2081
2082
2083
2084
2085
2086
2087
2088 #define REMAP_FILE_ADVISORY (REMAP_FILE_CAN_SHORTEN)
2089
2090 struct iov_iter;
2091 struct io_uring_cmd;
2092
2093 struct file_operations {
2094 struct module *owner;
2095 loff_t (*llseek) (struct file *, loff_t, int);
2096 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
2097 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
2098 ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
2099 ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
2100 int (*iopoll)(struct kiocb *kiocb, struct io_comp_batch *,
2101 unsigned int flags);
2102 int (*iterate) (struct file *, struct dir_context *);
2103 int (*iterate_shared) (struct file *, struct dir_context *);
2104 __poll_t (*poll) (struct file *, struct poll_table_struct *);
2105 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
2106 long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
2107 int (*mmap) (struct file *, struct vm_area_struct *);
2108 unsigned long mmap_supported_flags;
2109 int (*open) (struct inode *, struct file *);
2110 int (*flush) (struct file *, fl_owner_t id);
2111 int (*release) (struct inode *, struct file *);
2112 int (*fsync) (struct file *, loff_t, loff_t, int datasync);
2113 int (*fasync) (int, struct file *, int);
2114 int (*lock) (struct file *, int, struct file_lock *);
2115 ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
2116 unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
2117 int (*check_flags)(int);
2118 int (*flock) (struct file *, int, struct file_lock *);
2119 ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
2120 ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
2121 int (*setlease)(struct file *, long, struct file_lock **, void **);
2122 long (*fallocate)(struct file *file, int mode, loff_t offset,
2123 loff_t len);
2124 void (*show_fdinfo)(struct seq_file *m, struct file *f);
2125 #ifndef CONFIG_MMU
2126 unsigned (*mmap_capabilities)(struct file *);
2127 #endif
2128 ssize_t (*copy_file_range)(struct file *, loff_t, struct file *,
2129 loff_t, size_t, unsigned int);
2130 loff_t (*remap_file_range)(struct file *file_in, loff_t pos_in,
2131 struct file *file_out, loff_t pos_out,
2132 loff_t len, unsigned int remap_flags);
2133 int (*fadvise)(struct file *, loff_t, loff_t, int);
2134 int (*uring_cmd)(struct io_uring_cmd *ioucmd, unsigned int issue_flags);
2135 } __randomize_layout;
2136
2137 struct inode_operations {
2138 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
2139 const char * (*get_link) (struct dentry *, struct inode *, struct delayed_call *);
2140 int (*permission) (struct user_namespace *, struct inode *, int);
2141 struct posix_acl * (*get_acl)(struct inode *, int, bool);
2142
2143 int (*readlink) (struct dentry *, char __user *,int);
2144
2145 int (*create) (struct user_namespace *, struct inode *,struct dentry *,
2146 umode_t, bool);
2147 int (*link) (struct dentry *,struct inode *,struct dentry *);
2148 int (*unlink) (struct inode *,struct dentry *);
2149 int (*symlink) (struct user_namespace *, struct inode *,struct dentry *,
2150 const char *);
2151 int (*mkdir) (struct user_namespace *, struct inode *,struct dentry *,
2152 umode_t);
2153 int (*rmdir) (struct inode *,struct dentry *);
2154 int (*mknod) (struct user_namespace *, struct inode *,struct dentry *,
2155 umode_t,dev_t);
2156 int (*rename) (struct user_namespace *, struct inode *, struct dentry *,
2157 struct inode *, struct dentry *, unsigned int);
2158 int (*setattr) (struct user_namespace *, struct dentry *,
2159 struct iattr *);
2160 int (*getattr) (struct user_namespace *, const struct path *,
2161 struct kstat *, u32, unsigned int);
2162 ssize_t (*listxattr) (struct dentry *, char *, size_t);
2163 int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start,
2164 u64 len);
2165 int (*update_time)(struct inode *, struct timespec64 *, int);
2166 int (*atomic_open)(struct inode *, struct dentry *,
2167 struct file *, unsigned open_flag,
2168 umode_t create_mode);
2169 int (*tmpfile) (struct user_namespace *, struct inode *,
2170 struct dentry *, umode_t);
2171 int (*set_acl)(struct user_namespace *, struct inode *,
2172 struct posix_acl *, int);
2173 int (*fileattr_set)(struct user_namespace *mnt_userns,
2174 struct dentry *dentry, struct fileattr *fa);
2175 int (*fileattr_get)(struct dentry *dentry, struct fileattr *fa);
2176 } ____cacheline_aligned;
2177
2178 static inline ssize_t call_read_iter(struct file *file, struct kiocb *kio,
2179 struct iov_iter *iter)
2180 {
2181 return file->f_op->read_iter(kio, iter);
2182 }
2183
2184 static inline ssize_t call_write_iter(struct file *file, struct kiocb *kio,
2185 struct iov_iter *iter)
2186 {
2187 return file->f_op->write_iter(kio, iter);
2188 }
2189
2190 static inline int call_mmap(struct file *file, struct vm_area_struct *vma)
2191 {
2192 return file->f_op->mmap(file, vma);
2193 }
2194
2195 extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
2196 extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
2197 extern ssize_t vfs_copy_file_range(struct file *, loff_t , struct file *,
2198 loff_t, size_t, unsigned int);
2199 extern ssize_t generic_copy_file_range(struct file *file_in, loff_t pos_in,
2200 struct file *file_out, loff_t pos_out,
2201 size_t len, unsigned int flags);
2202 int __generic_remap_file_range_prep(struct file *file_in, loff_t pos_in,
2203 struct file *file_out, loff_t pos_out,
2204 loff_t *len, unsigned int remap_flags,
2205 const struct iomap_ops *dax_read_ops);
2206 int generic_remap_file_range_prep(struct file *file_in, loff_t pos_in,
2207 struct file *file_out, loff_t pos_out,
2208 loff_t *count, unsigned int remap_flags);
2209 extern loff_t do_clone_file_range(struct file *file_in, loff_t pos_in,
2210 struct file *file_out, loff_t pos_out,
2211 loff_t len, unsigned int remap_flags);
2212 extern loff_t vfs_clone_file_range(struct file *file_in, loff_t pos_in,
2213 struct file *file_out, loff_t pos_out,
2214 loff_t len, unsigned int remap_flags);
2215 extern int vfs_dedupe_file_range(struct file *file,
2216 struct file_dedupe_range *same);
2217 extern loff_t vfs_dedupe_file_range_one(struct file *src_file, loff_t src_pos,
2218 struct file *dst_file, loff_t dst_pos,
2219 loff_t len, unsigned int remap_flags);
2220
2221
2222 struct super_operations {
2223 struct inode *(*alloc_inode)(struct super_block *sb);
2224 void (*destroy_inode)(struct inode *);
2225 void (*free_inode)(struct inode *);
2226
2227 void (*dirty_inode) (struct inode *, int flags);
2228 int (*write_inode) (struct inode *, struct writeback_control *wbc);
2229 int (*drop_inode) (struct inode *);
2230 void (*evict_inode) (struct inode *);
2231 void (*put_super) (struct super_block *);
2232 int (*sync_fs)(struct super_block *sb, int wait);
2233 int (*freeze_super) (struct super_block *);
2234 int (*freeze_fs) (struct super_block *);
2235 int (*thaw_super) (struct super_block *);
2236 int (*unfreeze_fs) (struct super_block *);
2237 int (*statfs) (struct dentry *, struct kstatfs *);
2238 int (*remount_fs) (struct super_block *, int *, char *);
2239 void (*umount_begin) (struct super_block *);
2240
2241 int (*show_options)(struct seq_file *, struct dentry *);
2242 int (*show_devname)(struct seq_file *, struct dentry *);
2243 int (*show_path)(struct seq_file *, struct dentry *);
2244 int (*show_stats)(struct seq_file *, struct dentry *);
2245 #ifdef CONFIG_QUOTA
2246 ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
2247 ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
2248 struct dquot **(*get_dquots)(struct inode *);
2249 #endif
2250 long (*nr_cached_objects)(struct super_block *,
2251 struct shrink_control *);
2252 long (*free_cached_objects)(struct super_block *,
2253 struct shrink_control *);
2254 };
2255
2256
2257
2258
2259 #define S_SYNC (1 << 0)
2260 #define S_NOATIME (1 << 1)
2261 #define S_APPEND (1 << 2)
2262 #define S_IMMUTABLE (1 << 3)
2263 #define S_DEAD (1 << 4)
2264 #define S_NOQUOTA (1 << 5)
2265 #define S_DIRSYNC (1 << 6)
2266 #define S_NOCMTIME (1 << 7)
2267 #define S_SWAPFILE (1 << 8)
2268 #define S_PRIVATE (1 << 9)
2269 #define S_IMA (1 << 10)
2270 #define S_AUTOMOUNT (1 << 11)
2271 #define S_NOSEC (1 << 12)
2272 #ifdef CONFIG_FS_DAX
2273 #define S_DAX (1 << 13)
2274 #else
2275 #define S_DAX 0
2276 #endif
2277 #define S_ENCRYPTED (1 << 14)
2278 #define S_CASEFOLD (1 << 15)
2279 #define S_VERITY (1 << 16)
2280 #define S_KERNEL_FILE (1 << 17)
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295 #define __IS_FLG(inode, flg) ((inode)->i_sb->s_flags & (flg))
2296
2297 static inline bool sb_rdonly(const struct super_block *sb) { return sb->s_flags & SB_RDONLY; }
2298 #define IS_RDONLY(inode) sb_rdonly((inode)->i_sb)
2299 #define IS_SYNC(inode) (__IS_FLG(inode, SB_SYNCHRONOUS) || \
2300 ((inode)->i_flags & S_SYNC))
2301 #define IS_DIRSYNC(inode) (__IS_FLG(inode, SB_SYNCHRONOUS|SB_DIRSYNC) || \
2302 ((inode)->i_flags & (S_SYNC|S_DIRSYNC)))
2303 #define IS_MANDLOCK(inode) __IS_FLG(inode, SB_MANDLOCK)
2304 #define IS_NOATIME(inode) __IS_FLG(inode, SB_RDONLY|SB_NOATIME)
2305 #define IS_I_VERSION(inode) __IS_FLG(inode, SB_I_VERSION)
2306
2307 #define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA)
2308 #define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
2309 #define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
2310 #define IS_POSIXACL(inode) __IS_FLG(inode, SB_POSIXACL)
2311
2312 #define IS_DEADDIR(inode) ((inode)->i_flags & S_DEAD)
2313 #define IS_NOCMTIME(inode) ((inode)->i_flags & S_NOCMTIME)
2314 #define IS_SWAPFILE(inode) ((inode)->i_flags & S_SWAPFILE)
2315 #define IS_PRIVATE(inode) ((inode)->i_flags & S_PRIVATE)
2316 #define IS_IMA(inode) ((inode)->i_flags & S_IMA)
2317 #define IS_AUTOMOUNT(inode) ((inode)->i_flags & S_AUTOMOUNT)
2318 #define IS_NOSEC(inode) ((inode)->i_flags & S_NOSEC)
2319 #define IS_DAX(inode) ((inode)->i_flags & S_DAX)
2320 #define IS_ENCRYPTED(inode) ((inode)->i_flags & S_ENCRYPTED)
2321 #define IS_CASEFOLDED(inode) ((inode)->i_flags & S_CASEFOLD)
2322 #define IS_VERITY(inode) ((inode)->i_flags & S_VERITY)
2323
2324 #define IS_WHITEOUT(inode) (S_ISCHR(inode->i_mode) && \
2325 (inode)->i_rdev == WHITEOUT_DEV)
2326
2327 static inline bool HAS_UNMAPPED_ID(struct user_namespace *mnt_userns,
2328 struct inode *inode)
2329 {
2330 return !vfsuid_valid(i_uid_into_vfsuid(mnt_userns, inode)) ||
2331 !vfsgid_valid(i_gid_into_vfsgid(mnt_userns, inode));
2332 }
2333
2334 static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
2335 {
2336 *kiocb = (struct kiocb) {
2337 .ki_filp = filp,
2338 .ki_flags = filp->f_iocb_flags,
2339 .ki_ioprio = get_current_ioprio(),
2340 };
2341 }
2342
2343 static inline void kiocb_clone(struct kiocb *kiocb, struct kiocb *kiocb_src,
2344 struct file *filp)
2345 {
2346 *kiocb = (struct kiocb) {
2347 .ki_filp = filp,
2348 .ki_flags = kiocb_src->ki_flags,
2349 .ki_ioprio = kiocb_src->ki_ioprio,
2350 .ki_pos = kiocb_src->ki_pos,
2351 };
2352 }
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433 #define I_DIRTY_SYNC (1 << 0)
2434 #define I_DIRTY_DATASYNC (1 << 1)
2435 #define I_DIRTY_PAGES (1 << 2)
2436 #define __I_NEW 3
2437 #define I_NEW (1 << __I_NEW)
2438 #define I_WILL_FREE (1 << 4)
2439 #define I_FREEING (1 << 5)
2440 #define I_CLEAR (1 << 6)
2441 #define __I_SYNC 7
2442 #define I_SYNC (1 << __I_SYNC)
2443 #define I_REFERENCED (1 << 8)
2444 #define __I_DIO_WAKEUP 9
2445 #define I_DIO_WAKEUP (1 << __I_DIO_WAKEUP)
2446 #define I_LINKABLE (1 << 10)
2447 #define I_DIRTY_TIME (1 << 11)
2448 #define I_WB_SWITCH (1 << 13)
2449 #define I_OVL_INUSE (1 << 14)
2450 #define I_CREATING (1 << 15)
2451 #define I_DONTCACHE (1 << 16)
2452 #define I_SYNC_QUEUED (1 << 17)
2453 #define I_PINNING_FSCACHE_WB (1 << 18)
2454
2455 #define I_DIRTY_INODE (I_DIRTY_SYNC | I_DIRTY_DATASYNC)
2456 #define I_DIRTY (I_DIRTY_INODE | I_DIRTY_PAGES)
2457 #define I_DIRTY_ALL (I_DIRTY | I_DIRTY_TIME)
2458
2459 extern void __mark_inode_dirty(struct inode *, int);
2460 static inline void mark_inode_dirty(struct inode *inode)
2461 {
2462 __mark_inode_dirty(inode, I_DIRTY);
2463 }
2464
2465 static inline void mark_inode_dirty_sync(struct inode *inode)
2466 {
2467 __mark_inode_dirty(inode, I_DIRTY_SYNC);
2468 }
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479 static inline bool inode_is_dirtytime_only(struct inode *inode)
2480 {
2481 return (inode->i_state & (I_DIRTY_TIME | I_NEW |
2482 I_FREEING | I_WILL_FREE)) == I_DIRTY_TIME;
2483 }
2484
2485 extern void inc_nlink(struct inode *inode);
2486 extern void drop_nlink(struct inode *inode);
2487 extern void clear_nlink(struct inode *inode);
2488 extern void set_nlink(struct inode *inode, unsigned int nlink);
2489
2490 static inline void inode_inc_link_count(struct inode *inode)
2491 {
2492 inc_nlink(inode);
2493 mark_inode_dirty(inode);
2494 }
2495
2496 static inline void inode_dec_link_count(struct inode *inode)
2497 {
2498 drop_nlink(inode);
2499 mark_inode_dirty(inode);
2500 }
2501
2502 enum file_time_flags {
2503 S_ATIME = 1,
2504 S_MTIME = 2,
2505 S_CTIME = 4,
2506 S_VERSION = 8,
2507 };
2508
2509 extern bool atime_needs_update(const struct path *, struct inode *);
2510 extern void touch_atime(const struct path *);
2511 int inode_update_time(struct inode *inode, struct timespec64 *time, int flags);
2512
2513 static inline void file_accessed(struct file *file)
2514 {
2515 if (!(file->f_flags & O_NOATIME))
2516 touch_atime(&file->f_path);
2517 }
2518
2519 extern int file_modified(struct file *file);
2520 int kiocb_modified(struct kiocb *iocb);
2521
2522 int sync_inode_metadata(struct inode *inode, int wait);
2523
2524 struct file_system_type {
2525 const char *name;
2526 int fs_flags;
2527 #define FS_REQUIRES_DEV 1
2528 #define FS_BINARY_MOUNTDATA 2
2529 #define FS_HAS_SUBTYPE 4
2530 #define FS_USERNS_MOUNT 8
2531 #define FS_DISALLOW_NOTIFY_PERM 16
2532 #define FS_ALLOW_IDMAP 32
2533 #define FS_RENAME_DOES_D_MOVE 32768
2534 int (*init_fs_context)(struct fs_context *);
2535 const struct fs_parameter_spec *parameters;
2536 struct dentry *(*mount) (struct file_system_type *, int,
2537 const char *, void *);
2538 void (*kill_sb) (struct super_block *);
2539 struct module *owner;
2540 struct file_system_type * next;
2541 struct hlist_head fs_supers;
2542
2543 struct lock_class_key s_lock_key;
2544 struct lock_class_key s_umount_key;
2545 struct lock_class_key s_vfs_rename_key;
2546 struct lock_class_key s_writers_key[SB_FREEZE_LEVELS];
2547
2548 struct lock_class_key i_lock_key;
2549 struct lock_class_key i_mutex_key;
2550 struct lock_class_key invalidate_lock_key;
2551 struct lock_class_key i_mutex_dir_key;
2552 };
2553
2554 #define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)
2555
2556 extern struct dentry *mount_bdev(struct file_system_type *fs_type,
2557 int flags, const char *dev_name, void *data,
2558 int (*fill_super)(struct super_block *, void *, int));
2559 extern struct dentry *mount_single(struct file_system_type *fs_type,
2560 int flags, void *data,
2561 int (*fill_super)(struct super_block *, void *, int));
2562 extern struct dentry *mount_nodev(struct file_system_type *fs_type,
2563 int flags, void *data,
2564 int (*fill_super)(struct super_block *, void *, int));
2565 extern struct dentry *mount_subtree(struct vfsmount *mnt, const char *path);
2566 void retire_super(struct super_block *sb);
2567 void generic_shutdown_super(struct super_block *sb);
2568 void kill_block_super(struct super_block *sb);
2569 void kill_anon_super(struct super_block *sb);
2570 void kill_litter_super(struct super_block *sb);
2571 void deactivate_super(struct super_block *sb);
2572 void deactivate_locked_super(struct super_block *sb);
2573 int set_anon_super(struct super_block *s, void *data);
2574 int set_anon_super_fc(struct super_block *s, struct fs_context *fc);
2575 int get_anon_bdev(dev_t *);
2576 void free_anon_bdev(dev_t);
2577 struct super_block *sget_fc(struct fs_context *fc,
2578 int (*test)(struct super_block *, struct fs_context *),
2579 int (*set)(struct super_block *, struct fs_context *));
2580 struct super_block *sget(struct file_system_type *type,
2581 int (*test)(struct super_block *,void *),
2582 int (*set)(struct super_block *,void *),
2583 int flags, void *data);
2584
2585
2586 #define fops_get(fops) \
2587 (((fops) && try_module_get((fops)->owner) ? (fops) : NULL))
2588 #define fops_put(fops) \
2589 do { if (fops) module_put((fops)->owner); } while(0)
2590
2591
2592
2593
2594
2595 #define replace_fops(f, fops) \
2596 do { \
2597 struct file *__file = (f); \
2598 fops_put(__file->f_op); \
2599 BUG_ON(!(__file->f_op = (fops))); \
2600 } while(0)
2601
2602 extern int register_filesystem(struct file_system_type *);
2603 extern int unregister_filesystem(struct file_system_type *);
2604 extern int vfs_statfs(const struct path *, struct kstatfs *);
2605 extern int user_statfs(const char __user *, struct kstatfs *);
2606 extern int fd_statfs(int, struct kstatfs *);
2607 extern int freeze_super(struct super_block *super);
2608 extern int thaw_super(struct super_block *super);
2609 extern __printf(2, 3)
2610 int super_setup_bdi_name(struct super_block *sb, char *fmt, ...);
2611 extern int super_setup_bdi(struct super_block *sb);
2612
2613 extern int current_umask(void);
2614
2615 extern void ihold(struct inode * inode);
2616 extern void iput(struct inode *);
2617 extern int generic_update_time(struct inode *, struct timespec64 *, int);
2618
2619
2620 extern struct kobject *fs_kobj;
2621
2622 #define MAX_RW_COUNT (INT_MAX & PAGE_MASK)
2623
2624 #ifdef CONFIG_FILE_LOCKING
2625 static inline int break_lease(struct inode *inode, unsigned int mode)
2626 {
2627
2628
2629
2630
2631
2632
2633 smp_mb();
2634 if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))
2635 return __break_lease(inode, mode, FL_LEASE);
2636 return 0;
2637 }
2638
2639 static inline int break_deleg(struct inode *inode, unsigned int mode)
2640 {
2641
2642
2643
2644
2645
2646
2647 smp_mb();
2648 if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))
2649 return __break_lease(inode, mode, FL_DELEG);
2650 return 0;
2651 }
2652
2653 static inline int try_break_deleg(struct inode *inode, struct inode **delegated_inode)
2654 {
2655 int ret;
2656
2657 ret = break_deleg(inode, O_WRONLY|O_NONBLOCK);
2658 if (ret == -EWOULDBLOCK && delegated_inode) {
2659 *delegated_inode = inode;
2660 ihold(inode);
2661 }
2662 return ret;
2663 }
2664
2665 static inline int break_deleg_wait(struct inode **delegated_inode)
2666 {
2667 int ret;
2668
2669 ret = break_deleg(*delegated_inode, O_WRONLY);
2670 iput(*delegated_inode);
2671 *delegated_inode = NULL;
2672 return ret;
2673 }
2674
2675 static inline int break_layout(struct inode *inode, bool wait)
2676 {
2677 smp_mb();
2678 if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))
2679 return __break_lease(inode,
2680 wait ? O_WRONLY : O_WRONLY | O_NONBLOCK,
2681 FL_LAYOUT);
2682 return 0;
2683 }
2684
2685 #else
2686 static inline int break_lease(struct inode *inode, unsigned int mode)
2687 {
2688 return 0;
2689 }
2690
2691 static inline int break_deleg(struct inode *inode, unsigned int mode)
2692 {
2693 return 0;
2694 }
2695
2696 static inline int try_break_deleg(struct inode *inode, struct inode **delegated_inode)
2697 {
2698 return 0;
2699 }
2700
2701 static inline int break_deleg_wait(struct inode **delegated_inode)
2702 {
2703 BUG();
2704 return 0;
2705 }
2706
2707 static inline int break_layout(struct inode *inode, bool wait)
2708 {
2709 return 0;
2710 }
2711
2712 #endif
2713
2714
2715 struct audit_names;
2716 struct filename {
2717 const char *name;
2718 const __user char *uptr;
2719 int refcnt;
2720 struct audit_names *aname;
2721 const char iname[];
2722 };
2723 static_assert(offsetof(struct filename, iname) % sizeof(long) == 0);
2724
2725 static inline struct user_namespace *file_mnt_user_ns(struct file *file)
2726 {
2727 return mnt_user_ns(file->f_path.mnt);
2728 }
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739 static inline bool is_idmapped_mnt(const struct vfsmount *mnt)
2740 {
2741 return mnt_user_ns(mnt) != mnt->mnt_sb->s_user_ns;
2742 }
2743
2744 extern long vfs_truncate(const struct path *, loff_t);
2745 int do_truncate(struct user_namespace *, struct dentry *, loff_t start,
2746 unsigned int time_attrs, struct file *filp);
2747 extern int vfs_fallocate(struct file *file, int mode, loff_t offset,
2748 loff_t len);
2749 extern long do_sys_open(int dfd, const char __user *filename, int flags,
2750 umode_t mode);
2751 extern struct file *file_open_name(struct filename *, int, umode_t);
2752 extern struct file *filp_open(const char *, int, umode_t);
2753 extern struct file *file_open_root(const struct path *,
2754 const char *, int, umode_t);
2755 static inline struct file *file_open_root_mnt(struct vfsmount *mnt,
2756 const char *name, int flags, umode_t mode)
2757 {
2758 return file_open_root(&(struct path){.mnt = mnt, .dentry = mnt->mnt_root},
2759 name, flags, mode);
2760 }
2761 extern struct file * dentry_open(const struct path *, int, const struct cred *);
2762 extern struct file *dentry_create(const struct path *path, int flags,
2763 umode_t mode, const struct cred *cred);
2764 extern struct file * open_with_fake_path(const struct path *, int,
2765 struct inode*, const struct cred *);
2766 static inline struct file *file_clone_open(struct file *file)
2767 {
2768 return dentry_open(&file->f_path, file->f_flags, file->f_cred);
2769 }
2770 extern int filp_close(struct file *, fl_owner_t id);
2771
2772 extern struct filename *getname_flags(const char __user *, int, int *);
2773 extern struct filename *getname_uflags(const char __user *, int);
2774 extern struct filename *getname(const char __user *);
2775 extern struct filename *getname_kernel(const char *);
2776 extern void putname(struct filename *name);
2777
2778 extern int finish_open(struct file *file, struct dentry *dentry,
2779 int (*open)(struct inode *, struct file *));
2780 extern int finish_no_open(struct file *file, struct dentry *dentry);
2781
2782
2783 extern void __init vfs_caches_init_early(void);
2784 extern void __init vfs_caches_init(void);
2785
2786 extern struct kmem_cache *names_cachep;
2787
2788 #define __getname() kmem_cache_alloc(names_cachep, GFP_KERNEL)
2789 #define __putname(name) kmem_cache_free(names_cachep, (void *)(name))
2790
2791 extern struct super_block *blockdev_superblock;
2792 static inline bool sb_is_blkdev_sb(struct super_block *sb)
2793 {
2794 return IS_ENABLED(CONFIG_BLOCK) && sb == blockdev_superblock;
2795 }
2796
2797 void emergency_thaw_all(void);
2798 extern int sync_filesystem(struct super_block *);
2799 extern const struct file_operations def_blk_fops;
2800 extern const struct file_operations def_chr_fops;
2801
2802
2803 #define CHRDEV_MAJOR_MAX 512
2804
2805 #define CHRDEV_MAJOR_DYN_END 234
2806
2807 #define CHRDEV_MAJOR_DYN_EXT_START 511
2808 #define CHRDEV_MAJOR_DYN_EXT_END 384
2809
2810 extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *);
2811 extern int register_chrdev_region(dev_t, unsigned, const char *);
2812 extern int __register_chrdev(unsigned int major, unsigned int baseminor,
2813 unsigned int count, const char *name,
2814 const struct file_operations *fops);
2815 extern void __unregister_chrdev(unsigned int major, unsigned int baseminor,
2816 unsigned int count, const char *name);
2817 extern void unregister_chrdev_region(dev_t, unsigned);
2818 extern void chrdev_show(struct seq_file *,off_t);
2819
2820 static inline int register_chrdev(unsigned int major, const char *name,
2821 const struct file_operations *fops)
2822 {
2823 return __register_chrdev(major, 0, 256, name, fops);
2824 }
2825
2826 static inline void unregister_chrdev(unsigned int major, const char *name)
2827 {
2828 __unregister_chrdev(major, 0, 256, name);
2829 }
2830
2831 extern void init_special_inode(struct inode *, umode_t, dev_t);
2832
2833
2834 extern void make_bad_inode(struct inode *);
2835 extern bool is_bad_inode(struct inode *);
2836
2837 extern int __must_check file_fdatawait_range(struct file *file, loff_t lstart,
2838 loff_t lend);
2839 extern int __must_check file_check_and_advance_wb_err(struct file *file);
2840 extern int __must_check file_write_and_wait_range(struct file *file,
2841 loff_t start, loff_t end);
2842
2843 static inline int file_write_and_wait(struct file *file)
2844 {
2845 return file_write_and_wait_range(file, 0, LLONG_MAX);
2846 }
2847
2848 extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end,
2849 int datasync);
2850 extern int vfs_fsync(struct file *file, int datasync);
2851
2852 extern int sync_file_range(struct file *file, loff_t offset, loff_t nbytes,
2853 unsigned int flags);
2854
2855 static inline bool iocb_is_dsync(const struct kiocb *iocb)
2856 {
2857 return (iocb->ki_flags & IOCB_DSYNC) ||
2858 IS_SYNC(iocb->ki_filp->f_mapping->host);
2859 }
2860
2861
2862
2863
2864
2865
2866 static inline ssize_t generic_write_sync(struct kiocb *iocb, ssize_t count)
2867 {
2868 if (iocb_is_dsync(iocb)) {
2869 int ret = vfs_fsync_range(iocb->ki_filp,
2870 iocb->ki_pos - count, iocb->ki_pos - 1,
2871 (iocb->ki_flags & IOCB_SYNC) ? 0 : 1);
2872 if (ret)
2873 return ret;
2874 }
2875
2876 return count;
2877 }
2878
2879 extern void emergency_sync(void);
2880 extern void emergency_remount(void);
2881
2882 #ifdef CONFIG_BLOCK
2883 extern int bmap(struct inode *inode, sector_t *block);
2884 #else
2885 static inline int bmap(struct inode *inode, sector_t *block)
2886 {
2887 return -EINVAL;
2888 }
2889 #endif
2890
2891 int notify_change(struct user_namespace *, struct dentry *,
2892 struct iattr *, struct inode **);
2893 int inode_permission(struct user_namespace *, struct inode *, int);
2894 int generic_permission(struct user_namespace *, struct inode *, int);
2895 static inline int file_permission(struct file *file, int mask)
2896 {
2897 return inode_permission(file_mnt_user_ns(file),
2898 file_inode(file), mask);
2899 }
2900 static inline int path_permission(const struct path *path, int mask)
2901 {
2902 return inode_permission(mnt_user_ns(path->mnt),
2903 d_inode(path->dentry), mask);
2904 }
2905 int __check_sticky(struct user_namespace *mnt_userns, struct inode *dir,
2906 struct inode *inode);
2907
2908 static inline bool execute_ok(struct inode *inode)
2909 {
2910 return (inode->i_mode & S_IXUGO) || S_ISDIR(inode->i_mode);
2911 }
2912
2913 static inline bool inode_wrong_type(const struct inode *inode, umode_t mode)
2914 {
2915 return (inode->i_mode ^ mode) & S_IFMT;
2916 }
2917
2918 static inline void file_start_write(struct file *file)
2919 {
2920 if (!S_ISREG(file_inode(file)->i_mode))
2921 return;
2922 sb_start_write(file_inode(file)->i_sb);
2923 }
2924
2925 static inline bool file_start_write_trylock(struct file *file)
2926 {
2927 if (!S_ISREG(file_inode(file)->i_mode))
2928 return true;
2929 return sb_start_write_trylock(file_inode(file)->i_sb);
2930 }
2931
2932 static inline void file_end_write(struct file *file)
2933 {
2934 if (!S_ISREG(file_inode(file)->i_mode))
2935 return;
2936 __sb_end_write(file_inode(file)->i_sb, SB_FREEZE_WRITE);
2937 }
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960 static inline int get_write_access(struct inode *inode)
2961 {
2962 return atomic_inc_unless_negative(&inode->i_writecount) ? 0 : -ETXTBSY;
2963 }
2964 static inline int deny_write_access(struct file *file)
2965 {
2966 struct inode *inode = file_inode(file);
2967 return atomic_dec_unless_positive(&inode->i_writecount) ? 0 : -ETXTBSY;
2968 }
2969 static inline void put_write_access(struct inode * inode)
2970 {
2971 atomic_dec(&inode->i_writecount);
2972 }
2973 static inline void allow_write_access(struct file *file)
2974 {
2975 if (file)
2976 atomic_inc(&file_inode(file)->i_writecount);
2977 }
2978 static inline bool inode_is_open_for_write(const struct inode *inode)
2979 {
2980 return atomic_read(&inode->i_writecount) > 0;
2981 }
2982
2983 #if defined(CONFIG_IMA) || defined(CONFIG_FILE_LOCKING)
2984 static inline void i_readcount_dec(struct inode *inode)
2985 {
2986 BUG_ON(!atomic_read(&inode->i_readcount));
2987 atomic_dec(&inode->i_readcount);
2988 }
2989 static inline void i_readcount_inc(struct inode *inode)
2990 {
2991 atomic_inc(&inode->i_readcount);
2992 }
2993 #else
2994 static inline void i_readcount_dec(struct inode *inode)
2995 {
2996 return;
2997 }
2998 static inline void i_readcount_inc(struct inode *inode)
2999 {
3000 return;
3001 }
3002 #endif
3003 extern int do_pipe_flags(int *, int);
3004
3005 extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
3006 ssize_t __kernel_read(struct file *file, void *buf, size_t count, loff_t *pos);
3007 extern ssize_t kernel_write(struct file *, const void *, size_t, loff_t *);
3008 extern ssize_t __kernel_write(struct file *, const void *, size_t, loff_t *);
3009 extern struct file * open_exec(const char *);
3010
3011
3012 extern bool is_subdir(struct dentry *, struct dentry *);
3013 extern bool path_is_under(const struct path *, const struct path *);
3014
3015 extern char *file_path(struct file *, char *, int);
3016
3017 #include <linux/err.h>
3018
3019
3020 extern loff_t default_llseek(struct file *file, loff_t offset, int whence);
3021
3022 extern loff_t vfs_llseek(struct file *file, loff_t offset, int whence);
3023
3024 extern int inode_init_always(struct super_block *, struct inode *);
3025 extern void inode_init_once(struct inode *);
3026 extern void address_space_init_once(struct address_space *mapping);
3027 extern struct inode * igrab(struct inode *);
3028 extern ino_t iunique(struct super_block *, ino_t);
3029 extern int inode_needs_sync(struct inode *inode);
3030 extern int generic_delete_inode(struct inode *inode);
3031 static inline int generic_drop_inode(struct inode *inode)
3032 {
3033 return !inode->i_nlink || inode_unhashed(inode);
3034 }
3035 extern void d_mark_dontcache(struct inode *inode);
3036
3037 extern struct inode *ilookup5_nowait(struct super_block *sb,
3038 unsigned long hashval, int (*test)(struct inode *, void *),
3039 void *data);
3040 extern struct inode *ilookup5(struct super_block *sb, unsigned long hashval,
3041 int (*test)(struct inode *, void *), void *data);
3042 extern struct inode *ilookup(struct super_block *sb, unsigned long ino);
3043
3044 extern struct inode *inode_insert5(struct inode *inode, unsigned long hashval,
3045 int (*test)(struct inode *, void *),
3046 int (*set)(struct inode *, void *),
3047 void *data);
3048 extern struct inode * iget5_locked(struct super_block *, unsigned long, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *);
3049 extern struct inode * iget_locked(struct super_block *, unsigned long);
3050 extern struct inode *find_inode_nowait(struct super_block *,
3051 unsigned long,
3052 int (*match)(struct inode *,
3053 unsigned long, void *),
3054 void *data);
3055 extern struct inode *find_inode_rcu(struct super_block *, unsigned long,
3056 int (*)(struct inode *, void *), void *);
3057 extern struct inode *find_inode_by_ino_rcu(struct super_block *, unsigned long);
3058 extern int insert_inode_locked4(struct inode *, unsigned long, int (*test)(struct inode *, void *), void *);
3059 extern int insert_inode_locked(struct inode *);
3060 #ifdef CONFIG_DEBUG_LOCK_ALLOC
3061 extern void lockdep_annotate_inode_mutex_key(struct inode *inode);
3062 #else
3063 static inline void lockdep_annotate_inode_mutex_key(struct inode *inode) { };
3064 #endif
3065 extern void unlock_new_inode(struct inode *);
3066 extern void discard_new_inode(struct inode *);
3067 extern unsigned int get_next_ino(void);
3068 extern void evict_inodes(struct super_block *sb);
3069 void dump_mapping(const struct address_space *);
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081 static inline bool is_zero_ino(ino_t ino)
3082 {
3083 return (u32)ino == 0;
3084 }
3085
3086 extern void __iget(struct inode * inode);
3087 extern void iget_failed(struct inode *);
3088 extern void clear_inode(struct inode *);
3089 extern void __destroy_inode(struct inode *);
3090 extern struct inode *new_inode_pseudo(struct super_block *sb);
3091 extern struct inode *new_inode(struct super_block *sb);
3092 extern void free_inode_nonrcu(struct inode *inode);
3093 extern int should_remove_suid(struct dentry *);
3094 extern int file_remove_privs(struct file *);
3095
3096
3097
3098
3099
3100 static inline void *
3101 alloc_inode_sb(struct super_block *sb, struct kmem_cache *cache, gfp_t gfp)
3102 {
3103 return kmem_cache_alloc_lru(cache, &sb->s_inode_lru, gfp);
3104 }
3105
3106 extern void __insert_inode_hash(struct inode *, unsigned long hashval);
3107 static inline void insert_inode_hash(struct inode *inode)
3108 {
3109 __insert_inode_hash(inode, inode->i_ino);
3110 }
3111
3112 extern void __remove_inode_hash(struct inode *);
3113 static inline void remove_inode_hash(struct inode *inode)
3114 {
3115 if (!inode_unhashed(inode) && !hlist_fake(&inode->i_hash))
3116 __remove_inode_hash(inode);
3117 }
3118
3119 extern void inode_sb_list_add(struct inode *inode);
3120 extern void inode_add_lru(struct inode *inode);
3121
3122 extern int sb_set_blocksize(struct super_block *, int);
3123 extern int sb_min_blocksize(struct super_block *, int);
3124
3125 extern int generic_file_mmap(struct file *, struct vm_area_struct *);
3126 extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *);
3127 extern ssize_t generic_write_checks(struct kiocb *, struct iov_iter *);
3128 int generic_write_checks_count(struct kiocb *iocb, loff_t *count);
3129 extern int generic_write_check_limits(struct file *file, loff_t pos,
3130 loff_t *count);
3131 extern int generic_file_rw_checks(struct file *file_in, struct file *file_out);
3132 ssize_t filemap_read(struct kiocb *iocb, struct iov_iter *to,
3133 ssize_t already_read);
3134 extern ssize_t generic_file_read_iter(struct kiocb *, struct iov_iter *);
3135 extern ssize_t __generic_file_write_iter(struct kiocb *, struct iov_iter *);
3136 extern ssize_t generic_file_write_iter(struct kiocb *, struct iov_iter *);
3137 extern ssize_t generic_file_direct_write(struct kiocb *, struct iov_iter *);
3138 ssize_t generic_perform_write(struct kiocb *, struct iov_iter *);
3139
3140 ssize_t vfs_iter_read(struct file *file, struct iov_iter *iter, loff_t *ppos,
3141 rwf_t flags);
3142 ssize_t vfs_iter_write(struct file *file, struct iov_iter *iter, loff_t *ppos,
3143 rwf_t flags);
3144 ssize_t vfs_iocb_iter_read(struct file *file, struct kiocb *iocb,
3145 struct iov_iter *iter);
3146 ssize_t vfs_iocb_iter_write(struct file *file, struct kiocb *iocb,
3147 struct iov_iter *iter);
3148
3149
3150 extern ssize_t generic_file_splice_read(struct file *, loff_t *,
3151 struct pipe_inode_info *, size_t, unsigned int);
3152 extern ssize_t iter_file_splice_write(struct pipe_inode_info *,
3153 struct file *, loff_t *, size_t, unsigned int);
3154 extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe,
3155 struct file *out, loff_t *, size_t len, unsigned int flags);
3156 extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,
3157 loff_t *opos, size_t len, unsigned int flags);
3158
3159
3160 extern void
3161 file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
3162 extern loff_t noop_llseek(struct file *file, loff_t offset, int whence);
3163 #define no_llseek NULL
3164 extern loff_t vfs_setpos(struct file *file, loff_t offset, loff_t maxsize);
3165 extern loff_t generic_file_llseek(struct file *file, loff_t offset, int whence);
3166 extern loff_t generic_file_llseek_size(struct file *file, loff_t offset,
3167 int whence, loff_t maxsize, loff_t eof);
3168 extern loff_t fixed_size_llseek(struct file *file, loff_t offset,
3169 int whence, loff_t size);
3170 extern loff_t no_seek_end_llseek_size(struct file *, loff_t, int, loff_t);
3171 extern loff_t no_seek_end_llseek(struct file *, loff_t, int);
3172 int rw_verify_area(int, struct file *, const loff_t *, size_t);
3173 extern int generic_file_open(struct inode * inode, struct file * filp);
3174 extern int nonseekable_open(struct inode * inode, struct file * filp);
3175 extern int stream_open(struct inode * inode, struct file * filp);
3176
3177 #ifdef CONFIG_BLOCK
3178 typedef void (dio_submit_t)(struct bio *bio, struct inode *inode,
3179 loff_t file_offset);
3180
3181 enum {
3182
3183 DIO_LOCKING = 0x01,
3184
3185
3186 DIO_SKIP_HOLES = 0x02,
3187 };
3188
3189 ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
3190 struct block_device *bdev, struct iov_iter *iter,
3191 get_block_t get_block,
3192 dio_iodone_t end_io, dio_submit_t submit_io,
3193 int flags);
3194
3195 static inline ssize_t blockdev_direct_IO(struct kiocb *iocb,
3196 struct inode *inode,
3197 struct iov_iter *iter,
3198 get_block_t get_block)
3199 {
3200 return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, iter,
3201 get_block, NULL, NULL, DIO_LOCKING | DIO_SKIP_HOLES);
3202 }
3203 #endif
3204
3205 void inode_dio_wait(struct inode *inode);
3206
3207
3208
3209
3210
3211
3212
3213
3214 static inline void inode_dio_begin(struct inode *inode)
3215 {
3216 atomic_inc(&inode->i_dio_count);
3217 }
3218
3219
3220
3221
3222
3223
3224
3225
3226 static inline void inode_dio_end(struct inode *inode)
3227 {
3228 if (atomic_dec_and_test(&inode->i_dio_count))
3229 wake_up_bit(&inode->i_state, __I_DIO_WAKEUP);
3230 }
3231
3232
3233
3234
3235 void dio_warn_stale_pagecache(struct file *filp);
3236
3237 extern void inode_set_flags(struct inode *inode, unsigned int flags,
3238 unsigned int mask);
3239
3240 extern const struct file_operations generic_ro_fops;
3241
3242 #define special_file(m) (S_ISCHR(m)||S_ISBLK(m)||S_ISFIFO(m)||S_ISSOCK(m))
3243
3244 extern int readlink_copy(char __user *, int, const char *);
3245 extern int page_readlink(struct dentry *, char __user *, int);
3246 extern const char *page_get_link(struct dentry *, struct inode *,
3247 struct delayed_call *);
3248 extern void page_put_link(void *);
3249 extern int page_symlink(struct inode *inode, const char *symname, int len);
3250 extern const struct inode_operations page_symlink_inode_operations;
3251 extern void kfree_link(void *);
3252 void generic_fillattr(struct user_namespace *, struct inode *, struct kstat *);
3253 void generic_fill_statx_attr(struct inode *inode, struct kstat *stat);
3254 extern int vfs_getattr_nosec(const struct path *, struct kstat *, u32, unsigned int);
3255 extern int vfs_getattr(const struct path *, struct kstat *, u32, unsigned int);
3256 void __inode_add_bytes(struct inode *inode, loff_t bytes);
3257 void inode_add_bytes(struct inode *inode, loff_t bytes);
3258 void __inode_sub_bytes(struct inode *inode, loff_t bytes);
3259 void inode_sub_bytes(struct inode *inode, loff_t bytes);
3260 static inline loff_t __inode_get_bytes(struct inode *inode)
3261 {
3262 return (((loff_t)inode->i_blocks) << 9) + inode->i_bytes;
3263 }
3264 loff_t inode_get_bytes(struct inode *inode);
3265 void inode_set_bytes(struct inode *inode, loff_t bytes);
3266 const char *simple_get_link(struct dentry *, struct inode *,
3267 struct delayed_call *);
3268 extern const struct inode_operations simple_symlink_inode_operations;
3269
3270 extern int iterate_dir(struct file *, struct dir_context *);
3271
3272 int vfs_fstatat(int dfd, const char __user *filename, struct kstat *stat,
3273 int flags);
3274 int vfs_fstat(int fd, struct kstat *stat);
3275
3276 static inline int vfs_stat(const char __user *filename, struct kstat *stat)
3277 {
3278 return vfs_fstatat(AT_FDCWD, filename, stat, 0);
3279 }
3280 static inline int vfs_lstat(const char __user *name, struct kstat *stat)
3281 {
3282 return vfs_fstatat(AT_FDCWD, name, stat, AT_SYMLINK_NOFOLLOW);
3283 }
3284
3285 extern const char *vfs_get_link(struct dentry *, struct delayed_call *);
3286 extern int vfs_readlink(struct dentry *, char __user *, int);
3287
3288 extern struct file_system_type *get_filesystem(struct file_system_type *fs);
3289 extern void put_filesystem(struct file_system_type *fs);
3290 extern struct file_system_type *get_fs_type(const char *name);
3291 extern struct super_block *get_super(struct block_device *);
3292 extern struct super_block *get_active_super(struct block_device *bdev);
3293 extern void drop_super(struct super_block *sb);
3294 extern void drop_super_exclusive(struct super_block *sb);
3295 extern void iterate_supers(void (*)(struct super_block *, void *), void *);
3296 extern void iterate_supers_type(struct file_system_type *,
3297 void (*)(struct super_block *, void *), void *);
3298
3299 extern int dcache_dir_open(struct inode *, struct file *);
3300 extern int dcache_dir_close(struct inode *, struct file *);
3301 extern loff_t dcache_dir_lseek(struct file *, loff_t, int);
3302 extern int dcache_readdir(struct file *, struct dir_context *);
3303 extern int simple_setattr(struct user_namespace *, struct dentry *,
3304 struct iattr *);
3305 extern int simple_getattr(struct user_namespace *, const struct path *,
3306 struct kstat *, u32, unsigned int);
3307 extern int simple_statfs(struct dentry *, struct kstatfs *);
3308 extern int simple_open(struct inode *inode, struct file *file);
3309 extern int simple_link(struct dentry *, struct inode *, struct dentry *);
3310 extern int simple_unlink(struct inode *, struct dentry *);
3311 extern int simple_rmdir(struct inode *, struct dentry *);
3312 extern int simple_rename_exchange(struct inode *old_dir, struct dentry *old_dentry,
3313 struct inode *new_dir, struct dentry *new_dentry);
3314 extern int simple_rename(struct user_namespace *, struct inode *,
3315 struct dentry *, struct inode *, struct dentry *,
3316 unsigned int);
3317 extern void simple_recursive_removal(struct dentry *,
3318 void (*callback)(struct dentry *));
3319 extern int noop_fsync(struct file *, loff_t, loff_t, int);
3320 extern ssize_t noop_direct_IO(struct kiocb *iocb, struct iov_iter *iter);
3321 extern int simple_empty(struct dentry *);
3322 extern int simple_write_begin(struct file *file, struct address_space *mapping,
3323 loff_t pos, unsigned len,
3324 struct page **pagep, void **fsdata);
3325 extern const struct address_space_operations ram_aops;
3326 extern int always_delete_dentry(const struct dentry *);
3327 extern struct inode *alloc_anon_inode(struct super_block *);
3328 extern int simple_nosetlease(struct file *, long, struct file_lock **, void **);
3329 extern const struct dentry_operations simple_dentry_operations;
3330
3331 extern struct dentry *simple_lookup(struct inode *, struct dentry *, unsigned int flags);
3332 extern ssize_t generic_read_dir(struct file *, char __user *, size_t, loff_t *);
3333 extern const struct file_operations simple_dir_operations;
3334 extern const struct inode_operations simple_dir_inode_operations;
3335 extern void make_empty_dir_inode(struct inode *inode);
3336 extern bool is_empty_dir_inode(struct inode *inode);
3337 struct tree_descr { const char *name; const struct file_operations *ops; int mode; };
3338 struct dentry *d_alloc_name(struct dentry *, const char *);
3339 extern int simple_fill_super(struct super_block *, unsigned long,
3340 const struct tree_descr *);
3341 extern int simple_pin_fs(struct file_system_type *, struct vfsmount **mount, int *count);
3342 extern void simple_release_fs(struct vfsmount **mount, int *count);
3343
3344 extern ssize_t simple_read_from_buffer(void __user *to, size_t count,
3345 loff_t *ppos, const void *from, size_t available);
3346 extern ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos,
3347 const void __user *from, size_t count);
3348
3349 extern int __generic_file_fsync(struct file *, loff_t, loff_t, int);
3350 extern int generic_file_fsync(struct file *, loff_t, loff_t, int);
3351
3352 extern int generic_check_addressable(unsigned, u64);
3353
3354 extern void generic_set_encrypted_ci_d_ops(struct dentry *dentry);
3355
3356 int may_setattr(struct user_namespace *mnt_userns, struct inode *inode,
3357 unsigned int ia_valid);
3358 int setattr_prepare(struct user_namespace *, struct dentry *, struct iattr *);
3359 extern int inode_newsize_ok(const struct inode *, loff_t offset);
3360 void setattr_copy(struct user_namespace *, struct inode *inode,
3361 const struct iattr *attr);
3362
3363 extern int file_update_time(struct file *file);
3364
3365 static inline bool vma_is_dax(const struct vm_area_struct *vma)
3366 {
3367 return vma->vm_file && IS_DAX(vma->vm_file->f_mapping->host);
3368 }
3369
3370 static inline bool vma_is_fsdax(struct vm_area_struct *vma)
3371 {
3372 struct inode *inode;
3373
3374 if (!IS_ENABLED(CONFIG_FS_DAX) || !vma->vm_file)
3375 return false;
3376 if (!vma_is_dax(vma))
3377 return false;
3378 inode = file_inode(vma->vm_file);
3379 if (S_ISCHR(inode->i_mode))
3380 return false;
3381 return true;
3382 }
3383
3384 static inline int iocb_flags(struct file *file)
3385 {
3386 int res = 0;
3387 if (file->f_flags & O_APPEND)
3388 res |= IOCB_APPEND;
3389 if (file->f_flags & O_DIRECT)
3390 res |= IOCB_DIRECT;
3391 if (file->f_flags & O_DSYNC)
3392 res |= IOCB_DSYNC;
3393 if (file->f_flags & __O_SYNC)
3394 res |= IOCB_SYNC;
3395 return res;
3396 }
3397
3398 static inline int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags)
3399 {
3400 int kiocb_flags = 0;
3401
3402
3403 BUILD_BUG_ON((__force int) RWF_SUPPORTED & IOCB_EVENTFD);
3404
3405 if (!flags)
3406 return 0;
3407 if (unlikely(flags & ~RWF_SUPPORTED))
3408 return -EOPNOTSUPP;
3409
3410 if (flags & RWF_NOWAIT) {
3411 if (!(ki->ki_filp->f_mode & FMODE_NOWAIT))
3412 return -EOPNOTSUPP;
3413 kiocb_flags |= IOCB_NOIO;
3414 }
3415 kiocb_flags |= (__force int) (flags & RWF_SUPPORTED);
3416 if (flags & RWF_SYNC)
3417 kiocb_flags |= IOCB_DSYNC;
3418
3419 ki->ki_flags |= kiocb_flags;
3420 return 0;
3421 }
3422
3423 static inline ino_t parent_ino(struct dentry *dentry)
3424 {
3425 ino_t res;
3426
3427
3428
3429
3430
3431 spin_lock(&dentry->d_lock);
3432 res = dentry->d_parent->d_inode->i_ino;
3433 spin_unlock(&dentry->d_lock);
3434 return res;
3435 }
3436
3437
3438
3439
3440
3441
3442
3443 struct simple_transaction_argresp {
3444 ssize_t size;
3445 char data[];
3446 };
3447
3448 #define SIMPLE_TRANSACTION_LIMIT (PAGE_SIZE - sizeof(struct simple_transaction_argresp))
3449
3450 char *simple_transaction_get(struct file *file, const char __user *buf,
3451 size_t size);
3452 ssize_t simple_transaction_read(struct file *file, char __user *buf,
3453 size_t size, loff_t *pos);
3454 int simple_transaction_release(struct inode *inode, struct file *file);
3455
3456 void simple_transaction_set(struct file *file, size_t n);
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474 #define DEFINE_SIMPLE_ATTRIBUTE(__fops, __get, __set, __fmt) \
3475 static int __fops ## _open(struct inode *inode, struct file *file) \
3476 { \
3477 __simple_attr_check_format(__fmt, 0ull); \
3478 return simple_attr_open(inode, file, __get, __set, __fmt); \
3479 } \
3480 static const struct file_operations __fops = { \
3481 .owner = THIS_MODULE, \
3482 .open = __fops ## _open, \
3483 .release = simple_attr_release, \
3484 .read = simple_attr_read, \
3485 .write = simple_attr_write, \
3486 .llseek = generic_file_llseek, \
3487 }
3488
3489 static inline __printf(1, 2)
3490 void __simple_attr_check_format(const char *fmt, ...)
3491 {
3492
3493 }
3494
3495 int simple_attr_open(struct inode *inode, struct file *file,
3496 int (*get)(void *, u64 *), int (*set)(void *, u64),
3497 const char *fmt);
3498 int simple_attr_release(struct inode *inode, struct file *file);
3499 ssize_t simple_attr_read(struct file *file, char __user *buf,
3500 size_t len, loff_t *ppos);
3501 ssize_t simple_attr_write(struct file *file, const char __user *buf,
3502 size_t len, loff_t *ppos);
3503
3504 struct ctl_table;
3505 int __init list_bdev_fs_names(char *buf, size_t size);
3506
3507 #define __FMODE_EXEC ((__force int) FMODE_EXEC)
3508 #define __FMODE_NONOTIFY ((__force int) FMODE_NONOTIFY)
3509
3510 #define ACC_MODE(x) ("\004\002\006\006"[(x)&O_ACCMODE])
3511 #define OPEN_FMODE(flag) ((__force fmode_t)(((flag + 1) & O_ACCMODE) | \
3512 (flag & __FMODE_NONOTIFY)))
3513
3514 static inline bool is_sxid(umode_t mode)
3515 {
3516 return (mode & S_ISUID) || ((mode & S_ISGID) && (mode & S_IXGRP));
3517 }
3518
3519 static inline int check_sticky(struct user_namespace *mnt_userns,
3520 struct inode *dir, struct inode *inode)
3521 {
3522 if (!(dir->i_mode & S_ISVTX))
3523 return 0;
3524
3525 return __check_sticky(mnt_userns, dir, inode);
3526 }
3527
3528 static inline void inode_has_no_xattr(struct inode *inode)
3529 {
3530 if (!is_sxid(inode->i_mode) && (inode->i_sb->s_flags & SB_NOSEC))
3531 inode->i_flags |= S_NOSEC;
3532 }
3533
3534 static inline bool is_root_inode(struct inode *inode)
3535 {
3536 return inode == inode->i_sb->s_root->d_inode;
3537 }
3538
3539 static inline bool dir_emit(struct dir_context *ctx,
3540 const char *name, int namelen,
3541 u64 ino, unsigned type)
3542 {
3543 return ctx->actor(ctx, name, namelen, ctx->pos, ino, type) == 0;
3544 }
3545 static inline bool dir_emit_dot(struct file *file, struct dir_context *ctx)
3546 {
3547 return ctx->actor(ctx, ".", 1, ctx->pos,
3548 file->f_path.dentry->d_inode->i_ino, DT_DIR) == 0;
3549 }
3550 static inline bool dir_emit_dotdot(struct file *file, struct dir_context *ctx)
3551 {
3552 return ctx->actor(ctx, "..", 2, ctx->pos,
3553 parent_ino(file->f_path.dentry), DT_DIR) == 0;
3554 }
3555 static inline bool dir_emit_dots(struct file *file, struct dir_context *ctx)
3556 {
3557 if (ctx->pos == 0) {
3558 if (!dir_emit_dot(file, ctx))
3559 return false;
3560 ctx->pos = 1;
3561 }
3562 if (ctx->pos == 1) {
3563 if (!dir_emit_dotdot(file, ctx))
3564 return false;
3565 ctx->pos = 2;
3566 }
3567 return true;
3568 }
3569 static inline bool dir_relax(struct inode *inode)
3570 {
3571 inode_unlock(inode);
3572 inode_lock(inode);
3573 return !IS_DEADDIR(inode);
3574 }
3575
3576 static inline bool dir_relax_shared(struct inode *inode)
3577 {
3578 inode_unlock_shared(inode);
3579 inode_lock_shared(inode);
3580 return !IS_DEADDIR(inode);
3581 }
3582
3583 extern bool path_noexec(const struct path *path);
3584 extern void inode_nohighmem(struct inode *inode);
3585
3586
3587 extern int vfs_fadvise(struct file *file, loff_t offset, loff_t len,
3588 int advice);
3589 extern int generic_fadvise(struct file *file, loff_t offset, loff_t len,
3590 int advice);
3591
3592 #endif