1
2#ifndef _LINUX_FS_H
3#define _LINUX_FS_H
4
5#include <linux/linkage.h>
6#include <linux/wait_bit.h>
7#include <linux/kdev_t.h>
8#include <linux/dcache.h>
9#include <linux/path.h>
10#include <linux/stat.h>
11#include <linux/cache.h>
12#include <linux/list.h>
13#include <linux/list_lru.h>
14#include <linux/llist.h>
15#include <linux/radix-tree.h>
16#include <linux/xarray.h>
17#include <linux/rbtree.h>
18#include <linux/init.h>
19#include <linux/pid.h>
20#include <linux/bug.h>
21#include <linux/mutex.h>
22#include <linux/rwsem.h>
23#include <linux/mm_types.h>
24#include <linux/capability.h>
25#include <linux/semaphore.h>
26#include <linux/fcntl.h>
27#include <linux/rculist_bl.h>
28#include <linux/atomic.h>
29#include <linux/shrinker.h>
30#include <linux/migrate_mode.h>
31#include <linux/uidgid.h>
32#include <linux/lockdep.h>
33#include <linux/percpu-rwsem.h>
34#include <linux/workqueue.h>
35#include <linux/delayed_call.h>
36#include <linux/uuid.h>
37#include <linux/errseq.h>
38#include <linux/ioprio.h>
39#include <linux/fs_types.h>
40#include <linux/build_bug.h>
41#include <linux/stddef.h>
42#include <linux/mount.h>
43#include <linux/cred.h>
44
45#include <asm/byteorder.h>
46#include <uapi/linux/fs.h>
47
48struct backing_dev_info;
49struct bdi_writeback;
50struct bio;
51struct export_operations;
52struct fiemap_extent_info;
53struct hd_geometry;
54struct iovec;
55struct kiocb;
56struct kobject;
57struct pipe_inode_info;
58struct poll_table_struct;
59struct kstatfs;
60struct vm_area_struct;
61struct vfsmount;
62struct cred;
63struct swap_info_struct;
64struct seq_file;
65struct workqueue_struct;
66struct iov_iter;
67struct fscrypt_info;
68struct fscrypt_operations;
69struct fsverity_info;
70struct fsverity_operations;
71struct fs_context;
72struct fs_parameter_spec;
73struct fileattr;
74
75extern void __init inode_init(void);
76extern void __init inode_init_early(void);
77extern void __init files_init(void);
78extern void __init files_maxfiles_init(void);
79
80extern struct files_stat_struct files_stat;
81extern unsigned long get_max_files(void);
82extern unsigned int sysctl_nr_open;
83extern struct inodes_stat_t inodes_stat;
84extern int leases_enable, lease_break_time;
85extern int sysctl_protected_symlinks;
86extern int sysctl_protected_hardlinks;
87extern int sysctl_protected_fifos;
88extern int sysctl_protected_regular;
89
90typedef __kernel_rwf_t rwf_t;
91
92struct buffer_head;
93typedef int (get_block_t)(struct inode *inode, sector_t iblock,
94 struct buffer_head *bh_result, int create);
95typedef int (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
96 ssize_t bytes, void *private);
97
98#define MAY_EXEC 0x00000001
99#define MAY_WRITE 0x00000002
100#define MAY_READ 0x00000004
101#define MAY_APPEND 0x00000008
102#define MAY_ACCESS 0x00000010
103#define MAY_OPEN 0x00000020
104#define MAY_CHDIR 0x00000040
105
106#define MAY_NOT_BLOCK 0x00000080
107
108
109
110
111
112
113
114#define FMODE_READ ((__force fmode_t)0x1)
115
116#define FMODE_WRITE ((__force fmode_t)0x2)
117
118#define FMODE_LSEEK ((__force fmode_t)0x4)
119
120#define FMODE_PREAD ((__force fmode_t)0x8)
121
122#define FMODE_PWRITE ((__force fmode_t)0x10)
123
124#define FMODE_EXEC ((__force fmode_t)0x20)
125
126#define FMODE_NDELAY ((__force fmode_t)0x40)
127
128#define FMODE_EXCL ((__force fmode_t)0x80)
129
130
131#define FMODE_WRITE_IOCTL ((__force fmode_t)0x100)
132
133#define FMODE_32BITHASH ((__force fmode_t)0x200)
134
135#define FMODE_64BITHASH ((__force fmode_t)0x400)
136
137
138
139
140
141
142
143#define FMODE_NOCMTIME ((__force fmode_t)0x800)
144
145
146#define FMODE_RANDOM ((__force fmode_t)0x1000)
147
148
149#define FMODE_UNSIGNED_OFFSET ((__force fmode_t)0x2000)
150
151
152#define FMODE_PATH ((__force fmode_t)0x4000)
153
154
155#define FMODE_ATOMIC_POS ((__force fmode_t)0x8000)
156
157#define FMODE_WRITER ((__force fmode_t)0x10000)
158
159#define FMODE_CAN_READ ((__force fmode_t)0x20000)
160
161#define FMODE_CAN_WRITE ((__force fmode_t)0x40000)
162
163#define FMODE_OPENED ((__force fmode_t)0x80000)
164#define FMODE_CREATED ((__force fmode_t)0x100000)
165
166
167#define FMODE_STREAM ((__force fmode_t)0x200000)
168
169
170#define FMODE_NONOTIFY ((__force fmode_t)0x4000000)
171
172
173#define FMODE_NOWAIT ((__force fmode_t)0x8000000)
174
175
176#define FMODE_NEED_UNMOUNT ((__force fmode_t)0x10000000)
177
178
179#define FMODE_NOACCOUNT ((__force fmode_t)0x20000000)
180
181
182#define FMODE_BUF_RASYNC ((__force fmode_t)0x40000000)
183
184
185
186
187
188#define ATTR_MODE (1 << 0)
189#define ATTR_UID (1 << 1)
190#define ATTR_GID (1 << 2)
191#define ATTR_SIZE (1 << 3)
192#define ATTR_ATIME (1 << 4)
193#define ATTR_MTIME (1 << 5)
194#define ATTR_CTIME (1 << 6)
195#define ATTR_ATIME_SET (1 << 7)
196#define ATTR_MTIME_SET (1 << 8)
197#define ATTR_FORCE (1 << 9)
198#define ATTR_KILL_SUID (1 << 11)
199#define ATTR_KILL_SGID (1 << 12)
200#define ATTR_FILE (1 << 13)
201#define ATTR_KILL_PRIV (1 << 14)
202#define ATTR_OPEN (1 << 15)
203#define ATTR_TIMES_SET (1 << 16)
204#define ATTR_TOUCH (1 << 17)
205
206
207
208
209
210#define WHITEOUT_MODE 0
211#define WHITEOUT_DEV 0
212
213
214
215
216
217
218
219
220
221
222struct iattr {
223 unsigned int ia_valid;
224 umode_t ia_mode;
225 kuid_t ia_uid;
226 kgid_t ia_gid;
227 loff_t ia_size;
228 struct timespec64 ia_atime;
229 struct timespec64 ia_mtime;
230 struct timespec64 ia_ctime;
231
232
233
234
235
236
237 struct file *ia_file;
238};
239
240
241
242
243#include <linux/quota.h>
244
245
246
247
248
249#define FILESYSTEM_MAX_STACK_DEPTH 2
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277enum positive_aop_returns {
278 AOP_WRITEPAGE_ACTIVATE = 0x80000,
279 AOP_TRUNCATED_PAGE = 0x80001,
280};
281
282#define AOP_FLAG_CONT_EXPAND 0x0001
283#define AOP_FLAG_NOFS 0x0002
284
285
286
287
288
289
290struct page;
291struct address_space;
292struct writeback_control;
293struct readahead_control;
294
295
296
297
298
299enum rw_hint {
300 WRITE_LIFE_NOT_SET = 0,
301 WRITE_LIFE_NONE = RWH_WRITE_LIFE_NONE,
302 WRITE_LIFE_SHORT = RWH_WRITE_LIFE_SHORT,
303 WRITE_LIFE_MEDIUM = RWH_WRITE_LIFE_MEDIUM,
304 WRITE_LIFE_LONG = RWH_WRITE_LIFE_LONG,
305 WRITE_LIFE_EXTREME = RWH_WRITE_LIFE_EXTREME,
306};
307
308
309#define IOCB_HIPRI (__force int) RWF_HIPRI
310#define IOCB_DSYNC (__force int) RWF_DSYNC
311#define IOCB_SYNC (__force int) RWF_SYNC
312#define IOCB_NOWAIT (__force int) RWF_NOWAIT
313#define IOCB_APPEND (__force int) RWF_APPEND
314
315
316#define IOCB_EVENTFD (1 << 16)
317#define IOCB_DIRECT (1 << 17)
318#define IOCB_WRITE (1 << 18)
319
320#define IOCB_WAITQ (1 << 19)
321#define IOCB_NOIO (1 << 20)
322
323#define IOCB_ALLOC_CACHE (1 << 21)
324
325struct kiocb {
326 struct file *ki_filp;
327
328
329 randomized_struct_fields_start
330
331 loff_t ki_pos;
332 void (*ki_complete)(struct kiocb *iocb, long ret, long ret2);
333 void *private;
334 int ki_flags;
335 u16 ki_hint;
336 u16 ki_ioprio;
337 union {
338 unsigned int ki_cookie;
339 struct wait_page_queue *ki_waitq;
340 };
341
342 randomized_struct_fields_end
343};
344
345static inline bool is_sync_kiocb(struct kiocb *kiocb)
346{
347 return kiocb->ki_complete == NULL;
348}
349
350
351
352
353
354
355
356
357
358
359typedef struct {
360 size_t written;
361 size_t count;
362 union {
363 char __user *buf;
364 void *data;
365 } arg;
366 int error;
367} read_descriptor_t;
368
369typedef int (*read_actor_t)(read_descriptor_t *, struct page *,
370 unsigned long, unsigned long);
371
372struct address_space_operations {
373 int (*writepage)(struct page *page, struct writeback_control *wbc);
374 int (*readpage)(struct file *, struct page *);
375
376
377 int (*writepages)(struct address_space *, struct writeback_control *);
378
379
380 int (*set_page_dirty)(struct page *page);
381
382
383
384
385
386 int (*readpages)(struct file *filp, struct address_space *mapping,
387 struct list_head *pages, unsigned nr_pages);
388 void (*readahead)(struct readahead_control *);
389
390 int (*write_begin)(struct file *, struct address_space *mapping,
391 loff_t pos, unsigned len, unsigned flags,
392 struct page **pagep, void **fsdata);
393 int (*write_end)(struct file *, struct address_space *mapping,
394 loff_t pos, unsigned len, unsigned copied,
395 struct page *page, void *fsdata);
396
397
398 sector_t (*bmap)(struct address_space *, sector_t);
399 void (*invalidatepage) (struct page *, unsigned int, unsigned int);
400 int (*releasepage) (struct page *, gfp_t);
401 void (*freepage)(struct page *);
402 ssize_t (*direct_IO)(struct kiocb *, struct iov_iter *iter);
403
404
405
406
407 int (*migratepage) (struct address_space *,
408 struct page *, struct page *, enum migrate_mode);
409 bool (*isolate_page)(struct page *, isolate_mode_t);
410 void (*putback_page)(struct page *);
411 int (*launder_page) (struct page *);
412 int (*is_partially_uptodate) (struct page *, unsigned long,
413 unsigned long);
414 void (*is_dirty_writeback) (struct page *, bool *, bool *);
415 int (*error_remove_page)(struct address_space *, struct page *);
416
417
418 int (*swap_activate)(struct swap_info_struct *sis, struct file *file,
419 sector_t *span);
420 void (*swap_deactivate)(struct file *file);
421};
422
423extern const struct address_space_operations empty_aops;
424
425
426
427
428
429int pagecache_write_begin(struct file *, struct address_space *mapping,
430 loff_t pos, unsigned len, unsigned flags,
431 struct page **pagep, void **fsdata);
432
433int pagecache_write_end(struct file *, struct address_space *mapping,
434 loff_t pos, unsigned len, unsigned copied,
435 struct page *page, void *fsdata);
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459struct address_space {
460 struct inode *host;
461 struct xarray i_pages;
462 struct rw_semaphore invalidate_lock;
463 gfp_t gfp_mask;
464 atomic_t i_mmap_writable;
465#ifdef CONFIG_READ_ONLY_THP_FOR_FS
466
467 atomic_t nr_thps;
468#endif
469 struct rb_root_cached i_mmap;
470 struct rw_semaphore i_mmap_rwsem;
471 unsigned long nrpages;
472 pgoff_t writeback_index;
473 const struct address_space_operations *a_ops;
474 unsigned long flags;
475 errseq_t wb_err;
476 spinlock_t private_lock;
477 struct list_head private_list;
478 void *private_data;
479} __attribute__((aligned(sizeof(long)))) __randomize_layout;
480
481
482
483
484
485
486
487#define PAGECACHE_TAG_DIRTY XA_MARK_0
488#define PAGECACHE_TAG_WRITEBACK XA_MARK_1
489#define PAGECACHE_TAG_TOWRITE XA_MARK_2
490
491
492
493
494static inline bool mapping_tagged(struct address_space *mapping, xa_mark_t tag)
495{
496 return xa_marked(&mapping->i_pages, tag);
497}
498
499static inline void i_mmap_lock_write(struct address_space *mapping)
500{
501 down_write(&mapping->i_mmap_rwsem);
502}
503
504static inline int i_mmap_trylock_write(struct address_space *mapping)
505{
506 return down_write_trylock(&mapping->i_mmap_rwsem);
507}
508
509static inline void i_mmap_unlock_write(struct address_space *mapping)
510{
511 up_write(&mapping->i_mmap_rwsem);
512}
513
514static inline void i_mmap_lock_read(struct address_space *mapping)
515{
516 down_read(&mapping->i_mmap_rwsem);
517}
518
519static inline void i_mmap_unlock_read(struct address_space *mapping)
520{
521 up_read(&mapping->i_mmap_rwsem);
522}
523
524static inline void i_mmap_assert_locked(struct address_space *mapping)
525{
526 lockdep_assert_held(&mapping->i_mmap_rwsem);
527}
528
529static inline void i_mmap_assert_write_locked(struct address_space *mapping)
530{
531 lockdep_assert_held_write(&mapping->i_mmap_rwsem);
532}
533
534
535
536
537static inline int mapping_mapped(struct address_space *mapping)
538{
539 return !RB_EMPTY_ROOT(&mapping->i_mmap.rb_root);
540}
541
542
543
544
545
546
547
548
549
550
551static inline int mapping_writably_mapped(struct address_space *mapping)
552{
553 return atomic_read(&mapping->i_mmap_writable) > 0;
554}
555
556static inline int mapping_map_writable(struct address_space *mapping)
557{
558 return atomic_inc_unless_negative(&mapping->i_mmap_writable) ?
559 0 : -EPERM;
560}
561
562static inline void mapping_unmap_writable(struct address_space *mapping)
563{
564 atomic_dec(&mapping->i_mmap_writable);
565}
566
567static inline int mapping_deny_writable(struct address_space *mapping)
568{
569 return atomic_dec_unless_positive(&mapping->i_mmap_writable) ?
570 0 : -EBUSY;
571}
572
573static inline void mapping_allow_writable(struct address_space *mapping)
574{
575 atomic_inc(&mapping->i_mmap_writable);
576}
577
578
579
580
581#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
582#include <linux/seqlock.h>
583#define __NEED_I_SIZE_ORDERED
584#define i_size_ordered_init(inode) seqcount_init(&inode->i_size_seqcount)
585#else
586#define i_size_ordered_init(inode) do { } while (0)
587#endif
588
589struct posix_acl;
590#define ACL_NOT_CACHED ((void *)(-1))
591
592
593
594
595
596#define ACL_DONT_CACHE ((void *)(-3))
597
598static inline struct posix_acl *
599uncached_acl_sentinel(struct task_struct *task)
600{
601 return (void *)task + 1;
602}
603
604static inline bool
605is_uncached_acl(struct posix_acl *acl)
606{
607 return (long)acl & 1;
608}
609
610#define IOP_FASTPERM 0x0001
611#define IOP_LOOKUP 0x0002
612#define IOP_NOFOLLOW 0x0004
613#define IOP_XATTR 0x0008
614#define IOP_DEFAULT_READLINK 0x0010
615
616struct fsnotify_mark_connector;
617
618
619
620
621
622
623struct inode {
624 umode_t i_mode;
625 unsigned short i_opflags;
626 kuid_t i_uid;
627 kgid_t i_gid;
628 unsigned int i_flags;
629
630#ifdef CONFIG_FS_POSIX_ACL
631 struct posix_acl *i_acl;
632 struct posix_acl *i_default_acl;
633#endif
634
635 const struct inode_operations *i_op;
636 struct super_block *i_sb;
637 struct address_space *i_mapping;
638
639#ifdef CONFIG_SECURITY
640 void *i_security;
641#endif
642
643
644 unsigned long i_ino;
645
646
647
648
649
650
651
652 union {
653 const unsigned int i_nlink;
654 unsigned int __i_nlink;
655 };
656 dev_t i_rdev;
657 loff_t i_size;
658 struct timespec64 i_atime;
659 struct timespec64 i_mtime;
660 struct timespec64 i_ctime;
661 spinlock_t i_lock;
662 unsigned short i_bytes;
663 u8 i_blkbits;
664 u8 i_write_hint;
665 blkcnt_t i_blocks;
666
667#ifdef __NEED_I_SIZE_ORDERED
668 seqcount_t i_size_seqcount;
669#endif
670
671
672 unsigned long i_state;
673 struct rw_semaphore i_rwsem;
674
675 unsigned long dirtied_when;
676 unsigned long dirtied_time_when;
677
678 struct hlist_node i_hash;
679 struct list_head i_io_list;
680#ifdef CONFIG_CGROUP_WRITEBACK
681 struct bdi_writeback *i_wb;
682
683
684 int i_wb_frn_winner;
685 u16 i_wb_frn_avg_time;
686 u16 i_wb_frn_history;
687#endif
688 struct list_head i_lru;
689 struct list_head i_sb_list;
690 struct list_head i_wb_list;
691 union {
692 struct hlist_head i_dentry;
693 struct rcu_head i_rcu;
694 };
695 atomic64_t i_version;
696 atomic64_t i_sequence;
697 atomic_t i_count;
698 atomic_t i_dio_count;
699 atomic_t i_writecount;
700#if defined(CONFIG_IMA) || defined(CONFIG_FILE_LOCKING)
701 atomic_t i_readcount;
702#endif
703 union {
704 const struct file_operations *i_fop;
705 void (*free_inode)(struct inode *);
706 };
707 struct file_lock_context *i_flctx;
708 struct address_space i_data;
709 struct list_head i_devices;
710 union {
711 struct pipe_inode_info *i_pipe;
712 struct cdev *i_cdev;
713 char *i_link;
714 unsigned i_dir_seq;
715 };
716
717 __u32 i_generation;
718
719#ifdef CONFIG_FSNOTIFY
720 __u32 i_fsnotify_mask;
721 struct fsnotify_mark_connector __rcu *i_fsnotify_marks;
722#endif
723
724#ifdef CONFIG_FS_ENCRYPTION
725 struct fscrypt_info *i_crypt_info;
726#endif
727
728#ifdef CONFIG_FS_VERITY
729 struct fsverity_info *i_verity_info;
730#endif
731
732 void *i_private;
733} __randomize_layout;
734
735struct timespec64 timestamp_truncate(struct timespec64 t, struct inode *inode);
736
737static inline unsigned int i_blocksize(const struct inode *node)
738{
739 return (1 << node->i_blkbits);
740}
741
742static inline int inode_unhashed(struct inode *inode)
743{
744 return hlist_unhashed(&inode->i_hash);
745}
746
747
748
749
750
751
752
753static inline void inode_fake_hash(struct inode *inode)
754{
755 hlist_add_fake(&inode->i_hash);
756}
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774enum inode_i_mutex_lock_class
775{
776 I_MUTEX_NORMAL,
777 I_MUTEX_PARENT,
778 I_MUTEX_CHILD,
779 I_MUTEX_XATTR,
780 I_MUTEX_NONDIR2,
781 I_MUTEX_PARENT2,
782};
783
784static inline void inode_lock(struct inode *inode)
785{
786 down_write(&inode->i_rwsem);
787}
788
789static inline void inode_unlock(struct inode *inode)
790{
791 up_write(&inode->i_rwsem);
792}
793
794static inline void inode_lock_shared(struct inode *inode)
795{
796 down_read(&inode->i_rwsem);
797}
798
799static inline void inode_unlock_shared(struct inode *inode)
800{
801 up_read(&inode->i_rwsem);
802}
803
804static inline int inode_trylock(struct inode *inode)
805{
806 return down_write_trylock(&inode->i_rwsem);
807}
808
809static inline int inode_trylock_shared(struct inode *inode)
810{
811 return down_read_trylock(&inode->i_rwsem);
812}
813
814static inline int inode_is_locked(struct inode *inode)
815{
816 return rwsem_is_locked(&inode->i_rwsem);
817}
818
819static inline void inode_lock_nested(struct inode *inode, unsigned subclass)
820{
821 down_write_nested(&inode->i_rwsem, subclass);
822}
823
824static inline void inode_lock_shared_nested(struct inode *inode, unsigned subclass)
825{
826 down_read_nested(&inode->i_rwsem, subclass);
827}
828
829static inline void filemap_invalidate_lock(struct address_space *mapping)
830{
831 down_write(&mapping->invalidate_lock);
832}
833
834static inline void filemap_invalidate_unlock(struct address_space *mapping)
835{
836 up_write(&mapping->invalidate_lock);
837}
838
839static inline void filemap_invalidate_lock_shared(struct address_space *mapping)
840{
841 down_read(&mapping->invalidate_lock);
842}
843
844static inline int filemap_invalidate_trylock_shared(
845 struct address_space *mapping)
846{
847 return down_read_trylock(&mapping->invalidate_lock);
848}
849
850static inline void filemap_invalidate_unlock_shared(
851 struct address_space *mapping)
852{
853 up_read(&mapping->invalidate_lock);
854}
855
856void lock_two_nondirectories(struct inode *, struct inode*);
857void unlock_two_nondirectories(struct inode *, struct inode*);
858
859void filemap_invalidate_lock_two(struct address_space *mapping1,
860 struct address_space *mapping2);
861void filemap_invalidate_unlock_two(struct address_space *mapping1,
862 struct address_space *mapping2);
863
864
865
866
867
868
869
870
871
872
873
874
875static inline loff_t i_size_read(const struct inode *inode)
876{
877#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
878 loff_t i_size;
879 unsigned int seq;
880
881 do {
882 seq = read_seqcount_begin(&inode->i_size_seqcount);
883 i_size = inode->i_size;
884 } while (read_seqcount_retry(&inode->i_size_seqcount, seq));
885 return i_size;
886#elif BITS_PER_LONG==32 && defined(CONFIG_PREEMPTION)
887 loff_t i_size;
888
889 preempt_disable();
890 i_size = inode->i_size;
891 preempt_enable();
892 return i_size;
893#else
894 return inode->i_size;
895#endif
896}
897
898
899
900
901
902
903static inline void i_size_write(struct inode *inode, loff_t i_size)
904{
905#if BITS_PER_LONG==32 && defined(CONFIG_SMP)
906 preempt_disable();
907 write_seqcount_begin(&inode->i_size_seqcount);
908 inode->i_size = i_size;
909 write_seqcount_end(&inode->i_size_seqcount);
910 preempt_enable();
911#elif BITS_PER_LONG==32 && defined(CONFIG_PREEMPTION)
912 preempt_disable();
913 inode->i_size = i_size;
914 preempt_enable();
915#else
916 inode->i_size = i_size;
917#endif
918}
919
920static inline unsigned iminor(const struct inode *inode)
921{
922 return MINOR(inode->i_rdev);
923}
924
925static inline unsigned imajor(const struct inode *inode)
926{
927 return MAJOR(inode->i_rdev);
928}
929
930struct fown_struct {
931 rwlock_t lock;
932 struct pid *pid;
933 enum pid_type pid_type;
934 kuid_t uid, euid;
935 int signum;
936};
937
938
939
940
941
942
943
944
945
946
947struct file_ra_state {
948 pgoff_t start;
949 unsigned int size;
950 unsigned int async_size;
951 unsigned int ra_pages;
952 unsigned int mmap_miss;
953 loff_t prev_pos;
954};
955
956
957
958
959static inline int ra_has_index(struct file_ra_state *ra, pgoff_t index)
960{
961 return (index >= ra->start &&
962 index < ra->start + ra->size);
963}
964
965struct file {
966 union {
967 struct llist_node fu_llist;
968 struct rcu_head fu_rcuhead;
969 } f_u;
970 struct path f_path;
971 struct inode *f_inode;
972 const struct file_operations *f_op;
973
974
975
976
977
978 spinlock_t f_lock;
979 enum rw_hint f_write_hint;
980 atomic_long_t f_count;
981 unsigned int f_flags;
982 fmode_t f_mode;
983 struct mutex f_pos_lock;
984 loff_t f_pos;
985 struct fown_struct f_owner;
986 const struct cred *f_cred;
987 struct file_ra_state f_ra;
988
989 u64 f_version;
990#ifdef CONFIG_SECURITY
991 void *f_security;
992#endif
993
994 void *private_data;
995
996#ifdef CONFIG_EPOLL
997
998 struct hlist_head *f_ep;
999#endif
1000 struct address_space *f_mapping;
1001 errseq_t f_wb_err;
1002 errseq_t f_sb_err;
1003} __randomize_layout
1004 __attribute__((aligned(4)));
1005
1006struct file_handle {
1007 __u32 handle_bytes;
1008 int handle_type;
1009
1010 unsigned char f_handle[];
1011};
1012
1013static inline struct file *get_file(struct file *f)
1014{
1015 atomic_long_inc(&f->f_count);
1016 return f;
1017}
1018#define get_file_rcu_many(x, cnt) \
1019 atomic_long_add_unless(&(x)->f_count, (cnt), 0)
1020#define get_file_rcu(x) get_file_rcu_many((x), 1)
1021#define file_count(x) atomic_long_read(&(x)->f_count)
1022
1023#define MAX_NON_LFS ((1UL<<31) - 1)
1024
1025
1026
1027#if BITS_PER_LONG==32
1028#define MAX_LFS_FILESIZE ((loff_t)ULONG_MAX << PAGE_SHIFT)
1029#elif BITS_PER_LONG==64
1030#define MAX_LFS_FILESIZE ((loff_t)LLONG_MAX)
1031#endif
1032
1033#define FL_POSIX 1
1034#define FL_FLOCK 2
1035#define FL_DELEG 4
1036#define FL_ACCESS 8
1037#define FL_EXISTS 16
1038#define FL_LEASE 32
1039#define FL_CLOSE 64
1040#define FL_SLEEP 128
1041#define FL_DOWNGRADE_PENDING 256
1042#define FL_UNLOCK_PENDING 512
1043#define FL_OFDLCK 1024
1044#define FL_LAYOUT 2048
1045#define FL_RECLAIM 4096
1046
1047#define FL_CLOSE_POSIX (FL_POSIX | FL_CLOSE)
1048
1049
1050
1051
1052
1053#define FILE_LOCK_DEFERRED 1
1054
1055
1056typedef void *fl_owner_t;
1057
1058struct file_lock;
1059
1060struct file_lock_operations {
1061 void (*fl_copy_lock)(struct file_lock *, struct file_lock *);
1062 void (*fl_release_private)(struct file_lock *);
1063};
1064
1065struct lock_manager_operations {
1066 fl_owner_t (*lm_get_owner)(fl_owner_t);
1067 void (*lm_put_owner)(fl_owner_t);
1068 void (*lm_notify)(struct file_lock *);
1069 int (*lm_grant)(struct file_lock *, int);
1070 bool (*lm_break)(struct file_lock *);
1071 int (*lm_change)(struct file_lock *, int, struct list_head *);
1072 void (*lm_setup)(struct file_lock *, void **);
1073 bool (*lm_breaker_owns_lease)(struct file_lock *);
1074};
1075
1076struct lock_manager {
1077 struct list_head list;
1078
1079
1080
1081
1082 bool block_opens;
1083};
1084
1085struct net;
1086void locks_start_grace(struct net *, struct lock_manager *);
1087void locks_end_grace(struct lock_manager *);
1088bool locks_in_grace(struct net *);
1089bool opens_in_grace(struct net *);
1090
1091
1092#include <linux/nfs_fs_i.h>
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111struct file_lock {
1112 struct file_lock *fl_blocker;
1113 struct list_head fl_list;
1114 struct hlist_node fl_link;
1115 struct list_head fl_blocked_requests;
1116
1117
1118 struct list_head fl_blocked_member;
1119
1120
1121 fl_owner_t fl_owner;
1122 unsigned int fl_flags;
1123 unsigned char fl_type;
1124 unsigned int fl_pid;
1125 int fl_link_cpu;
1126 wait_queue_head_t fl_wait;
1127 struct file *fl_file;
1128 loff_t fl_start;
1129 loff_t fl_end;
1130
1131 struct fasync_struct * fl_fasync;
1132
1133 unsigned long fl_break_time;
1134 unsigned long fl_downgrade_time;
1135
1136 const struct file_lock_operations *fl_ops;
1137 const struct lock_manager_operations *fl_lmops;
1138 union {
1139 struct nfs_lock_info nfs_fl;
1140 struct nfs4_lock_info nfs4_fl;
1141 struct {
1142 struct list_head link;
1143 int state;
1144 unsigned int debug_id;
1145 } afs;
1146 } fl_u;
1147} __randomize_layout;
1148
1149struct file_lock_context {
1150 spinlock_t flc_lock;
1151 struct list_head flc_flock;
1152 struct list_head flc_posix;
1153 struct list_head flc_lease;
1154};
1155
1156
1157#ifndef OFFSET_MAX
1158#define INT_LIMIT(x) (~((x)1 << (sizeof(x)*8 - 1)))
1159#define OFFSET_MAX INT_LIMIT(loff_t)
1160#define OFFT_OFFSET_MAX INT_LIMIT(off_t)
1161#endif
1162
1163extern void send_sigio(struct fown_struct *fown, int fd, int band);
1164
1165#define locks_inode(f) file_inode(f)
1166
1167#ifdef CONFIG_FILE_LOCKING
1168extern int fcntl_getlk(struct file *, unsigned int, struct flock *);
1169extern int fcntl_setlk(unsigned int, struct file *, unsigned int,
1170 struct flock *);
1171
1172#if BITS_PER_LONG == 32
1173extern int fcntl_getlk64(struct file *, unsigned int, struct flock64 *);
1174extern int fcntl_setlk64(unsigned int, struct file *, unsigned int,
1175 struct flock64 *);
1176#endif
1177
1178extern int fcntl_setlease(unsigned int fd, struct file *filp, long arg);
1179extern int fcntl_getlease(struct file *filp);
1180
1181
1182void locks_free_lock_context(struct inode *inode);
1183void locks_free_lock(struct file_lock *fl);
1184extern void locks_init_lock(struct file_lock *);
1185extern struct file_lock * locks_alloc_lock(void);
1186extern void locks_copy_lock(struct file_lock *, struct file_lock *);
1187extern void locks_copy_conflock(struct file_lock *, struct file_lock *);
1188extern void locks_remove_posix(struct file *, fl_owner_t);
1189extern void locks_remove_file(struct file *);
1190extern void locks_release_private(struct file_lock *);
1191extern void posix_test_lock(struct file *, struct file_lock *);
1192extern int posix_lock_file(struct file *, struct file_lock *, struct file_lock *);
1193extern int locks_delete_block(struct file_lock *);
1194extern int vfs_test_lock(struct file *, struct file_lock *);
1195extern int vfs_lock_file(struct file *, unsigned int, struct file_lock *, struct file_lock *);
1196extern int vfs_cancel_lock(struct file *filp, struct file_lock *fl);
1197extern int locks_lock_inode_wait(struct inode *inode, struct file_lock *fl);
1198extern int __break_lease(struct inode *inode, unsigned int flags, unsigned int type);
1199extern void lease_get_mtime(struct inode *, struct timespec64 *time);
1200extern int generic_setlease(struct file *, long, struct file_lock **, void **priv);
1201extern int vfs_setlease(struct file *, long, struct file_lock **, void **);
1202extern int lease_modify(struct file_lock *, int, struct list_head *);
1203
1204struct notifier_block;
1205extern int lease_register_notifier(struct notifier_block *);
1206extern void lease_unregister_notifier(struct notifier_block *);
1207
1208struct files_struct;
1209extern void show_fd_locks(struct seq_file *f,
1210 struct file *filp, struct files_struct *files);
1211#else
1212static inline int fcntl_getlk(struct file *file, unsigned int cmd,
1213 struct flock __user *user)
1214{
1215 return -EINVAL;
1216}
1217
1218static inline int fcntl_setlk(unsigned int fd, struct file *file,
1219 unsigned int cmd, struct flock __user *user)
1220{
1221 return -EACCES;
1222}
1223
1224#if BITS_PER_LONG == 32
1225static inline int fcntl_getlk64(struct file *file, unsigned int cmd,
1226 struct flock64 __user *user)
1227{
1228 return -EINVAL;
1229}
1230
1231static inline int fcntl_setlk64(unsigned int fd, struct file *file,
1232 unsigned int cmd, struct flock64 __user *user)
1233{
1234 return -EACCES;
1235}
1236#endif
1237static inline int fcntl_setlease(unsigned int fd, struct file *filp, long arg)
1238{
1239 return -EINVAL;
1240}
1241
1242static inline int fcntl_getlease(struct file *filp)
1243{
1244 return F_UNLCK;
1245}
1246
1247static inline void
1248locks_free_lock_context(struct inode *inode)
1249{
1250}
1251
1252static inline void locks_init_lock(struct file_lock *fl)
1253{
1254 return;
1255}
1256
1257static inline void locks_copy_conflock(struct file_lock *new, struct file_lock *fl)
1258{
1259 return;
1260}
1261
1262static inline void locks_copy_lock(struct file_lock *new, struct file_lock *fl)
1263{
1264 return;
1265}
1266
1267static inline void locks_remove_posix(struct file *filp, fl_owner_t owner)
1268{
1269 return;
1270}
1271
1272static inline void locks_remove_file(struct file *filp)
1273{
1274 return;
1275}
1276
1277static inline void posix_test_lock(struct file *filp, struct file_lock *fl)
1278{
1279 return;
1280}
1281
1282static inline int posix_lock_file(struct file *filp, struct file_lock *fl,
1283 struct file_lock *conflock)
1284{
1285 return -ENOLCK;
1286}
1287
1288static inline int locks_delete_block(struct file_lock *waiter)
1289{
1290 return -ENOENT;
1291}
1292
1293static inline int vfs_test_lock(struct file *filp, struct file_lock *fl)
1294{
1295 return 0;
1296}
1297
1298static inline int vfs_lock_file(struct file *filp, unsigned int cmd,
1299 struct file_lock *fl, struct file_lock *conf)
1300{
1301 return -ENOLCK;
1302}
1303
1304static inline int vfs_cancel_lock(struct file *filp, struct file_lock *fl)
1305{
1306 return 0;
1307}
1308
1309static inline int locks_lock_inode_wait(struct inode *inode, struct file_lock *fl)
1310{
1311 return -ENOLCK;
1312}
1313
1314static inline int __break_lease(struct inode *inode, unsigned int mode, unsigned int type)
1315{
1316 return 0;
1317}
1318
1319static inline void lease_get_mtime(struct inode *inode,
1320 struct timespec64 *time)
1321{
1322 return;
1323}
1324
1325static inline int generic_setlease(struct file *filp, long arg,
1326 struct file_lock **flp, void **priv)
1327{
1328 return -EINVAL;
1329}
1330
1331static inline int vfs_setlease(struct file *filp, long arg,
1332 struct file_lock **lease, void **priv)
1333{
1334 return -EINVAL;
1335}
1336
1337static inline int lease_modify(struct file_lock *fl, int arg,
1338 struct list_head *dispose)
1339{
1340 return -EINVAL;
1341}
1342
1343struct files_struct;
1344static inline void show_fd_locks(struct seq_file *f,
1345 struct file *filp, struct files_struct *files) {}
1346#endif
1347
1348static inline struct inode *file_inode(const struct file *f)
1349{
1350 return f->f_inode;
1351}
1352
1353static inline struct dentry *file_dentry(const struct file *file)
1354{
1355 return d_real(file->f_path.dentry, file_inode(file));
1356}
1357
1358static inline int locks_lock_file_wait(struct file *filp, struct file_lock *fl)
1359{
1360 return locks_lock_inode_wait(locks_inode(filp), fl);
1361}
1362
1363struct fasync_struct {
1364 rwlock_t fa_lock;
1365 int magic;
1366 int fa_fd;
1367 struct fasync_struct *fa_next;
1368 struct file *fa_file;
1369 struct rcu_head fa_rcu;
1370};
1371
1372#define FASYNC_MAGIC 0x4601
1373
1374
1375extern int fasync_helper(int, struct file *, int, struct fasync_struct **);
1376extern struct fasync_struct *fasync_insert_entry(int, struct file *, struct fasync_struct **, struct fasync_struct *);
1377extern int fasync_remove_entry(struct file *, struct fasync_struct **);
1378extern struct fasync_struct *fasync_alloc(void);
1379extern void fasync_free(struct fasync_struct *);
1380
1381
1382extern void kill_fasync(struct fasync_struct **, int, int);
1383
1384extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
1385extern int f_setown(struct file *filp, unsigned long arg, int force);
1386extern void f_delown(struct file *filp);
1387extern pid_t f_getown(struct file *filp);
1388extern int send_sigurg(struct fown_struct *fown);
1389
1390
1391
1392
1393
1394#define SB_RDONLY 1
1395#define SB_NOSUID 2
1396#define SB_NODEV 4
1397#define SB_NOEXEC 8
1398#define SB_SYNCHRONOUS 16
1399#define SB_MANDLOCK 64
1400#define SB_DIRSYNC 128
1401#define SB_NOATIME 1024
1402#define SB_NODIRATIME 2048
1403#define SB_SILENT 32768
1404#define SB_POSIXACL (1<<16)
1405#define SB_INLINECRYPT (1<<17)
1406#define SB_KERNMOUNT (1<<22)
1407#define SB_I_VERSION (1<<23)
1408#define SB_LAZYTIME (1<<25)
1409
1410
1411#define SB_SUBMOUNT (1<<26)
1412#define SB_FORCE (1<<27)
1413#define SB_NOSEC (1<<28)
1414#define SB_BORN (1<<29)
1415#define SB_ACTIVE (1<<30)
1416#define SB_NOUSER (1<<31)
1417
1418
1419#define SB_ENC_STRICT_MODE_FL (1 << 0)
1420
1421#define sb_has_strict_encoding(sb) \
1422 (sb->s_encoding_flags & SB_ENC_STRICT_MODE_FL)
1423
1424
1425
1426
1427
1428#define MNT_FORCE 0x00000001
1429#define MNT_DETACH 0x00000002
1430#define MNT_EXPIRE 0x00000004
1431#define UMOUNT_NOFOLLOW 0x00000008
1432#define UMOUNT_UNUSED 0x80000000
1433
1434
1435#define SB_I_CGROUPWB 0x00000001
1436#define SB_I_NOEXEC 0x00000002
1437#define SB_I_NODEV 0x00000004
1438#define SB_I_STABLE_WRITES 0x00000008
1439
1440
1441#define SB_I_USERNS_VISIBLE 0x00000010
1442#define SB_I_IMA_UNVERIFIABLE_SIGNATURE 0x00000020
1443#define SB_I_UNTRUSTED_MOUNTER 0x00000040
1444
1445#define SB_I_SKIP_SYNC 0x00000100
1446
1447
1448enum {
1449 SB_UNFROZEN = 0,
1450 SB_FREEZE_WRITE = 1,
1451 SB_FREEZE_PAGEFAULT = 2,
1452 SB_FREEZE_FS = 3,
1453
1454 SB_FREEZE_COMPLETE = 4,
1455};
1456
1457#define SB_FREEZE_LEVELS (SB_FREEZE_COMPLETE - 1)
1458
1459struct sb_writers {
1460 int frozen;
1461 wait_queue_head_t wait_unfrozen;
1462 struct percpu_rw_semaphore rw_sem[SB_FREEZE_LEVELS];
1463};
1464
1465struct super_block {
1466 struct list_head s_list;
1467 dev_t s_dev;
1468 unsigned char s_blocksize_bits;
1469 unsigned long s_blocksize;
1470 loff_t s_maxbytes;
1471 struct file_system_type *s_type;
1472 const struct super_operations *s_op;
1473 const struct dquot_operations *dq_op;
1474 const struct quotactl_ops *s_qcop;
1475 const struct export_operations *s_export_op;
1476 unsigned long s_flags;
1477 unsigned long s_iflags;
1478 unsigned long s_magic;
1479 struct dentry *s_root;
1480 struct rw_semaphore s_umount;
1481 int s_count;
1482 atomic_t s_active;
1483#ifdef CONFIG_SECURITY
1484 void *s_security;
1485#endif
1486 const struct xattr_handler **s_xattr;
1487#ifdef CONFIG_FS_ENCRYPTION
1488 const struct fscrypt_operations *s_cop;
1489 struct key *s_master_keys;
1490#endif
1491#ifdef CONFIG_FS_VERITY
1492 const struct fsverity_operations *s_vop;
1493#endif
1494#ifdef CONFIG_UNICODE
1495 struct unicode_map *s_encoding;
1496 __u16 s_encoding_flags;
1497#endif
1498 struct hlist_bl_head s_roots;
1499 struct list_head s_mounts;
1500 struct block_device *s_bdev;
1501 struct backing_dev_info *s_bdi;
1502 struct mtd_info *s_mtd;
1503 struct hlist_node s_instances;
1504 unsigned int s_quota_types;
1505 struct quota_info s_dquot;
1506
1507 struct sb_writers s_writers;
1508
1509
1510
1511
1512
1513
1514 void *s_fs_info;
1515
1516
1517 u32 s_time_gran;
1518
1519 time64_t s_time_min;
1520 time64_t s_time_max;
1521#ifdef CONFIG_FSNOTIFY
1522 __u32 s_fsnotify_mask;
1523 struct fsnotify_mark_connector __rcu *s_fsnotify_marks;
1524#endif
1525
1526 char s_id[32];
1527 uuid_t s_uuid;
1528
1529 unsigned int s_max_links;
1530 fmode_t s_mode;
1531
1532
1533
1534
1535
1536 struct mutex s_vfs_rename_mutex;
1537
1538
1539
1540
1541
1542 const char *s_subtype;
1543
1544 const struct dentry_operations *s_d_op;
1545
1546
1547
1548
1549 int cleancache_poolid;
1550
1551 struct shrinker s_shrink;
1552
1553
1554 atomic_long_t s_remove_count;
1555
1556
1557
1558
1559
1560 atomic_long_t s_fsnotify_connectors;
1561
1562
1563 int s_readonly_remount;
1564
1565
1566 errseq_t s_wb_err;
1567
1568
1569 struct workqueue_struct *s_dio_done_wq;
1570 struct hlist_head s_pins;
1571
1572
1573
1574
1575
1576
1577 struct user_namespace *s_user_ns;
1578
1579
1580
1581
1582
1583
1584 struct list_lru s_dentry_lru;
1585 struct list_lru s_inode_lru;
1586 struct rcu_head rcu;
1587 struct work_struct destroy_work;
1588
1589 struct mutex s_sync_lock;
1590
1591
1592
1593
1594 int s_stack_depth;
1595
1596
1597 spinlock_t s_inode_list_lock ____cacheline_aligned_in_smp;
1598 struct list_head s_inodes;
1599
1600 spinlock_t s_inode_wblist_lock;
1601 struct list_head s_inodes_wb;
1602} __randomize_layout;
1603
1604
1605
1606
1607
1608
1609static inline uid_t i_uid_read(const struct inode *inode)
1610{
1611 return from_kuid(inode->i_sb->s_user_ns, inode->i_uid);
1612}
1613
1614static inline gid_t i_gid_read(const struct inode *inode)
1615{
1616 return from_kgid(inode->i_sb->s_user_ns, inode->i_gid);
1617}
1618
1619static inline void i_uid_write(struct inode *inode, uid_t uid)
1620{
1621 inode->i_uid = make_kuid(inode->i_sb->s_user_ns, uid);
1622}
1623
1624static inline void i_gid_write(struct inode *inode, gid_t gid)
1625{
1626 inode->i_gid = make_kgid(inode->i_sb->s_user_ns, gid);
1627}
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637static inline kuid_t kuid_into_mnt(struct user_namespace *mnt_userns,
1638 kuid_t kuid)
1639{
1640 return make_kuid(mnt_userns, __kuid_val(kuid));
1641}
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651static inline kgid_t kgid_into_mnt(struct user_namespace *mnt_userns,
1652 kgid_t kgid)
1653{
1654 return make_kgid(mnt_userns, __kgid_val(kgid));
1655}
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665static inline kuid_t i_uid_into_mnt(struct user_namespace *mnt_userns,
1666 const struct inode *inode)
1667{
1668 return kuid_into_mnt(mnt_userns, inode->i_uid);
1669}
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679static inline kgid_t i_gid_into_mnt(struct user_namespace *mnt_userns,
1680 const struct inode *inode)
1681{
1682 return kgid_into_mnt(mnt_userns, inode->i_gid);
1683}
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693static inline kuid_t kuid_from_mnt(struct user_namespace *mnt_userns,
1694 kuid_t kuid)
1695{
1696 return KUIDT_INIT(from_kuid(mnt_userns, kuid));
1697}
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707static inline kgid_t kgid_from_mnt(struct user_namespace *mnt_userns,
1708 kgid_t kgid)
1709{
1710 return KGIDT_INIT(from_kgid(mnt_userns, kgid));
1711}
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725static inline kuid_t mapped_fsuid(struct user_namespace *mnt_userns)
1726{
1727 return kuid_from_mnt(mnt_userns, current_fsuid());
1728}
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742static inline kgid_t mapped_fsgid(struct user_namespace *mnt_userns)
1743{
1744 return kgid_from_mnt(mnt_userns, current_fsgid());
1745}
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755static inline void inode_fsuid_set(struct inode *inode,
1756 struct user_namespace *mnt_userns)
1757{
1758 inode->i_uid = mapped_fsuid(mnt_userns);
1759}
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769static inline void inode_fsgid_set(struct inode *inode,
1770 struct user_namespace *mnt_userns)
1771{
1772 inode->i_gid = mapped_fsgid(mnt_userns);
1773}
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786static inline bool fsuidgid_has_mapping(struct super_block *sb,
1787 struct user_namespace *mnt_userns)
1788{
1789 struct user_namespace *s_user_ns = sb->s_user_ns;
1790
1791 return kuid_has_mapping(s_user_ns, mapped_fsuid(mnt_userns)) &&
1792 kgid_has_mapping(s_user_ns, mapped_fsgid(mnt_userns));
1793}
1794
1795extern struct timespec64 current_time(struct inode *inode);
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805static inline void __sb_end_write(struct super_block *sb, int level)
1806{
1807 percpu_up_read(sb->s_writers.rw_sem + level-1);
1808}
1809
1810static inline void __sb_start_write(struct super_block *sb, int level)
1811{
1812 percpu_down_read(sb->s_writers.rw_sem + level - 1);
1813}
1814
1815static inline bool __sb_start_write_trylock(struct super_block *sb, int level)
1816{
1817 return percpu_down_read_trylock(sb->s_writers.rw_sem + level - 1);
1818}
1819
1820#define __sb_writers_acquired(sb, lev) \
1821 percpu_rwsem_acquire(&(sb)->s_writers.rw_sem[(lev)-1], 1, _THIS_IP_)
1822#define __sb_writers_release(sb, lev) \
1823 percpu_rwsem_release(&(sb)->s_writers.rw_sem[(lev)-1], 1, _THIS_IP_)
1824
1825
1826
1827
1828
1829
1830
1831
1832static inline void sb_end_write(struct super_block *sb)
1833{
1834 __sb_end_write(sb, SB_FREEZE_WRITE);
1835}
1836
1837
1838
1839
1840
1841
1842
1843
1844static inline void sb_end_pagefault(struct super_block *sb)
1845{
1846 __sb_end_write(sb, SB_FREEZE_PAGEFAULT);
1847}
1848
1849
1850
1851
1852
1853
1854
1855
1856static inline void sb_end_intwrite(struct super_block *sb)
1857{
1858 __sb_end_write(sb, SB_FREEZE_FS);
1859}
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880static inline void sb_start_write(struct super_block *sb)
1881{
1882 __sb_start_write(sb, SB_FREEZE_WRITE);
1883}
1884
1885static inline bool sb_start_write_trylock(struct super_block *sb)
1886{
1887 return __sb_start_write_trylock(sb, SB_FREEZE_WRITE);
1888}
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909static inline void sb_start_pagefault(struct super_block *sb)
1910{
1911 __sb_start_write(sb, SB_FREEZE_PAGEFAULT);
1912}
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927static inline void sb_start_intwrite(struct super_block *sb)
1928{
1929 __sb_start_write(sb, SB_FREEZE_FS);
1930}
1931
1932static inline bool sb_start_intwrite_trylock(struct super_block *sb)
1933{
1934 return __sb_start_write_trylock(sb, SB_FREEZE_FS);
1935}
1936
1937bool inode_owner_or_capable(struct user_namespace *mnt_userns,
1938 const struct inode *inode);
1939
1940
1941
1942
1943int vfs_create(struct user_namespace *, struct inode *,
1944 struct dentry *, umode_t, bool);
1945int vfs_mkdir(struct user_namespace *, struct inode *,
1946 struct dentry *, umode_t);
1947int vfs_mknod(struct user_namespace *, struct inode *, struct dentry *,
1948 umode_t, dev_t);
1949int vfs_symlink(struct user_namespace *, struct inode *,
1950 struct dentry *, const char *);
1951int vfs_link(struct dentry *, struct user_namespace *, struct inode *,
1952 struct dentry *, struct inode **);
1953int vfs_rmdir(struct user_namespace *, struct inode *, struct dentry *);
1954int vfs_unlink(struct user_namespace *, struct inode *, struct dentry *,
1955 struct inode **);
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968struct renamedata {
1969 struct user_namespace *old_mnt_userns;
1970 struct inode *old_dir;
1971 struct dentry *old_dentry;
1972 struct user_namespace *new_mnt_userns;
1973 struct inode *new_dir;
1974 struct dentry *new_dentry;
1975 struct inode **delegated_inode;
1976 unsigned int flags;
1977} __randomize_layout;
1978
1979int vfs_rename(struct renamedata *);
1980
1981static inline int vfs_whiteout(struct user_namespace *mnt_userns,
1982 struct inode *dir, struct dentry *dentry)
1983{
1984 return vfs_mknod(mnt_userns, dir, dentry, S_IFCHR | WHITEOUT_MODE,
1985 WHITEOUT_DEV);
1986}
1987
1988struct dentry *vfs_tmpfile(struct user_namespace *mnt_userns,
1989 struct dentry *dentry, umode_t mode, int open_flag);
1990
1991int vfs_mkobj(struct dentry *, umode_t,
1992 int (*f)(struct dentry *, umode_t, void *),
1993 void *);
1994
1995int vfs_fchown(struct file *file, uid_t user, gid_t group);
1996int vfs_fchmod(struct file *file, umode_t mode);
1997int vfs_utimes(const struct path *path, struct timespec64 *times);
1998
1999extern long vfs_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
2000
2001#ifdef CONFIG_COMPAT
2002extern long compat_ptr_ioctl(struct file *file, unsigned int cmd,
2003 unsigned long arg);
2004#else
2005#define compat_ptr_ioctl NULL
2006#endif
2007
2008
2009
2010
2011void inode_init_owner(struct user_namespace *mnt_userns, struct inode *inode,
2012 const struct inode *dir, umode_t mode);
2013extern bool may_open_dev(const struct path *path);
2014
2015
2016
2017
2018
2019
2020
2021struct dir_context;
2022typedef int (*filldir_t)(struct dir_context *, const char *, int, loff_t, u64,
2023 unsigned);
2024
2025struct dir_context {
2026 filldir_t actor;
2027 loff_t pos;
2028};
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040#define NOMMU_MAP_COPY 0x00000001
2041#define NOMMU_MAP_DIRECT 0x00000008
2042#define NOMMU_MAP_READ VM_MAYREAD
2043#define NOMMU_MAP_WRITE VM_MAYWRITE
2044#define NOMMU_MAP_EXEC VM_MAYEXEC
2045
2046#define NOMMU_VMFLAGS \
2047 (NOMMU_MAP_READ | NOMMU_MAP_WRITE | NOMMU_MAP_EXEC)
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057#define REMAP_FILE_DEDUP (1 << 0)
2058#define REMAP_FILE_CAN_SHORTEN (1 << 1)
2059
2060
2061
2062
2063
2064
2065
2066
2067#define REMAP_FILE_ADVISORY (REMAP_FILE_CAN_SHORTEN)
2068
2069struct iov_iter;
2070
2071struct file_operations {
2072 struct module *owner;
2073 loff_t (*llseek) (struct file *, loff_t, int);
2074 ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);
2075 ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);
2076 ssize_t (*read_iter) (struct kiocb *, struct iov_iter *);
2077 ssize_t (*write_iter) (struct kiocb *, struct iov_iter *);
2078 int (*iopoll)(struct kiocb *kiocb, bool spin);
2079 int (*iterate) (struct file *, struct dir_context *);
2080 int (*iterate_shared) (struct file *, struct dir_context *);
2081 __poll_t (*poll) (struct file *, struct poll_table_struct *);
2082 long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
2083 long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
2084 int (*mmap) (struct file *, struct vm_area_struct *);
2085 unsigned long mmap_supported_flags;
2086 int (*open) (struct inode *, struct file *);
2087 int (*flush) (struct file *, fl_owner_t id);
2088 int (*release) (struct inode *, struct file *);
2089 int (*fsync) (struct file *, loff_t, loff_t, int datasync);
2090 int (*fasync) (int, struct file *, int);
2091 int (*lock) (struct file *, int, struct file_lock *);
2092 ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
2093 unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
2094 int (*check_flags)(int);
2095 int (*flock) (struct file *, int, struct file_lock *);
2096 ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
2097 ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
2098 int (*setlease)(struct file *, long, struct file_lock **, void **);
2099 long (*fallocate)(struct file *file, int mode, loff_t offset,
2100 loff_t len);
2101 void (*show_fdinfo)(struct seq_file *m, struct file *f);
2102#ifndef CONFIG_MMU
2103 unsigned (*mmap_capabilities)(struct file *);
2104#endif
2105 ssize_t (*copy_file_range)(struct file *, loff_t, struct file *,
2106 loff_t, size_t, unsigned int);
2107 loff_t (*remap_file_range)(struct file *file_in, loff_t pos_in,
2108 struct file *file_out, loff_t pos_out,
2109 loff_t len, unsigned int remap_flags);
2110 int (*fadvise)(struct file *, loff_t, loff_t, int);
2111} __randomize_layout;
2112
2113struct inode_operations {
2114 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
2115 const char * (*get_link) (struct dentry *, struct inode *, struct delayed_call *);
2116 int (*permission) (struct user_namespace *, struct inode *, int);
2117 struct posix_acl * (*get_acl)(struct inode *, int, bool);
2118
2119 int (*readlink) (struct dentry *, char __user *,int);
2120
2121 int (*create) (struct user_namespace *, struct inode *,struct dentry *,
2122 umode_t, bool);
2123 int (*link) (struct dentry *,struct inode *,struct dentry *);
2124 int (*unlink) (struct inode *,struct dentry *);
2125 int (*symlink) (struct user_namespace *, struct inode *,struct dentry *,
2126 const char *);
2127 int (*mkdir) (struct user_namespace *, struct inode *,struct dentry *,
2128 umode_t);
2129 int (*rmdir) (struct inode *,struct dentry *);
2130 int (*mknod) (struct user_namespace *, struct inode *,struct dentry *,
2131 umode_t,dev_t);
2132 int (*rename) (struct user_namespace *, struct inode *, struct dentry *,
2133 struct inode *, struct dentry *, unsigned int);
2134 int (*setattr) (struct user_namespace *, struct dentry *,
2135 struct iattr *);
2136 int (*getattr) (struct user_namespace *, const struct path *,
2137 struct kstat *, u32, unsigned int);
2138 ssize_t (*listxattr) (struct dentry *, char *, size_t);
2139 int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start,
2140 u64 len);
2141 int (*update_time)(struct inode *, struct timespec64 *, int);
2142 int (*atomic_open)(struct inode *, struct dentry *,
2143 struct file *, unsigned open_flag,
2144 umode_t create_mode);
2145 int (*tmpfile) (struct user_namespace *, struct inode *,
2146 struct dentry *, umode_t);
2147 int (*set_acl)(struct user_namespace *, struct inode *,
2148 struct posix_acl *, int);
2149 int (*fileattr_set)(struct user_namespace *mnt_userns,
2150 struct dentry *dentry, struct fileattr *fa);
2151 int (*fileattr_get)(struct dentry *dentry, struct fileattr *fa);
2152} ____cacheline_aligned;
2153
2154static inline ssize_t call_read_iter(struct file *file, struct kiocb *kio,
2155 struct iov_iter *iter)
2156{
2157 return file->f_op->read_iter(kio, iter);
2158}
2159
2160static inline ssize_t call_write_iter(struct file *file, struct kiocb *kio,
2161 struct iov_iter *iter)
2162{
2163 return file->f_op->write_iter(kio, iter);
2164}
2165
2166static inline int call_mmap(struct file *file, struct vm_area_struct *vma)
2167{
2168 return file->f_op->mmap(file, vma);
2169}
2170
2171extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
2172extern ssize_t vfs_write(struct file *, const char __user *, size_t, loff_t *);
2173extern ssize_t vfs_copy_file_range(struct file *, loff_t , struct file *,
2174 loff_t, size_t, unsigned int);
2175extern ssize_t generic_copy_file_range(struct file *file_in, loff_t pos_in,
2176 struct file *file_out, loff_t pos_out,
2177 size_t len, unsigned int flags);
2178extern int generic_remap_file_range_prep(struct file *file_in, loff_t pos_in,
2179 struct file *file_out, loff_t pos_out,
2180 loff_t *count,
2181 unsigned int remap_flags);
2182extern loff_t do_clone_file_range(struct file *file_in, loff_t pos_in,
2183 struct file *file_out, loff_t pos_out,
2184 loff_t len, unsigned int remap_flags);
2185extern loff_t vfs_clone_file_range(struct file *file_in, loff_t pos_in,
2186 struct file *file_out, loff_t pos_out,
2187 loff_t len, unsigned int remap_flags);
2188extern int vfs_dedupe_file_range(struct file *file,
2189 struct file_dedupe_range *same);
2190extern loff_t vfs_dedupe_file_range_one(struct file *src_file, loff_t src_pos,
2191 struct file *dst_file, loff_t dst_pos,
2192 loff_t len, unsigned int remap_flags);
2193
2194
2195struct super_operations {
2196 struct inode *(*alloc_inode)(struct super_block *sb);
2197 void (*destroy_inode)(struct inode *);
2198 void (*free_inode)(struct inode *);
2199
2200 void (*dirty_inode) (struct inode *, int flags);
2201 int (*write_inode) (struct inode *, struct writeback_control *wbc);
2202 int (*drop_inode) (struct inode *);
2203 void (*evict_inode) (struct inode *);
2204 void (*put_super) (struct super_block *);
2205 int (*sync_fs)(struct super_block *sb, int wait);
2206 int (*freeze_super) (struct super_block *);
2207 int (*freeze_fs) (struct super_block *);
2208 int (*thaw_super) (struct super_block *);
2209 int (*unfreeze_fs) (struct super_block *);
2210 int (*statfs) (struct dentry *, struct kstatfs *);
2211 int (*remount_fs) (struct super_block *, int *, char *);
2212 void (*umount_begin) (struct super_block *);
2213
2214 int (*show_options)(struct seq_file *, struct dentry *);
2215 int (*show_devname)(struct seq_file *, struct dentry *);
2216 int (*show_path)(struct seq_file *, struct dentry *);
2217 int (*show_stats)(struct seq_file *, struct dentry *);
2218#ifdef CONFIG_QUOTA
2219 ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t);
2220 ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t);
2221 struct dquot **(*get_dquots)(struct inode *);
2222#endif
2223 long (*nr_cached_objects)(struct super_block *,
2224 struct shrink_control *);
2225 long (*free_cached_objects)(struct super_block *,
2226 struct shrink_control *);
2227};
2228
2229
2230
2231
2232#define S_SYNC (1 << 0)
2233#define S_NOATIME (1 << 1)
2234#define S_APPEND (1 << 2)
2235#define S_IMMUTABLE (1 << 3)
2236#define S_DEAD (1 << 4)
2237#define S_NOQUOTA (1 << 5)
2238#define S_DIRSYNC (1 << 6)
2239#define S_NOCMTIME (1 << 7)
2240#define S_SWAPFILE (1 << 8)
2241#define S_PRIVATE (1 << 9)
2242#define S_IMA (1 << 10)
2243#define S_AUTOMOUNT (1 << 11)
2244#define S_NOSEC (1 << 12)
2245#ifdef CONFIG_FS_DAX
2246#define S_DAX (1 << 13)
2247#else
2248#define S_DAX 0
2249#endif
2250#define S_ENCRYPTED (1 << 14)
2251#define S_CASEFOLD (1 << 15)
2252#define S_VERITY (1 << 16)
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267#define __IS_FLG(inode, flg) ((inode)->i_sb->s_flags & (flg))
2268
2269static inline bool sb_rdonly(const struct super_block *sb) { return sb->s_flags & SB_RDONLY; }
2270#define IS_RDONLY(inode) sb_rdonly((inode)->i_sb)
2271#define IS_SYNC(inode) (__IS_FLG(inode, SB_SYNCHRONOUS) || \
2272 ((inode)->i_flags & S_SYNC))
2273#define IS_DIRSYNC(inode) (__IS_FLG(inode, SB_SYNCHRONOUS|SB_DIRSYNC) || \
2274 ((inode)->i_flags & (S_SYNC|S_DIRSYNC)))
2275#define IS_MANDLOCK(inode) __IS_FLG(inode, SB_MANDLOCK)
2276#define IS_NOATIME(inode) __IS_FLG(inode, SB_RDONLY|SB_NOATIME)
2277#define IS_I_VERSION(inode) __IS_FLG(inode, SB_I_VERSION)
2278
2279#define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA)
2280#define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
2281#define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
2282#define IS_POSIXACL(inode) __IS_FLG(inode, SB_POSIXACL)
2283
2284#define IS_DEADDIR(inode) ((inode)->i_flags & S_DEAD)
2285#define IS_NOCMTIME(inode) ((inode)->i_flags & S_NOCMTIME)
2286#define IS_SWAPFILE(inode) ((inode)->i_flags & S_SWAPFILE)
2287#define IS_PRIVATE(inode) ((inode)->i_flags & S_PRIVATE)
2288#define IS_IMA(inode) ((inode)->i_flags & S_IMA)
2289#define IS_AUTOMOUNT(inode) ((inode)->i_flags & S_AUTOMOUNT)
2290#define IS_NOSEC(inode) ((inode)->i_flags & S_NOSEC)
2291#define IS_DAX(inode) ((inode)->i_flags & S_DAX)
2292#define IS_ENCRYPTED(inode) ((inode)->i_flags & S_ENCRYPTED)
2293#define IS_CASEFOLDED(inode) ((inode)->i_flags & S_CASEFOLD)
2294#define IS_VERITY(inode) ((inode)->i_flags & S_VERITY)
2295
2296#define IS_WHITEOUT(inode) (S_ISCHR(inode->i_mode) && \
2297 (inode)->i_rdev == WHITEOUT_DEV)
2298
2299static inline bool HAS_UNMAPPED_ID(struct user_namespace *mnt_userns,
2300 struct inode *inode)
2301{
2302 return !uid_valid(i_uid_into_mnt(mnt_userns, inode)) ||
2303 !gid_valid(i_gid_into_mnt(mnt_userns, inode));
2304}
2305
2306static inline enum rw_hint file_write_hint(struct file *file)
2307{
2308 if (file->f_write_hint != WRITE_LIFE_NOT_SET)
2309 return file->f_write_hint;
2310
2311 return file_inode(file)->i_write_hint;
2312}
2313
2314static inline int iocb_flags(struct file *file);
2315
2316static inline u16 ki_hint_validate(enum rw_hint hint)
2317{
2318 typeof(((struct kiocb *)0)->ki_hint) max_hint = -1;
2319
2320 if (hint <= max_hint)
2321 return hint;
2322 return 0;
2323}
2324
2325static inline void init_sync_kiocb(struct kiocb *kiocb, struct file *filp)
2326{
2327 *kiocb = (struct kiocb) {
2328 .ki_filp = filp,
2329 .ki_flags = iocb_flags(filp),
2330 .ki_hint = ki_hint_validate(file_write_hint(filp)),
2331 .ki_ioprio = get_current_ioprio(),
2332 };
2333}
2334
2335static inline void kiocb_clone(struct kiocb *kiocb, struct kiocb *kiocb_src,
2336 struct file *filp)
2337{
2338 *kiocb = (struct kiocb) {
2339 .ki_filp = filp,
2340 .ki_flags = kiocb_src->ki_flags,
2341 .ki_hint = kiocb_src->ki_hint,
2342 .ki_ioprio = kiocb_src->ki_ioprio,
2343 .ki_pos = kiocb_src->ki_pos,
2344 };
2345}
2346
2347
2348
2349
2350
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#define I_DIRTY_SYNC (1 << 0)
2425#define I_DIRTY_DATASYNC (1 << 1)
2426#define I_DIRTY_PAGES (1 << 2)
2427#define __I_NEW 3
2428#define I_NEW (1 << __I_NEW)
2429#define I_WILL_FREE (1 << 4)
2430#define I_FREEING (1 << 5)
2431#define I_CLEAR (1 << 6)
2432#define __I_SYNC 7
2433#define I_SYNC (1 << __I_SYNC)
2434#define I_REFERENCED (1 << 8)
2435#define __I_DIO_WAKEUP 9
2436#define I_DIO_WAKEUP (1 << __I_DIO_WAKEUP)
2437#define I_LINKABLE (1 << 10)
2438#define I_DIRTY_TIME (1 << 11)
2439#define I_WB_SWITCH (1 << 13)
2440#define I_OVL_INUSE (1 << 14)
2441#define I_CREATING (1 << 15)
2442#define I_DONTCACHE (1 << 16)
2443#define I_SYNC_QUEUED (1 << 17)
2444
2445#define I_DIRTY_INODE (I_DIRTY_SYNC | I_DIRTY_DATASYNC)
2446#define I_DIRTY (I_DIRTY_INODE | I_DIRTY_PAGES)
2447#define I_DIRTY_ALL (I_DIRTY | I_DIRTY_TIME)
2448
2449extern void __mark_inode_dirty(struct inode *, int);
2450static inline void mark_inode_dirty(struct inode *inode)
2451{
2452 __mark_inode_dirty(inode, I_DIRTY);
2453}
2454
2455static inline void mark_inode_dirty_sync(struct inode *inode)
2456{
2457 __mark_inode_dirty(inode, I_DIRTY_SYNC);
2458}
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469static inline bool inode_is_dirtytime_only(struct inode *inode)
2470{
2471 return (inode->i_state & (I_DIRTY_TIME | I_NEW |
2472 I_FREEING | I_WILL_FREE)) == I_DIRTY_TIME;
2473}
2474
2475extern void inc_nlink(struct inode *inode);
2476extern void drop_nlink(struct inode *inode);
2477extern void clear_nlink(struct inode *inode);
2478extern void set_nlink(struct inode *inode, unsigned int nlink);
2479
2480static inline void inode_inc_link_count(struct inode *inode)
2481{
2482 inc_nlink(inode);
2483 mark_inode_dirty(inode);
2484}
2485
2486static inline void inode_dec_link_count(struct inode *inode)
2487{
2488 drop_nlink(inode);
2489 mark_inode_dirty(inode);
2490}
2491
2492enum file_time_flags {
2493 S_ATIME = 1,
2494 S_MTIME = 2,
2495 S_CTIME = 4,
2496 S_VERSION = 8,
2497};
2498
2499extern bool atime_needs_update(const struct path *, struct inode *);
2500extern void touch_atime(const struct path *);
2501static inline void file_accessed(struct file *file)
2502{
2503 if (!(file->f_flags & O_NOATIME))
2504 touch_atime(&file->f_path);
2505}
2506
2507extern int file_modified(struct file *file);
2508
2509int sync_inode_metadata(struct inode *inode, int wait);
2510
2511struct file_system_type {
2512 const char *name;
2513 int fs_flags;
2514#define FS_REQUIRES_DEV 1
2515#define FS_BINARY_MOUNTDATA 2
2516#define FS_HAS_SUBTYPE 4
2517#define FS_USERNS_MOUNT 8
2518#define FS_DISALLOW_NOTIFY_PERM 16
2519#define FS_ALLOW_IDMAP 32
2520#define FS_THP_SUPPORT 8192
2521#define FS_RENAME_DOES_D_MOVE 32768
2522 int (*init_fs_context)(struct fs_context *);
2523 const struct fs_parameter_spec *parameters;
2524 struct dentry *(*mount) (struct file_system_type *, int,
2525 const char *, void *);
2526 void (*kill_sb) (struct super_block *);
2527 struct module *owner;
2528 struct file_system_type * next;
2529 struct hlist_head fs_supers;
2530
2531 struct lock_class_key s_lock_key;
2532 struct lock_class_key s_umount_key;
2533 struct lock_class_key s_vfs_rename_key;
2534 struct lock_class_key s_writers_key[SB_FREEZE_LEVELS];
2535
2536 struct lock_class_key i_lock_key;
2537 struct lock_class_key i_mutex_key;
2538 struct lock_class_key invalidate_lock_key;
2539 struct lock_class_key i_mutex_dir_key;
2540};
2541
2542#define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME)
2543
2544extern struct dentry *mount_bdev(struct file_system_type *fs_type,
2545 int flags, const char *dev_name, void *data,
2546 int (*fill_super)(struct super_block *, void *, int));
2547extern struct dentry *mount_single(struct file_system_type *fs_type,
2548 int flags, void *data,
2549 int (*fill_super)(struct super_block *, void *, int));
2550extern struct dentry *mount_nodev(struct file_system_type *fs_type,
2551 int flags, void *data,
2552 int (*fill_super)(struct super_block *, void *, int));
2553extern struct dentry *mount_subtree(struct vfsmount *mnt, const char *path);
2554void generic_shutdown_super(struct super_block *sb);
2555void kill_block_super(struct super_block *sb);
2556void kill_anon_super(struct super_block *sb);
2557void kill_litter_super(struct super_block *sb);
2558void deactivate_super(struct super_block *sb);
2559void deactivate_locked_super(struct super_block *sb);
2560int set_anon_super(struct super_block *s, void *data);
2561int set_anon_super_fc(struct super_block *s, struct fs_context *fc);
2562int get_anon_bdev(dev_t *);
2563void free_anon_bdev(dev_t);
2564struct super_block *sget_fc(struct fs_context *fc,
2565 int (*test)(struct super_block *, struct fs_context *),
2566 int (*set)(struct super_block *, struct fs_context *));
2567struct super_block *sget(struct file_system_type *type,
2568 int (*test)(struct super_block *,void *),
2569 int (*set)(struct super_block *,void *),
2570 int flags, void *data);
2571
2572
2573#define fops_get(fops) \
2574 (((fops) && try_module_get((fops)->owner) ? (fops) : NULL))
2575#define fops_put(fops) \
2576 do { if (fops) module_put((fops)->owner); } while(0)
2577
2578
2579
2580
2581
2582#define replace_fops(f, fops) \
2583 do { \
2584 struct file *__file = (f); \
2585 fops_put(__file->f_op); \
2586 BUG_ON(!(__file->f_op = (fops))); \
2587 } while(0)
2588
2589extern int register_filesystem(struct file_system_type *);
2590extern int unregister_filesystem(struct file_system_type *);
2591extern struct vfsmount *kern_mount(struct file_system_type *);
2592extern void kern_unmount(struct vfsmount *mnt);
2593extern int may_umount_tree(struct vfsmount *);
2594extern int may_umount(struct vfsmount *);
2595extern long do_mount(const char *, const char __user *,
2596 const char *, unsigned long, void *);
2597extern struct vfsmount *collect_mounts(const struct path *);
2598extern void drop_collected_mounts(struct vfsmount *);
2599extern int iterate_mounts(int (*)(struct vfsmount *, void *), void *,
2600 struct vfsmount *);
2601extern int vfs_statfs(const struct path *, struct kstatfs *);
2602extern int user_statfs(const char __user *, struct kstatfs *);
2603extern int fd_statfs(int, struct kstatfs *);
2604extern int freeze_super(struct super_block *super);
2605extern int thaw_super(struct super_block *super);
2606extern bool our_mnt(struct vfsmount *mnt);
2607extern __printf(2, 3)
2608int super_setup_bdi_name(struct super_block *sb, char *fmt, ...);
2609extern int super_setup_bdi(struct super_block *sb);
2610
2611extern int current_umask(void);
2612
2613extern void ihold(struct inode * inode);
2614extern void iput(struct inode *);
2615extern int generic_update_time(struct inode *, struct timespec64 *, int);
2616
2617
2618extern struct kobject *fs_kobj;
2619
2620#define MAX_RW_COUNT (INT_MAX & PAGE_MASK)
2621
2622#ifdef CONFIG_FILE_LOCKING
2623static inline int break_lease(struct inode *inode, unsigned int mode)
2624{
2625
2626
2627
2628
2629
2630
2631 smp_mb();
2632 if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))
2633 return __break_lease(inode, mode, FL_LEASE);
2634 return 0;
2635}
2636
2637static inline int break_deleg(struct inode *inode, unsigned int mode)
2638{
2639
2640
2641
2642
2643
2644
2645 smp_mb();
2646 if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))
2647 return __break_lease(inode, mode, FL_DELEG);
2648 return 0;
2649}
2650
2651static inline int try_break_deleg(struct inode *inode, struct inode **delegated_inode)
2652{
2653 int ret;
2654
2655 ret = break_deleg(inode, O_WRONLY|O_NONBLOCK);
2656 if (ret == -EWOULDBLOCK && delegated_inode) {
2657 *delegated_inode = inode;
2658 ihold(inode);
2659 }
2660 return ret;
2661}
2662
2663static inline int break_deleg_wait(struct inode **delegated_inode)
2664{
2665 int ret;
2666
2667 ret = break_deleg(*delegated_inode, O_WRONLY);
2668 iput(*delegated_inode);
2669 *delegated_inode = NULL;
2670 return ret;
2671}
2672
2673static inline int break_layout(struct inode *inode, bool wait)
2674{
2675 smp_mb();
2676 if (inode->i_flctx && !list_empty_careful(&inode->i_flctx->flc_lease))
2677 return __break_lease(inode,
2678 wait ? O_WRONLY : O_WRONLY | O_NONBLOCK,
2679 FL_LAYOUT);
2680 return 0;
2681}
2682
2683#else
2684static inline int break_lease(struct inode *inode, unsigned int mode)
2685{
2686 return 0;
2687}
2688
2689static inline int break_deleg(struct inode *inode, unsigned int mode)
2690{
2691 return 0;
2692}
2693
2694static inline int try_break_deleg(struct inode *inode, struct inode **delegated_inode)
2695{
2696 return 0;
2697}
2698
2699static inline int break_deleg_wait(struct inode **delegated_inode)
2700{
2701 BUG();
2702 return 0;
2703}
2704
2705static inline int break_layout(struct inode *inode, bool wait)
2706{
2707 return 0;
2708}
2709
2710#endif
2711
2712
2713struct audit_names;
2714struct filename {
2715 const char *name;
2716 const __user char *uptr;
2717 int refcnt;
2718 struct audit_names *aname;
2719 const char iname[];
2720};
2721static_assert(offsetof(struct filename, iname) % sizeof(long) == 0);
2722
2723static inline struct user_namespace *file_mnt_user_ns(struct file *file)
2724{
2725 return mnt_user_ns(file->f_path.mnt);
2726}
2727extern long vfs_truncate(const struct path *, loff_t);
2728int do_truncate(struct user_namespace *, struct dentry *, loff_t start,
2729 unsigned int time_attrs, struct file *filp);
2730extern int vfs_fallocate(struct file *file, int mode, loff_t offset,
2731 loff_t len);
2732extern long do_sys_open(int dfd, const char __user *filename, int flags,
2733 umode_t mode);
2734extern struct file *file_open_name(struct filename *, int, umode_t);
2735extern struct file *filp_open(const char *, int, umode_t);
2736extern struct file *file_open_root(const struct path *,
2737 const char *, int, umode_t);
2738static inline struct file *file_open_root_mnt(struct vfsmount *mnt,
2739 const char *name, int flags, umode_t mode)
2740{
2741 return file_open_root(&(struct path){.mnt = mnt, .dentry = mnt->mnt_root},
2742 name, flags, mode);
2743}
2744extern struct file * dentry_open(const struct path *, int, const struct cred *);
2745extern struct file * open_with_fake_path(const struct path *, int,
2746 struct inode*, const struct cred *);
2747static inline struct file *file_clone_open(struct file *file)
2748{
2749 return dentry_open(&file->f_path, file->f_flags, file->f_cred);
2750}
2751extern int filp_close(struct file *, fl_owner_t id);
2752
2753extern struct filename *getname_flags(const char __user *, int, int *);
2754extern struct filename *getname_uflags(const char __user *, int);
2755extern struct filename *getname(const char __user *);
2756extern struct filename *getname_kernel(const char *);
2757extern void putname(struct filename *name);
2758
2759extern int finish_open(struct file *file, struct dentry *dentry,
2760 int (*open)(struct inode *, struct file *));
2761extern int finish_no_open(struct file *file, struct dentry *dentry);
2762
2763
2764extern void __init vfs_caches_init_early(void);
2765extern void __init vfs_caches_init(void);
2766
2767extern struct kmem_cache *names_cachep;
2768
2769#define __getname() kmem_cache_alloc(names_cachep, GFP_KERNEL)
2770#define __putname(name) kmem_cache_free(names_cachep, (void *)(name))
2771
2772extern struct super_block *blockdev_superblock;
2773static inline bool sb_is_blkdev_sb(struct super_block *sb)
2774{
2775 return IS_ENABLED(CONFIG_BLOCK) && sb == blockdev_superblock;
2776}
2777
2778void emergency_thaw_all(void);
2779extern int sync_filesystem(struct super_block *);
2780extern const struct file_operations def_blk_fops;
2781extern const struct file_operations def_chr_fops;
2782
2783
2784#define CHRDEV_MAJOR_MAX 512
2785
2786#define CHRDEV_MAJOR_DYN_END 234
2787
2788#define CHRDEV_MAJOR_DYN_EXT_START 511
2789#define CHRDEV_MAJOR_DYN_EXT_END 384
2790
2791extern int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *);
2792extern int register_chrdev_region(dev_t, unsigned, const char *);
2793extern int __register_chrdev(unsigned int major, unsigned int baseminor,
2794 unsigned int count, const char *name,
2795 const struct file_operations *fops);
2796extern void __unregister_chrdev(unsigned int major, unsigned int baseminor,
2797 unsigned int count, const char *name);
2798extern void unregister_chrdev_region(dev_t, unsigned);
2799extern void chrdev_show(struct seq_file *,off_t);
2800
2801static inline int register_chrdev(unsigned int major, const char *name,
2802 const struct file_operations *fops)
2803{
2804 return __register_chrdev(major, 0, 256, name, fops);
2805}
2806
2807static inline void unregister_chrdev(unsigned int major, const char *name)
2808{
2809 __unregister_chrdev(major, 0, 256, name);
2810}
2811
2812extern void init_special_inode(struct inode *, umode_t, dev_t);
2813
2814
2815extern void make_bad_inode(struct inode *);
2816extern bool is_bad_inode(struct inode *);
2817
2818unsigned long invalidate_mapping_pages(struct address_space *mapping,
2819 pgoff_t start, pgoff_t end);
2820
2821void invalidate_mapping_pagevec(struct address_space *mapping,
2822 pgoff_t start, pgoff_t end,
2823 unsigned long *nr_pagevec);
2824
2825static inline void invalidate_remote_inode(struct inode *inode)
2826{
2827 if (S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
2828 S_ISLNK(inode->i_mode))
2829 invalidate_mapping_pages(inode->i_mapping, 0, -1);
2830}
2831extern int invalidate_inode_pages2(struct address_space *mapping);
2832extern int invalidate_inode_pages2_range(struct address_space *mapping,
2833 pgoff_t start, pgoff_t end);
2834extern int write_inode_now(struct inode *, int);
2835extern int filemap_fdatawrite(struct address_space *);
2836extern int filemap_flush(struct address_space *);
2837extern int filemap_fdatawait_keep_errors(struct address_space *mapping);
2838extern int filemap_fdatawait_range(struct address_space *, loff_t lstart,
2839 loff_t lend);
2840extern int filemap_fdatawait_range_keep_errors(struct address_space *mapping,
2841 loff_t start_byte, loff_t end_byte);
2842
2843static inline int filemap_fdatawait(struct address_space *mapping)
2844{
2845 return filemap_fdatawait_range(mapping, 0, LLONG_MAX);
2846}
2847
2848extern bool filemap_range_has_page(struct address_space *, loff_t lstart,
2849 loff_t lend);
2850extern bool filemap_range_needs_writeback(struct address_space *,
2851 loff_t lstart, loff_t lend);
2852extern int filemap_write_and_wait_range(struct address_space *mapping,
2853 loff_t lstart, loff_t lend);
2854extern int __filemap_fdatawrite_range(struct address_space *mapping,
2855 loff_t start, loff_t end, int sync_mode);
2856extern int filemap_fdatawrite_range(struct address_space *mapping,
2857 loff_t start, loff_t end);
2858extern int filemap_check_errors(struct address_space *mapping);
2859extern void __filemap_set_wb_err(struct address_space *mapping, int err);
2860int filemap_fdatawrite_wbc(struct address_space *mapping,
2861 struct writeback_control *wbc);
2862
2863static inline int filemap_write_and_wait(struct address_space *mapping)
2864{
2865 return filemap_write_and_wait_range(mapping, 0, LLONG_MAX);
2866}
2867
2868extern int __must_check file_fdatawait_range(struct file *file, loff_t lstart,
2869 loff_t lend);
2870extern int __must_check file_check_and_advance_wb_err(struct file *file);
2871extern int __must_check file_write_and_wait_range(struct file *file,
2872 loff_t start, loff_t end);
2873
2874static inline int file_write_and_wait(struct file *file)
2875{
2876 return file_write_and_wait_range(file, 0, LLONG_MAX);
2877}
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893static inline void filemap_set_wb_err(struct address_space *mapping, int err)
2894{
2895
2896 if (unlikely(err))
2897 __filemap_set_wb_err(mapping, err);
2898}
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910static inline int filemap_check_wb_err(struct address_space *mapping,
2911 errseq_t since)
2912{
2913 return errseq_check(&mapping->wb_err, since);
2914}
2915
2916
2917
2918
2919
2920
2921
2922
2923static inline errseq_t filemap_sample_wb_err(struct address_space *mapping)
2924{
2925 return errseq_sample(&mapping->wb_err);
2926}
2927
2928
2929
2930
2931
2932
2933
2934
2935static inline errseq_t file_sample_sb_err(struct file *file)
2936{
2937 return errseq_sample(&file->f_path.dentry->d_sb->s_wb_err);
2938}
2939
2940extern int vfs_fsync_range(struct file *file, loff_t start, loff_t end,
2941 int datasync);
2942extern int vfs_fsync(struct file *file, int datasync);
2943
2944extern int sync_file_range(struct file *file, loff_t offset, loff_t nbytes,
2945 unsigned int flags);
2946
2947
2948
2949
2950
2951
2952static inline ssize_t generic_write_sync(struct kiocb *iocb, ssize_t count)
2953{
2954 if (iocb->ki_flags & IOCB_DSYNC) {
2955 int ret = vfs_fsync_range(iocb->ki_filp,
2956 iocb->ki_pos - count, iocb->ki_pos - 1,
2957 (iocb->ki_flags & IOCB_SYNC) ? 0 : 1);
2958 if (ret)
2959 return ret;
2960 }
2961
2962 return count;
2963}
2964
2965extern void emergency_sync(void);
2966extern void emergency_remount(void);
2967
2968#ifdef CONFIG_BLOCK
2969extern int bmap(struct inode *inode, sector_t *block);
2970#else
2971static inline int bmap(struct inode *inode, sector_t *block)
2972{
2973 return -EINVAL;
2974}
2975#endif
2976
2977int notify_change(struct user_namespace *, struct dentry *,
2978 struct iattr *, struct inode **);
2979int inode_permission(struct user_namespace *, struct inode *, int);
2980int generic_permission(struct user_namespace *, struct inode *, int);
2981static inline int file_permission(struct file *file, int mask)
2982{
2983 return inode_permission(file_mnt_user_ns(file),
2984 file_inode(file), mask);
2985}
2986static inline int path_permission(const struct path *path, int mask)
2987{
2988 return inode_permission(mnt_user_ns(path->mnt),
2989 d_inode(path->dentry), mask);
2990}
2991int __check_sticky(struct user_namespace *mnt_userns, struct inode *dir,
2992 struct inode *inode);
2993
2994static inline bool execute_ok(struct inode *inode)
2995{
2996 return (inode->i_mode & S_IXUGO) || S_ISDIR(inode->i_mode);
2997}
2998
2999static inline bool inode_wrong_type(const struct inode *inode, umode_t mode)
3000{
3001 return (inode->i_mode ^ mode) & S_IFMT;
3002}
3003
3004static inline void file_start_write(struct file *file)
3005{
3006 if (!S_ISREG(file_inode(file)->i_mode))
3007 return;
3008 sb_start_write(file_inode(file)->i_sb);
3009}
3010
3011static inline bool file_start_write_trylock(struct file *file)
3012{
3013 if (!S_ISREG(file_inode(file)->i_mode))
3014 return true;
3015 return sb_start_write_trylock(file_inode(file)->i_sb);
3016}
3017
3018static inline void file_end_write(struct file *file)
3019{
3020 if (!S_ISREG(file_inode(file)->i_mode))
3021 return;
3022 __sb_end_write(file_inode(file)->i_sb, SB_FREEZE_WRITE);
3023}
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046static inline int get_write_access(struct inode *inode)
3047{
3048 return atomic_inc_unless_negative(&inode->i_writecount) ? 0 : -ETXTBSY;
3049}
3050static inline int deny_write_access(struct file *file)
3051{
3052 struct inode *inode = file_inode(file);
3053 return atomic_dec_unless_positive(&inode->i_writecount) ? 0 : -ETXTBSY;
3054}
3055static inline void put_write_access(struct inode * inode)
3056{
3057 atomic_dec(&inode->i_writecount);
3058}
3059static inline void allow_write_access(struct file *file)
3060{
3061 if (file)
3062 atomic_inc(&file_inode(file)->i_writecount);
3063}
3064static inline bool inode_is_open_for_write(const struct inode *inode)
3065{
3066 return atomic_read(&inode->i_writecount) > 0;
3067}
3068
3069#if defined(CONFIG_IMA) || defined(CONFIG_FILE_LOCKING)
3070static inline void i_readcount_dec(struct inode *inode)
3071{
3072 BUG_ON(!atomic_read(&inode->i_readcount));
3073 atomic_dec(&inode->i_readcount);
3074}
3075static inline void i_readcount_inc(struct inode *inode)
3076{
3077 atomic_inc(&inode->i_readcount);
3078}
3079#else
3080static inline void i_readcount_dec(struct inode *inode)
3081{
3082 return;
3083}
3084static inline void i_readcount_inc(struct inode *inode)
3085{
3086 return;
3087}
3088#endif
3089extern int do_pipe_flags(int *, int);
3090
3091extern ssize_t kernel_read(struct file *, void *, size_t, loff_t *);
3092ssize_t __kernel_read(struct file *file, void *buf, size_t count, loff_t *pos);
3093extern ssize_t kernel_write(struct file *, const void *, size_t, loff_t *);
3094extern ssize_t __kernel_write(struct file *, const void *, size_t, loff_t *);
3095extern struct file * open_exec(const char *);
3096
3097
3098extern bool is_subdir(struct dentry *, struct dentry *);
3099extern bool path_is_under(const struct path *, const struct path *);
3100
3101extern char *file_path(struct file *, char *, int);
3102
3103#include <linux/err.h>
3104
3105
3106extern loff_t default_llseek(struct file *file, loff_t offset, int whence);
3107
3108extern loff_t vfs_llseek(struct file *file, loff_t offset, int whence);
3109
3110extern int inode_init_always(struct super_block *, struct inode *);
3111extern void inode_init_once(struct inode *);
3112extern void address_space_init_once(struct address_space *mapping);
3113extern struct inode * igrab(struct inode *);
3114extern ino_t iunique(struct super_block *, ino_t);
3115extern int inode_needs_sync(struct inode *inode);
3116extern int generic_delete_inode(struct inode *inode);
3117static inline int generic_drop_inode(struct inode *inode)
3118{
3119 return !inode->i_nlink || inode_unhashed(inode);
3120}
3121extern void d_mark_dontcache(struct inode *inode);
3122
3123extern struct inode *ilookup5_nowait(struct super_block *sb,
3124 unsigned long hashval, int (*test)(struct inode *, void *),
3125 void *data);
3126extern struct inode *ilookup5(struct super_block *sb, unsigned long hashval,
3127 int (*test)(struct inode *, void *), void *data);
3128extern struct inode *ilookup(struct super_block *sb, unsigned long ino);
3129
3130extern struct inode *inode_insert5(struct inode *inode, unsigned long hashval,
3131 int (*test)(struct inode *, void *),
3132 int (*set)(struct inode *, void *),
3133 void *data);
3134extern struct inode * iget5_locked(struct super_block *, unsigned long, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *);
3135extern struct inode * iget_locked(struct super_block *, unsigned long);
3136extern struct inode *find_inode_nowait(struct super_block *,
3137 unsigned long,
3138 int (*match)(struct inode *,
3139 unsigned long, void *),
3140 void *data);
3141extern struct inode *find_inode_rcu(struct super_block *, unsigned long,
3142 int (*)(struct inode *, void *), void *);
3143extern struct inode *find_inode_by_ino_rcu(struct super_block *, unsigned long);
3144extern int insert_inode_locked4(struct inode *, unsigned long, int (*test)(struct inode *, void *), void *);
3145extern int insert_inode_locked(struct inode *);
3146#ifdef CONFIG_DEBUG_LOCK_ALLOC
3147extern void lockdep_annotate_inode_mutex_key(struct inode *inode);
3148#else
3149static inline void lockdep_annotate_inode_mutex_key(struct inode *inode) { };
3150#endif
3151extern void unlock_new_inode(struct inode *);
3152extern void discard_new_inode(struct inode *);
3153extern unsigned int get_next_ino(void);
3154extern void evict_inodes(struct super_block *sb);
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166static inline bool is_zero_ino(ino_t ino)
3167{
3168 return (u32)ino == 0;
3169}
3170
3171extern void __iget(struct inode * inode);
3172extern void iget_failed(struct inode *);
3173extern void clear_inode(struct inode *);
3174extern void __destroy_inode(struct inode *);
3175extern struct inode *new_inode_pseudo(struct super_block *sb);
3176extern struct inode *new_inode(struct super_block *sb);
3177extern void free_inode_nonrcu(struct inode *inode);
3178extern int should_remove_suid(struct dentry *);
3179extern int file_remove_privs(struct file *);
3180
3181extern void __insert_inode_hash(struct inode *, unsigned long hashval);
3182static inline void insert_inode_hash(struct inode *inode)
3183{
3184 __insert_inode_hash(inode, inode->i_ino);
3185}
3186
3187extern void __remove_inode_hash(struct inode *);
3188static inline void remove_inode_hash(struct inode *inode)
3189{
3190 if (!inode_unhashed(inode) && !hlist_fake(&inode->i_hash))
3191 __remove_inode_hash(inode);
3192}
3193
3194extern void inode_sb_list_add(struct inode *inode);
3195
3196extern int sb_set_blocksize(struct super_block *, int);
3197extern int sb_min_blocksize(struct super_block *, int);
3198
3199extern int generic_file_mmap(struct file *, struct vm_area_struct *);
3200extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *);
3201extern ssize_t generic_write_checks(struct kiocb *, struct iov_iter *);
3202extern int generic_write_check_limits(struct file *file, loff_t pos,
3203 loff_t *count);
3204extern int generic_file_rw_checks(struct file *file_in, struct file *file_out);
3205ssize_t filemap_read(struct kiocb *iocb, struct iov_iter *to,
3206 ssize_t already_read);
3207extern ssize_t generic_file_read_iter(struct kiocb *, struct iov_iter *);
3208extern ssize_t __generic_file_write_iter(struct kiocb *, struct iov_iter *);
3209extern ssize_t generic_file_write_iter(struct kiocb *, struct iov_iter *);
3210extern ssize_t generic_file_direct_write(struct kiocb *, struct iov_iter *);
3211extern ssize_t generic_perform_write(struct file *, struct iov_iter *, loff_t);
3212
3213ssize_t vfs_iter_read(struct file *file, struct iov_iter *iter, loff_t *ppos,
3214 rwf_t flags);
3215ssize_t vfs_iter_write(struct file *file, struct iov_iter *iter, loff_t *ppos,
3216 rwf_t flags);
3217ssize_t vfs_iocb_iter_read(struct file *file, struct kiocb *iocb,
3218 struct iov_iter *iter);
3219ssize_t vfs_iocb_iter_write(struct file *file, struct kiocb *iocb,
3220 struct iov_iter *iter);
3221
3222
3223extern ssize_t generic_file_splice_read(struct file *, loff_t *,
3224 struct pipe_inode_info *, size_t, unsigned int);
3225extern ssize_t iter_file_splice_write(struct pipe_inode_info *,
3226 struct file *, loff_t *, size_t, unsigned int);
3227extern ssize_t generic_splice_sendpage(struct pipe_inode_info *pipe,
3228 struct file *out, loff_t *, size_t len, unsigned int flags);
3229extern long do_splice_direct(struct file *in, loff_t *ppos, struct file *out,
3230 loff_t *opos, size_t len, unsigned int flags);
3231
3232
3233extern void
3234file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
3235extern loff_t noop_llseek(struct file *file, loff_t offset, int whence);
3236extern loff_t no_llseek(struct file *file, loff_t offset, int whence);
3237extern loff_t vfs_setpos(struct file *file, loff_t offset, loff_t maxsize);
3238extern loff_t generic_file_llseek(struct file *file, loff_t offset, int whence);
3239extern loff_t generic_file_llseek_size(struct file *file, loff_t offset,
3240 int whence, loff_t maxsize, loff_t eof);
3241extern loff_t fixed_size_llseek(struct file *file, loff_t offset,
3242 int whence, loff_t size);
3243extern loff_t no_seek_end_llseek_size(struct file *, loff_t, int, loff_t);
3244extern loff_t no_seek_end_llseek(struct file *, loff_t, int);
3245extern int generic_file_open(struct inode * inode, struct file * filp);
3246extern int nonseekable_open(struct inode * inode, struct file * filp);
3247extern int stream_open(struct inode * inode, struct file * filp);
3248
3249#ifdef CONFIG_BLOCK
3250typedef void (dio_submit_t)(struct bio *bio, struct inode *inode,
3251 loff_t file_offset);
3252
3253enum {
3254
3255 DIO_LOCKING = 0x01,
3256
3257
3258 DIO_SKIP_HOLES = 0x02,
3259};
3260
3261ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
3262 struct block_device *bdev, struct iov_iter *iter,
3263 get_block_t get_block,
3264 dio_iodone_t end_io, dio_submit_t submit_io,
3265 int flags);
3266
3267static inline ssize_t blockdev_direct_IO(struct kiocb *iocb,
3268 struct inode *inode,
3269 struct iov_iter *iter,
3270 get_block_t get_block)
3271{
3272 return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, iter,
3273 get_block, NULL, NULL, DIO_LOCKING | DIO_SKIP_HOLES);
3274}
3275#endif
3276
3277void inode_dio_wait(struct inode *inode);
3278
3279
3280
3281
3282
3283
3284
3285
3286static inline void inode_dio_begin(struct inode *inode)
3287{
3288 atomic_inc(&inode->i_dio_count);
3289}
3290
3291
3292
3293
3294
3295
3296
3297
3298static inline void inode_dio_end(struct inode *inode)
3299{
3300 if (atomic_dec_and_test(&inode->i_dio_count))
3301 wake_up_bit(&inode->i_state, __I_DIO_WAKEUP);
3302}
3303
3304
3305
3306
3307void dio_warn_stale_pagecache(struct file *filp);
3308
3309extern void inode_set_flags(struct inode *inode, unsigned int flags,
3310 unsigned int mask);
3311
3312extern const struct file_operations generic_ro_fops;
3313
3314#define special_file(m) (S_ISCHR(m)||S_ISBLK(m)||S_ISFIFO(m)||S_ISSOCK(m))
3315
3316extern int readlink_copy(char __user *, int, const char *);
3317extern int page_readlink(struct dentry *, char __user *, int);
3318extern const char *page_get_link(struct dentry *, struct inode *,
3319 struct delayed_call *);
3320extern void page_put_link(void *);
3321extern int __page_symlink(struct inode *inode, const char *symname, int len,
3322 int nofs);
3323extern int page_symlink(struct inode *inode, const char *symname, int len);
3324extern const struct inode_operations page_symlink_inode_operations;
3325extern void kfree_link(void *);
3326void generic_fillattr(struct user_namespace *, struct inode *, struct kstat *);
3327void generic_fill_statx_attr(struct inode *inode, struct kstat *stat);
3328extern int vfs_getattr_nosec(const struct path *, struct kstat *, u32, unsigned int);
3329extern int vfs_getattr(const struct path *, struct kstat *, u32, unsigned int);
3330void __inode_add_bytes(struct inode *inode, loff_t bytes);
3331void inode_add_bytes(struct inode *inode, loff_t bytes);
3332void __inode_sub_bytes(struct inode *inode, loff_t bytes);
3333void inode_sub_bytes(struct inode *inode, loff_t bytes);
3334static inline loff_t __inode_get_bytes(struct inode *inode)
3335{
3336 return (((loff_t)inode->i_blocks) << 9) + inode->i_bytes;
3337}
3338loff_t inode_get_bytes(struct inode *inode);
3339void inode_set_bytes(struct inode *inode, loff_t bytes);
3340const char *simple_get_link(struct dentry *, struct inode *,
3341 struct delayed_call *);
3342extern const struct inode_operations simple_symlink_inode_operations;
3343
3344extern int iterate_dir(struct file *, struct dir_context *);
3345
3346int vfs_fstatat(int dfd, const char __user *filename, struct kstat *stat,
3347 int flags);
3348int vfs_fstat(int fd, struct kstat *stat);
3349
3350static inline int vfs_stat(const char __user *filename, struct kstat *stat)
3351{
3352 return vfs_fstatat(AT_FDCWD, filename, stat, 0);
3353}
3354static inline int vfs_lstat(const char __user *name, struct kstat *stat)
3355{
3356 return vfs_fstatat(AT_FDCWD, name, stat, AT_SYMLINK_NOFOLLOW);
3357}
3358
3359extern const char *vfs_get_link(struct dentry *, struct delayed_call *);
3360extern int vfs_readlink(struct dentry *, char __user *, int);
3361
3362extern struct file_system_type *get_filesystem(struct file_system_type *fs);
3363extern void put_filesystem(struct file_system_type *fs);
3364extern struct file_system_type *get_fs_type(const char *name);
3365extern struct super_block *get_super(struct block_device *);
3366extern struct super_block *get_active_super(struct block_device *bdev);
3367extern void drop_super(struct super_block *sb);
3368extern void drop_super_exclusive(struct super_block *sb);
3369extern void iterate_supers(void (*)(struct super_block *, void *), void *);
3370extern void iterate_supers_type(struct file_system_type *,
3371 void (*)(struct super_block *, void *), void *);
3372
3373extern int dcache_dir_open(struct inode *, struct file *);
3374extern int dcache_dir_close(struct inode *, struct file *);
3375extern loff_t dcache_dir_lseek(struct file *, loff_t, int);
3376extern int dcache_readdir(struct file *, struct dir_context *);
3377extern int simple_setattr(struct user_namespace *, struct dentry *,
3378 struct iattr *);
3379extern int simple_getattr(struct user_namespace *, const struct path *,
3380 struct kstat *, u32, unsigned int);
3381extern int simple_statfs(struct dentry *, struct kstatfs *);
3382extern int simple_open(struct inode *inode, struct file *file);
3383extern int simple_link(struct dentry *, struct inode *, struct dentry *);
3384extern int simple_unlink(struct inode *, struct dentry *);
3385extern int simple_rmdir(struct inode *, struct dentry *);
3386extern int simple_rename(struct user_namespace *, struct inode *,
3387 struct dentry *, struct inode *, struct dentry *,
3388 unsigned int);
3389extern void simple_recursive_removal(struct dentry *,
3390 void (*callback)(struct dentry *));
3391extern int noop_fsync(struct file *, loff_t, loff_t, int);
3392extern void noop_invalidatepage(struct page *page, unsigned int offset,
3393 unsigned int length);
3394extern ssize_t noop_direct_IO(struct kiocb *iocb, struct iov_iter *iter);
3395extern int simple_empty(struct dentry *);
3396extern int simple_write_begin(struct file *file, struct address_space *mapping,
3397 loff_t pos, unsigned len, unsigned flags,
3398 struct page **pagep, void **fsdata);
3399extern const struct address_space_operations ram_aops;
3400extern int always_delete_dentry(const struct dentry *);
3401extern struct inode *alloc_anon_inode(struct super_block *);
3402extern int simple_nosetlease(struct file *, long, struct file_lock **, void **);
3403extern const struct dentry_operations simple_dentry_operations;
3404
3405extern struct dentry *simple_lookup(struct inode *, struct dentry *, unsigned int flags);
3406extern ssize_t generic_read_dir(struct file *, char __user *, size_t, loff_t *);
3407extern const struct file_operations simple_dir_operations;
3408extern const struct inode_operations simple_dir_inode_operations;
3409extern void make_empty_dir_inode(struct inode *inode);
3410extern bool is_empty_dir_inode(struct inode *inode);
3411struct tree_descr { const char *name; const struct file_operations *ops; int mode; };
3412struct dentry *d_alloc_name(struct dentry *, const char *);
3413extern int simple_fill_super(struct super_block *, unsigned long,
3414 const struct tree_descr *);
3415extern int simple_pin_fs(struct file_system_type *, struct vfsmount **mount, int *count);
3416extern void simple_release_fs(struct vfsmount **mount, int *count);
3417
3418extern ssize_t simple_read_from_buffer(void __user *to, size_t count,
3419 loff_t *ppos, const void *from, size_t available);
3420extern ssize_t simple_write_to_buffer(void *to, size_t available, loff_t *ppos,
3421 const void __user *from, size_t count);
3422
3423extern int __generic_file_fsync(struct file *, loff_t, loff_t, int);
3424extern int generic_file_fsync(struct file *, loff_t, loff_t, int);
3425
3426extern int generic_check_addressable(unsigned, u64);
3427
3428extern void generic_set_encrypted_ci_d_ops(struct dentry *dentry);
3429
3430#ifdef CONFIG_MIGRATION
3431extern int buffer_migrate_page(struct address_space *,
3432 struct page *, struct page *,
3433 enum migrate_mode);
3434extern int buffer_migrate_page_norefs(struct address_space *,
3435 struct page *, struct page *,
3436 enum migrate_mode);
3437#else
3438#define buffer_migrate_page NULL
3439#define buffer_migrate_page_norefs NULL
3440#endif
3441
3442int may_setattr(struct user_namespace *mnt_userns, struct inode *inode,
3443 unsigned int ia_valid);
3444int setattr_prepare(struct user_namespace *, struct dentry *, struct iattr *);
3445extern int inode_newsize_ok(const struct inode *, loff_t offset);
3446void setattr_copy(struct user_namespace *, struct inode *inode,
3447 const struct iattr *attr);
3448
3449extern int file_update_time(struct file *file);
3450
3451static inline bool vma_is_dax(const struct vm_area_struct *vma)
3452{
3453 return vma->vm_file && IS_DAX(vma->vm_file->f_mapping->host);
3454}
3455
3456static inline bool vma_is_fsdax(struct vm_area_struct *vma)
3457{
3458 struct inode *inode;
3459
3460 if (!IS_ENABLED(CONFIG_FS_DAX) || !vma->vm_file)
3461 return false;
3462 if (!vma_is_dax(vma))
3463 return false;
3464 inode = file_inode(vma->vm_file);
3465 if (S_ISCHR(inode->i_mode))
3466 return false;
3467 return true;
3468}
3469
3470static inline int iocb_flags(struct file *file)
3471{
3472 int res = 0;
3473 if (file->f_flags & O_APPEND)
3474 res |= IOCB_APPEND;
3475 if (file->f_flags & O_DIRECT)
3476 res |= IOCB_DIRECT;
3477 if ((file->f_flags & O_DSYNC) || IS_SYNC(file->f_mapping->host))
3478 res |= IOCB_DSYNC;
3479 if (file->f_flags & __O_SYNC)
3480 res |= IOCB_SYNC;
3481 return res;
3482}
3483
3484static inline int kiocb_set_rw_flags(struct kiocb *ki, rwf_t flags)
3485{
3486 int kiocb_flags = 0;
3487
3488
3489 BUILD_BUG_ON((__force int) RWF_SUPPORTED & IOCB_EVENTFD);
3490
3491 if (!flags)
3492 return 0;
3493 if (unlikely(flags & ~RWF_SUPPORTED))
3494 return -EOPNOTSUPP;
3495
3496 if (flags & RWF_NOWAIT) {
3497 if (!(ki->ki_filp->f_mode & FMODE_NOWAIT))
3498 return -EOPNOTSUPP;
3499 kiocb_flags |= IOCB_NOIO;
3500 }
3501 kiocb_flags |= (__force int) (flags & RWF_SUPPORTED);
3502 if (flags & RWF_SYNC)
3503 kiocb_flags |= IOCB_DSYNC;
3504
3505 ki->ki_flags |= kiocb_flags;
3506 return 0;
3507}
3508
3509static inline ino_t parent_ino(struct dentry *dentry)
3510{
3511 ino_t res;
3512
3513
3514
3515
3516
3517 spin_lock(&dentry->d_lock);
3518 res = dentry->d_parent->d_inode->i_ino;
3519 spin_unlock(&dentry->d_lock);
3520 return res;
3521}
3522
3523
3524
3525
3526
3527
3528
3529struct simple_transaction_argresp {
3530 ssize_t size;
3531 char data[];
3532};
3533
3534#define SIMPLE_TRANSACTION_LIMIT (PAGE_SIZE - sizeof(struct simple_transaction_argresp))
3535
3536char *simple_transaction_get(struct file *file, const char __user *buf,
3537 size_t size);
3538ssize_t simple_transaction_read(struct file *file, char __user *buf,
3539 size_t size, loff_t *pos);
3540int simple_transaction_release(struct inode *inode, struct file *file);
3541
3542void simple_transaction_set(struct file *file, size_t n);
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560#define DEFINE_SIMPLE_ATTRIBUTE(__fops, __get, __set, __fmt) \
3561static int __fops ## _open(struct inode *inode, struct file *file) \
3562{ \
3563 __simple_attr_check_format(__fmt, 0ull); \
3564 return simple_attr_open(inode, file, __get, __set, __fmt); \
3565} \
3566static const struct file_operations __fops = { \
3567 .owner = THIS_MODULE, \
3568 .open = __fops ## _open, \
3569 .release = simple_attr_release, \
3570 .read = simple_attr_read, \
3571 .write = simple_attr_write, \
3572 .llseek = generic_file_llseek, \
3573}
3574
3575static inline __printf(1, 2)
3576void __simple_attr_check_format(const char *fmt, ...)
3577{
3578
3579}
3580
3581int simple_attr_open(struct inode *inode, struct file *file,
3582 int (*get)(void *, u64 *), int (*set)(void *, u64),
3583 const char *fmt);
3584int simple_attr_release(struct inode *inode, struct file *file);
3585ssize_t simple_attr_read(struct file *file, char __user *buf,
3586 size_t len, loff_t *ppos);
3587ssize_t simple_attr_write(struct file *file, const char __user *buf,
3588 size_t len, loff_t *ppos);
3589
3590struct ctl_table;
3591int proc_nr_files(struct ctl_table *table, int write,
3592 void *buffer, size_t *lenp, loff_t *ppos);
3593int proc_nr_dentry(struct ctl_table *table, int write,
3594 void *buffer, size_t *lenp, loff_t *ppos);
3595int proc_nr_inodes(struct ctl_table *table, int write,
3596 void *buffer, size_t *lenp, loff_t *ppos);
3597int __init list_bdev_fs_names(char *buf, size_t size);
3598
3599#define __FMODE_EXEC ((__force int) FMODE_EXEC)
3600#define __FMODE_NONOTIFY ((__force int) FMODE_NONOTIFY)
3601
3602#define ACC_MODE(x) ("\004\002\006\006"[(x)&O_ACCMODE])
3603#define OPEN_FMODE(flag) ((__force fmode_t)(((flag + 1) & O_ACCMODE) | \
3604 (flag & __FMODE_NONOTIFY)))
3605
3606static inline bool is_sxid(umode_t mode)
3607{
3608 return (mode & S_ISUID) || ((mode & S_ISGID) && (mode & S_IXGRP));
3609}
3610
3611static inline int check_sticky(struct user_namespace *mnt_userns,
3612 struct inode *dir, struct inode *inode)
3613{
3614 if (!(dir->i_mode & S_ISVTX))
3615 return 0;
3616
3617 return __check_sticky(mnt_userns, dir, inode);
3618}
3619
3620static inline void inode_has_no_xattr(struct inode *inode)
3621{
3622 if (!is_sxid(inode->i_mode) && (inode->i_sb->s_flags & SB_NOSEC))
3623 inode->i_flags |= S_NOSEC;
3624}
3625
3626static inline bool is_root_inode(struct inode *inode)
3627{
3628 return inode == inode->i_sb->s_root->d_inode;
3629}
3630
3631static inline bool dir_emit(struct dir_context *ctx,
3632 const char *name, int namelen,
3633 u64 ino, unsigned type)
3634{
3635 return ctx->actor(ctx, name, namelen, ctx->pos, ino, type) == 0;
3636}
3637static inline bool dir_emit_dot(struct file *file, struct dir_context *ctx)
3638{
3639 return ctx->actor(ctx, ".", 1, ctx->pos,
3640 file->f_path.dentry->d_inode->i_ino, DT_DIR) == 0;
3641}
3642static inline bool dir_emit_dotdot(struct file *file, struct dir_context *ctx)
3643{
3644 return ctx->actor(ctx, "..", 2, ctx->pos,
3645 parent_ino(file->f_path.dentry), DT_DIR) == 0;
3646}
3647static inline bool dir_emit_dots(struct file *file, struct dir_context *ctx)
3648{
3649 if (ctx->pos == 0) {
3650 if (!dir_emit_dot(file, ctx))
3651 return false;
3652 ctx->pos = 1;
3653 }
3654 if (ctx->pos == 1) {
3655 if (!dir_emit_dotdot(file, ctx))
3656 return false;
3657 ctx->pos = 2;
3658 }
3659 return true;
3660}
3661static inline bool dir_relax(struct inode *inode)
3662{
3663 inode_unlock(inode);
3664 inode_lock(inode);
3665 return !IS_DEADDIR(inode);
3666}
3667
3668static inline bool dir_relax_shared(struct inode *inode)
3669{
3670 inode_unlock_shared(inode);
3671 inode_lock_shared(inode);
3672 return !IS_DEADDIR(inode);
3673}
3674
3675extern bool path_noexec(const struct path *path);
3676extern void inode_nohighmem(struct inode *inode);
3677
3678
3679extern int vfs_fadvise(struct file *file, loff_t offset, loff_t len,
3680 int advice);
3681extern int generic_fadvise(struct file *file, loff_t offset, loff_t len,
3682 int advice);
3683
3684
3685
3686
3687
3688
3689static inline int inode_drain_writes(struct inode *inode)
3690{
3691 inode_dio_wait(inode);
3692 return filemap_write_and_wait(inode->i_mapping);
3693}
3694
3695#endif
3696