1
2
3
4
5
6#include <linux/export.h>
7#include <linux/fs.h>
8#include <linux/mm.h>
9#include <linux/backing-dev.h>
10#include <linux/hash.h>
11#include <linux/swap.h>
12#include <linux/security.h>
13#include <linux/cdev.h>
14#include <linux/memblock.h>
15#include <linux/fscrypt.h>
16#include <linux/fsnotify.h>
17#include <linux/mount.h>
18#include <linux/posix_acl.h>
19#include <linux/prefetch.h>
20#include <linux/buffer_head.h>
21#include <linux/ratelimit.h>
22#include <linux/list_lru.h>
23#include <linux/iversion.h>
24#include <trace/events/writeback.h>
25#include "internal.h"
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58static unsigned int i_hash_mask __read_mostly;
59static unsigned int i_hash_shift __read_mostly;
60static struct hlist_head *inode_hashtable __read_mostly;
61static __cacheline_aligned_in_smp DEFINE_SPINLOCK(inode_hash_lock);
62
63
64
65
66
67const struct address_space_operations empty_aops = {
68};
69EXPORT_SYMBOL(empty_aops);
70
71
72
73
74struct inodes_stat_t inodes_stat;
75
76static DEFINE_PER_CPU(unsigned long, nr_inodes);
77static DEFINE_PER_CPU(unsigned long, nr_unused);
78
79static struct kmem_cache *inode_cachep __read_mostly;
80
81static long get_nr_inodes(void)
82{
83 int i;
84 long sum = 0;
85 for_each_possible_cpu(i)
86 sum += per_cpu(nr_inodes, i);
87 return sum < 0 ? 0 : sum;
88}
89
90static inline long get_nr_inodes_unused(void)
91{
92 int i;
93 long sum = 0;
94 for_each_possible_cpu(i)
95 sum += per_cpu(nr_unused, i);
96 return sum < 0 ? 0 : sum;
97}
98
99long get_nr_dirty_inodes(void)
100{
101
102 long nr_dirty = get_nr_inodes() - get_nr_inodes_unused();
103 return nr_dirty > 0 ? nr_dirty : 0;
104}
105
106
107
108
109#ifdef CONFIG_SYSCTL
110int proc_nr_inodes(struct ctl_table *table, int write,
111 void *buffer, size_t *lenp, loff_t *ppos)
112{
113 inodes_stat.nr_inodes = get_nr_inodes();
114 inodes_stat.nr_unused = get_nr_inodes_unused();
115 return proc_doulongvec_minmax(table, write, buffer, lenp, ppos);
116}
117#endif
118
119static int no_open(struct inode *inode, struct file *file)
120{
121 return -ENXIO;
122}
123
124
125
126
127
128
129
130
131
132int inode_init_always(struct super_block *sb, struct inode *inode)
133{
134 static const struct inode_operations empty_iops;
135 static const struct file_operations no_open_fops = {.open = no_open};
136 struct address_space *const mapping = &inode->i_data;
137
138 inode->i_sb = sb;
139 inode->i_blkbits = sb->s_blocksize_bits;
140 inode->i_flags = 0;
141 atomic64_set(&inode->i_sequence, 0);
142 atomic_set(&inode->i_count, 1);
143 inode->i_op = &empty_iops;
144 inode->i_fop = &no_open_fops;
145 inode->__i_nlink = 1;
146 inode->i_opflags = 0;
147 if (sb->s_xattr)
148 inode->i_opflags |= IOP_XATTR;
149 i_uid_write(inode, 0);
150 i_gid_write(inode, 0);
151 atomic_set(&inode->i_writecount, 0);
152 inode->i_size = 0;
153 inode->i_write_hint = WRITE_LIFE_NOT_SET;
154 inode->i_blocks = 0;
155 inode->i_bytes = 0;
156 inode->i_generation = 0;
157 inode->i_pipe = NULL;
158 inode->i_bdev = NULL;
159 inode->i_cdev = NULL;
160 inode->i_link = NULL;
161 inode->i_dir_seq = 0;
162 inode->i_rdev = 0;
163 inode->dirtied_when = 0;
164
165#ifdef CONFIG_CGROUP_WRITEBACK
166 inode->i_wb_frn_winner = 0;
167 inode->i_wb_frn_avg_time = 0;
168 inode->i_wb_frn_history = 0;
169#endif
170
171 if (security_inode_alloc(inode))
172 goto out;
173 spin_lock_init(&inode->i_lock);
174 lockdep_set_class(&inode->i_lock, &sb->s_type->i_lock_key);
175
176 init_rwsem(&inode->i_rwsem);
177 lockdep_set_class(&inode->i_rwsem, &sb->s_type->i_mutex_key);
178
179 atomic_set(&inode->i_dio_count, 0);
180
181 mapping->a_ops = &empty_aops;
182 mapping->host = inode;
183 mapping->flags = 0;
184 if (sb->s_type->fs_flags & FS_THP_SUPPORT)
185 __set_bit(AS_THP_SUPPORT, &mapping->flags);
186 mapping->wb_err = 0;
187 atomic_set(&mapping->i_mmap_writable, 0);
188#ifdef CONFIG_READ_ONLY_THP_FOR_FS
189 atomic_set(&mapping->nr_thps, 0);
190#endif
191 mapping_set_gfp_mask(mapping, GFP_HIGHUSER_MOVABLE);
192 mapping->private_data = NULL;
193 mapping->writeback_index = 0;
194 inode->i_private = NULL;
195 inode->i_mapping = mapping;
196 INIT_HLIST_HEAD(&inode->i_dentry);
197#ifdef CONFIG_FS_POSIX_ACL
198 inode->i_acl = inode->i_default_acl = ACL_NOT_CACHED;
199#endif
200
201#ifdef CONFIG_FSNOTIFY
202 inode->i_fsnotify_mask = 0;
203#endif
204 inode->i_flctx = NULL;
205 this_cpu_inc(nr_inodes);
206
207 return 0;
208out:
209 return -ENOMEM;
210}
211EXPORT_SYMBOL(inode_init_always);
212
213void free_inode_nonrcu(struct inode *inode)
214{
215 kmem_cache_free(inode_cachep, inode);
216}
217EXPORT_SYMBOL(free_inode_nonrcu);
218
219static void i_callback(struct rcu_head *head)
220{
221 struct inode *inode = container_of(head, struct inode, i_rcu);
222 if (inode->free_inode)
223 inode->free_inode(inode);
224 else
225 free_inode_nonrcu(inode);
226}
227
228static struct inode *alloc_inode(struct super_block *sb)
229{
230 const struct super_operations *ops = sb->s_op;
231 struct inode *inode;
232
233 if (ops->alloc_inode)
234 inode = ops->alloc_inode(sb);
235 else
236 inode = kmem_cache_alloc(inode_cachep, GFP_KERNEL);
237
238 if (!inode)
239 return NULL;
240
241 if (unlikely(inode_init_always(sb, inode))) {
242 if (ops->destroy_inode) {
243 ops->destroy_inode(inode);
244 if (!ops->free_inode)
245 return NULL;
246 }
247 inode->free_inode = ops->free_inode;
248 i_callback(&inode->i_rcu);
249 return NULL;
250 }
251
252 return inode;
253}
254
255void __destroy_inode(struct inode *inode)
256{
257 BUG_ON(inode_has_buffers(inode));
258 inode_detach_wb(inode);
259 security_inode_free(inode);
260 fsnotify_inode_delete(inode);
261 locks_free_lock_context(inode);
262 if (!inode->i_nlink) {
263 WARN_ON(atomic_long_read(&inode->i_sb->s_remove_count) == 0);
264 atomic_long_dec(&inode->i_sb->s_remove_count);
265 }
266
267#ifdef CONFIG_FS_POSIX_ACL
268 if (inode->i_acl && !is_uncached_acl(inode->i_acl))
269 posix_acl_release(inode->i_acl);
270 if (inode->i_default_acl && !is_uncached_acl(inode->i_default_acl))
271 posix_acl_release(inode->i_default_acl);
272#endif
273 this_cpu_dec(nr_inodes);
274}
275EXPORT_SYMBOL(__destroy_inode);
276
277static void destroy_inode(struct inode *inode)
278{
279 const struct super_operations *ops = inode->i_sb->s_op;
280
281 BUG_ON(!list_empty(&inode->i_lru));
282 __destroy_inode(inode);
283 if (ops->destroy_inode) {
284 ops->destroy_inode(inode);
285 if (!ops->free_inode)
286 return;
287 }
288 inode->free_inode = ops->free_inode;
289 call_rcu(&inode->i_rcu, i_callback);
290}
291
292
293
294
295
296
297
298
299
300
301
302
303void drop_nlink(struct inode *inode)
304{
305 WARN_ON(inode->i_nlink == 0);
306 inode->__i_nlink--;
307 if (!inode->i_nlink)
308 atomic_long_inc(&inode->i_sb->s_remove_count);
309}
310EXPORT_SYMBOL(drop_nlink);
311
312
313
314
315
316
317
318
319
320void clear_nlink(struct inode *inode)
321{
322 if (inode->i_nlink) {
323 inode->__i_nlink = 0;
324 atomic_long_inc(&inode->i_sb->s_remove_count);
325 }
326}
327EXPORT_SYMBOL(clear_nlink);
328
329
330
331
332
333
334
335
336
337void set_nlink(struct inode *inode, unsigned int nlink)
338{
339 if (!nlink) {
340 clear_nlink(inode);
341 } else {
342
343 if (inode->i_nlink == 0)
344 atomic_long_dec(&inode->i_sb->s_remove_count);
345
346 inode->__i_nlink = nlink;
347 }
348}
349EXPORT_SYMBOL(set_nlink);
350
351
352
353
354
355
356
357
358
359void inc_nlink(struct inode *inode)
360{
361 if (unlikely(inode->i_nlink == 0)) {
362 WARN_ON(!(inode->i_state & I_LINKABLE));
363 atomic_long_dec(&inode->i_sb->s_remove_count);
364 }
365
366 inode->__i_nlink++;
367}
368EXPORT_SYMBOL(inc_nlink);
369
370static void __address_space_init_once(struct address_space *mapping)
371{
372 xa_init_flags(&mapping->i_pages, XA_FLAGS_LOCK_IRQ | XA_FLAGS_ACCOUNT);
373 init_rwsem(&mapping->i_mmap_rwsem);
374 INIT_LIST_HEAD(&mapping->private_list);
375 spin_lock_init(&mapping->private_lock);
376 mapping->i_mmap = RB_ROOT_CACHED;
377}
378
379void address_space_init_once(struct address_space *mapping)
380{
381 memset(mapping, 0, sizeof(*mapping));
382 __address_space_init_once(mapping);
383}
384EXPORT_SYMBOL(address_space_init_once);
385
386
387
388
389
390
391void inode_init_once(struct inode *inode)
392{
393 memset(inode, 0, sizeof(*inode));
394 INIT_HLIST_NODE(&inode->i_hash);
395 INIT_LIST_HEAD(&inode->i_devices);
396 INIT_LIST_HEAD(&inode->i_io_list);
397 INIT_LIST_HEAD(&inode->i_wb_list);
398 INIT_LIST_HEAD(&inode->i_lru);
399 __address_space_init_once(&inode->i_data);
400 i_size_ordered_init(inode);
401}
402EXPORT_SYMBOL(inode_init_once);
403
404static void init_once(void *foo)
405{
406 struct inode *inode = (struct inode *) foo;
407
408 inode_init_once(inode);
409}
410
411
412
413
414void __iget(struct inode *inode)
415{
416 atomic_inc(&inode->i_count);
417}
418
419
420
421
422void ihold(struct inode *inode)
423{
424 WARN_ON(atomic_inc_return(&inode->i_count) < 2);
425}
426EXPORT_SYMBOL(ihold);
427
428static void inode_lru_list_add(struct inode *inode)
429{
430 if (list_lru_add(&inode->i_sb->s_inode_lru, &inode->i_lru))
431 this_cpu_inc(nr_unused);
432 else
433 inode->i_state |= I_REFERENCED;
434}
435
436
437
438
439
440
441void inode_add_lru(struct inode *inode)
442{
443 if (!(inode->i_state & (I_DIRTY_ALL | I_SYNC |
444 I_FREEING | I_WILL_FREE)) &&
445 !atomic_read(&inode->i_count) && inode->i_sb->s_flags & SB_ACTIVE)
446 inode_lru_list_add(inode);
447}
448
449
450static void inode_lru_list_del(struct inode *inode)
451{
452
453 if (list_lru_del(&inode->i_sb->s_inode_lru, &inode->i_lru))
454 this_cpu_dec(nr_unused);
455}
456
457
458
459
460
461void inode_sb_list_add(struct inode *inode)
462{
463 spin_lock(&inode->i_sb->s_inode_list_lock);
464 list_add(&inode->i_sb_list, &inode->i_sb->s_inodes);
465 spin_unlock(&inode->i_sb->s_inode_list_lock);
466}
467EXPORT_SYMBOL_GPL(inode_sb_list_add);
468
469static inline void inode_sb_list_del(struct inode *inode)
470{
471 if (!list_empty(&inode->i_sb_list)) {
472 spin_lock(&inode->i_sb->s_inode_list_lock);
473 list_del_init(&inode->i_sb_list);
474 spin_unlock(&inode->i_sb->s_inode_list_lock);
475 }
476}
477
478static unsigned long hash(struct super_block *sb, unsigned long hashval)
479{
480 unsigned long tmp;
481
482 tmp = (hashval * (unsigned long)sb) ^ (GOLDEN_RATIO_PRIME + hashval) /
483 L1_CACHE_BYTES;
484 tmp = tmp ^ ((tmp ^ GOLDEN_RATIO_PRIME) >> i_hash_shift);
485 return tmp & i_hash_mask;
486}
487
488
489
490
491
492
493
494
495
496void __insert_inode_hash(struct inode *inode, unsigned long hashval)
497{
498 struct hlist_head *b = inode_hashtable + hash(inode->i_sb, hashval);
499
500 spin_lock(&inode_hash_lock);
501 spin_lock(&inode->i_lock);
502 hlist_add_head_rcu(&inode->i_hash, b);
503 spin_unlock(&inode->i_lock);
504 spin_unlock(&inode_hash_lock);
505}
506EXPORT_SYMBOL(__insert_inode_hash);
507
508
509
510
511
512
513
514void __remove_inode_hash(struct inode *inode)
515{
516 spin_lock(&inode_hash_lock);
517 spin_lock(&inode->i_lock);
518 hlist_del_init_rcu(&inode->i_hash);
519 spin_unlock(&inode->i_lock);
520 spin_unlock(&inode_hash_lock);
521}
522EXPORT_SYMBOL(__remove_inode_hash);
523
524void clear_inode(struct inode *inode)
525{
526
527
528
529
530
531 xa_lock_irq(&inode->i_data.i_pages);
532 BUG_ON(inode->i_data.nrpages);
533 BUG_ON(inode->i_data.nrexceptional);
534 xa_unlock_irq(&inode->i_data.i_pages);
535 BUG_ON(!list_empty(&inode->i_data.private_list));
536 BUG_ON(!(inode->i_state & I_FREEING));
537 BUG_ON(inode->i_state & I_CLEAR);
538 BUG_ON(!list_empty(&inode->i_wb_list));
539
540 inode->i_state = I_FREEING | I_CLEAR;
541}
542EXPORT_SYMBOL(clear_inode);
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557static void evict(struct inode *inode)
558{
559 const struct super_operations *op = inode->i_sb->s_op;
560
561 BUG_ON(!(inode->i_state & I_FREEING));
562 BUG_ON(!list_empty(&inode->i_lru));
563
564 if (!list_empty(&inode->i_io_list))
565 inode_io_list_del(inode);
566
567 inode_sb_list_del(inode);
568
569
570
571
572
573
574
575 inode_wait_for_writeback(inode);
576
577 if (op->evict_inode) {
578 op->evict_inode(inode);
579 } else {
580 truncate_inode_pages_final(&inode->i_data);
581 clear_inode(inode);
582 }
583 if (S_ISBLK(inode->i_mode) && inode->i_bdev)
584 bd_forget(inode);
585 if (S_ISCHR(inode->i_mode) && inode->i_cdev)
586 cd_forget(inode);
587
588 remove_inode_hash(inode);
589
590 spin_lock(&inode->i_lock);
591 wake_up_bit(&inode->i_state, __I_NEW);
592 BUG_ON(inode->i_state != (I_FREEING | I_CLEAR));
593 spin_unlock(&inode->i_lock);
594
595 destroy_inode(inode);
596}
597
598
599
600
601
602
603
604
605static void dispose_list(struct list_head *head)
606{
607 while (!list_empty(head)) {
608 struct inode *inode;
609
610 inode = list_first_entry(head, struct inode, i_lru);
611 list_del_init(&inode->i_lru);
612
613 evict(inode);
614 cond_resched();
615 }
616}
617
618
619
620
621
622
623
624
625
626
627void evict_inodes(struct super_block *sb)
628{
629 struct inode *inode, *next;
630 LIST_HEAD(dispose);
631
632again:
633 spin_lock(&sb->s_inode_list_lock);
634 list_for_each_entry_safe(inode, next, &sb->s_inodes, i_sb_list) {
635 if (atomic_read(&inode->i_count))
636 continue;
637
638 spin_lock(&inode->i_lock);
639 if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) {
640 spin_unlock(&inode->i_lock);
641 continue;
642 }
643
644 inode->i_state |= I_FREEING;
645 inode_lru_list_del(inode);
646 spin_unlock(&inode->i_lock);
647 list_add(&inode->i_lru, &dispose);
648
649
650
651
652
653
654 if (need_resched()) {
655 spin_unlock(&sb->s_inode_list_lock);
656 cond_resched();
657 dispose_list(&dispose);
658 goto again;
659 }
660 }
661 spin_unlock(&sb->s_inode_list_lock);
662
663 dispose_list(&dispose);
664}
665EXPORT_SYMBOL_GPL(evict_inodes);
666
667
668
669
670
671
672
673
674
675
676
677int invalidate_inodes(struct super_block *sb, bool kill_dirty)
678{
679 int busy = 0;
680 struct inode *inode, *next;
681 LIST_HEAD(dispose);
682
683again:
684 spin_lock(&sb->s_inode_list_lock);
685 list_for_each_entry_safe(inode, next, &sb->s_inodes, i_sb_list) {
686 spin_lock(&inode->i_lock);
687 if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) {
688 spin_unlock(&inode->i_lock);
689 continue;
690 }
691 if (inode->i_state & I_DIRTY_ALL && !kill_dirty) {
692 spin_unlock(&inode->i_lock);
693 busy = 1;
694 continue;
695 }
696 if (atomic_read(&inode->i_count)) {
697 spin_unlock(&inode->i_lock);
698 busy = 1;
699 continue;
700 }
701
702 inode->i_state |= I_FREEING;
703 inode_lru_list_del(inode);
704 spin_unlock(&inode->i_lock);
705 list_add(&inode->i_lru, &dispose);
706 if (need_resched()) {
707 spin_unlock(&sb->s_inode_list_lock);
708 cond_resched();
709 dispose_list(&dispose);
710 goto again;
711 }
712 }
713 spin_unlock(&sb->s_inode_list_lock);
714
715 dispose_list(&dispose);
716
717 return busy;
718}
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735static enum lru_status inode_lru_isolate(struct list_head *item,
736 struct list_lru_one *lru, spinlock_t *lru_lock, void *arg)
737{
738 struct list_head *freeable = arg;
739 struct inode *inode = container_of(item, struct inode, i_lru);
740
741
742
743
744
745 if (!spin_trylock(&inode->i_lock))
746 return LRU_SKIP;
747
748
749
750
751
752 if (atomic_read(&inode->i_count) ||
753 (inode->i_state & ~I_REFERENCED)) {
754 list_lru_isolate(lru, &inode->i_lru);
755 spin_unlock(&inode->i_lock);
756 this_cpu_dec(nr_unused);
757 return LRU_REMOVED;
758 }
759
760
761 if (inode->i_state & I_REFERENCED) {
762 inode->i_state &= ~I_REFERENCED;
763 spin_unlock(&inode->i_lock);
764 return LRU_ROTATE;
765 }
766
767 if (inode_has_buffers(inode) || inode->i_data.nrpages) {
768 __iget(inode);
769 spin_unlock(&inode->i_lock);
770 spin_unlock(lru_lock);
771 if (remove_inode_buffers(inode)) {
772 unsigned long reap;
773 reap = invalidate_mapping_pages(&inode->i_data, 0, -1);
774 if (current_is_kswapd())
775 __count_vm_events(KSWAPD_INODESTEAL, reap);
776 else
777 __count_vm_events(PGINODESTEAL, reap);
778 if (current->reclaim_state)
779 current->reclaim_state->reclaimed_slab += reap;
780 }
781 iput(inode);
782 spin_lock(lru_lock);
783 return LRU_RETRY;
784 }
785
786 WARN_ON(inode->i_state & I_NEW);
787 inode->i_state |= I_FREEING;
788 list_lru_isolate_move(lru, &inode->i_lru, freeable);
789 spin_unlock(&inode->i_lock);
790
791 this_cpu_dec(nr_unused);
792 return LRU_REMOVED;
793}
794
795
796
797
798
799
800
801long prune_icache_sb(struct super_block *sb, struct shrink_control *sc)
802{
803 LIST_HEAD(freeable);
804 long freed;
805
806 freed = list_lru_shrink_walk(&sb->s_inode_lru, sc,
807 inode_lru_isolate, &freeable);
808 dispose_list(&freeable);
809 return freed;
810}
811
812static void __wait_on_freeing_inode(struct inode *inode);
813
814
815
816static struct inode *find_inode(struct super_block *sb,
817 struct hlist_head *head,
818 int (*test)(struct inode *, void *),
819 void *data)
820{
821 struct inode *inode = NULL;
822
823repeat:
824 hlist_for_each_entry(inode, head, i_hash) {
825 if (inode->i_sb != sb)
826 continue;
827 if (!test(inode, data))
828 continue;
829 spin_lock(&inode->i_lock);
830 if (inode->i_state & (I_FREEING|I_WILL_FREE)) {
831 __wait_on_freeing_inode(inode);
832 goto repeat;
833 }
834 if (unlikely(inode->i_state & I_CREATING)) {
835 spin_unlock(&inode->i_lock);
836 return ERR_PTR(-ESTALE);
837 }
838 __iget(inode);
839 spin_unlock(&inode->i_lock);
840 return inode;
841 }
842 return NULL;
843}
844
845
846
847
848
849static struct inode *find_inode_fast(struct super_block *sb,
850 struct hlist_head *head, unsigned long ino)
851{
852 struct inode *inode = NULL;
853
854repeat:
855 hlist_for_each_entry(inode, head, i_hash) {
856 if (inode->i_ino != ino)
857 continue;
858 if (inode->i_sb != sb)
859 continue;
860 spin_lock(&inode->i_lock);
861 if (inode->i_state & (I_FREEING|I_WILL_FREE)) {
862 __wait_on_freeing_inode(inode);
863 goto repeat;
864 }
865 if (unlikely(inode->i_state & I_CREATING)) {
866 spin_unlock(&inode->i_lock);
867 return ERR_PTR(-ESTALE);
868 }
869 __iget(inode);
870 spin_unlock(&inode->i_lock);
871 return inode;
872 }
873 return NULL;
874}
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891#define LAST_INO_BATCH 1024
892static DEFINE_PER_CPU(unsigned int, last_ino);
893
894unsigned int get_next_ino(void)
895{
896 unsigned int *p = &get_cpu_var(last_ino);
897 unsigned int res = *p;
898
899#ifdef CONFIG_SMP
900 if (unlikely((res & (LAST_INO_BATCH-1)) == 0)) {
901 static atomic_t shared_last_ino;
902 int next = atomic_add_return(LAST_INO_BATCH, &shared_last_ino);
903
904 res = next - LAST_INO_BATCH;
905 }
906#endif
907
908 res++;
909
910 if (unlikely(!res))
911 res++;
912 *p = res;
913 put_cpu_var(last_ino);
914 return res;
915}
916EXPORT_SYMBOL(get_next_ino);
917
918
919
920
921
922
923
924
925
926
927
928struct inode *new_inode_pseudo(struct super_block *sb)
929{
930 struct inode *inode = alloc_inode(sb);
931
932 if (inode) {
933 spin_lock(&inode->i_lock);
934 inode->i_state = 0;
935 spin_unlock(&inode->i_lock);
936 INIT_LIST_HEAD(&inode->i_sb_list);
937 }
938 return inode;
939}
940
941
942
943
944
945
946
947
948
949
950
951
952
953struct inode *new_inode(struct super_block *sb)
954{
955 struct inode *inode;
956
957 spin_lock_prefetch(&sb->s_inode_list_lock);
958
959 inode = new_inode_pseudo(sb);
960 if (inode)
961 inode_sb_list_add(inode);
962 return inode;
963}
964EXPORT_SYMBOL(new_inode);
965
966#ifdef CONFIG_DEBUG_LOCK_ALLOC
967void lockdep_annotate_inode_mutex_key(struct inode *inode)
968{
969 if (S_ISDIR(inode->i_mode)) {
970 struct file_system_type *type = inode->i_sb->s_type;
971
972
973 if (lockdep_match_class(&inode->i_rwsem, &type->i_mutex_key)) {
974
975
976
977
978 init_rwsem(&inode->i_rwsem);
979 lockdep_set_class(&inode->i_rwsem,
980 &type->i_mutex_dir_key);
981 }
982 }
983}
984EXPORT_SYMBOL(lockdep_annotate_inode_mutex_key);
985#endif
986
987
988
989
990
991
992
993
994void unlock_new_inode(struct inode *inode)
995{
996 lockdep_annotate_inode_mutex_key(inode);
997 spin_lock(&inode->i_lock);
998 WARN_ON(!(inode->i_state & I_NEW));
999 inode->i_state &= ~I_NEW & ~I_CREATING;
1000 smp_mb();
1001 wake_up_bit(&inode->i_state, __I_NEW);
1002 spin_unlock(&inode->i_lock);
1003}
1004EXPORT_SYMBOL(unlock_new_inode);
1005
1006void discard_new_inode(struct inode *inode)
1007{
1008 lockdep_annotate_inode_mutex_key(inode);
1009 spin_lock(&inode->i_lock);
1010 WARN_ON(!(inode->i_state & I_NEW));
1011 inode->i_state &= ~I_NEW;
1012 smp_mb();
1013 wake_up_bit(&inode->i_state, __I_NEW);
1014 spin_unlock(&inode->i_lock);
1015 iput(inode);
1016}
1017EXPORT_SYMBOL(discard_new_inode);
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028void lock_two_nondirectories(struct inode *inode1, struct inode *inode2)
1029{
1030 if (inode1 > inode2)
1031 swap(inode1, inode2);
1032
1033 if (inode1 && !S_ISDIR(inode1->i_mode))
1034 inode_lock(inode1);
1035 if (inode2 && !S_ISDIR(inode2->i_mode) && inode2 != inode1)
1036 inode_lock_nested(inode2, I_MUTEX_NONDIR2);
1037}
1038EXPORT_SYMBOL(lock_two_nondirectories);
1039
1040
1041
1042
1043
1044
1045void unlock_two_nondirectories(struct inode *inode1, struct inode *inode2)
1046{
1047 if (inode1 && !S_ISDIR(inode1->i_mode))
1048 inode_unlock(inode1);
1049 if (inode2 && !S_ISDIR(inode2->i_mode) && inode2 != inode1)
1050 inode_unlock(inode2);
1051}
1052EXPORT_SYMBOL(unlock_two_nondirectories);
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074struct inode *inode_insert5(struct inode *inode, unsigned long hashval,
1075 int (*test)(struct inode *, void *),
1076 int (*set)(struct inode *, void *), void *data)
1077{
1078 struct hlist_head *head = inode_hashtable + hash(inode->i_sb, hashval);
1079 struct inode *old;
1080 bool creating = inode->i_state & I_CREATING;
1081
1082again:
1083 spin_lock(&inode_hash_lock);
1084 old = find_inode(inode->i_sb, head, test, data);
1085 if (unlikely(old)) {
1086
1087
1088
1089
1090 spin_unlock(&inode_hash_lock);
1091 if (IS_ERR(old))
1092 return NULL;
1093 wait_on_inode(old);
1094 if (unlikely(inode_unhashed(old))) {
1095 iput(old);
1096 goto again;
1097 }
1098 return old;
1099 }
1100
1101 if (set && unlikely(set(inode, data))) {
1102 inode = NULL;
1103 goto unlock;
1104 }
1105
1106
1107
1108
1109
1110 spin_lock(&inode->i_lock);
1111 inode->i_state |= I_NEW;
1112 hlist_add_head_rcu(&inode->i_hash, head);
1113 spin_unlock(&inode->i_lock);
1114 if (!creating)
1115 inode_sb_list_add(inode);
1116unlock:
1117 spin_unlock(&inode_hash_lock);
1118
1119 return inode;
1120}
1121EXPORT_SYMBOL(inode_insert5);
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143struct inode *iget5_locked(struct super_block *sb, unsigned long hashval,
1144 int (*test)(struct inode *, void *),
1145 int (*set)(struct inode *, void *), void *data)
1146{
1147 struct inode *inode = ilookup5(sb, hashval, test, data);
1148
1149 if (!inode) {
1150 struct inode *new = alloc_inode(sb);
1151
1152 if (new) {
1153 new->i_state = 0;
1154 inode = inode_insert5(new, hashval, test, set, data);
1155 if (unlikely(inode != new))
1156 destroy_inode(new);
1157 }
1158 }
1159 return inode;
1160}
1161EXPORT_SYMBOL(iget5_locked);
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176struct inode *iget_locked(struct super_block *sb, unsigned long ino)
1177{
1178 struct hlist_head *head = inode_hashtable + hash(sb, ino);
1179 struct inode *inode;
1180again:
1181 spin_lock(&inode_hash_lock);
1182 inode = find_inode_fast(sb, head, ino);
1183 spin_unlock(&inode_hash_lock);
1184 if (inode) {
1185 if (IS_ERR(inode))
1186 return NULL;
1187 wait_on_inode(inode);
1188 if (unlikely(inode_unhashed(inode))) {
1189 iput(inode);
1190 goto again;
1191 }
1192 return inode;
1193 }
1194
1195 inode = alloc_inode(sb);
1196 if (inode) {
1197 struct inode *old;
1198
1199 spin_lock(&inode_hash_lock);
1200
1201 old = find_inode_fast(sb, head, ino);
1202 if (!old) {
1203 inode->i_ino = ino;
1204 spin_lock(&inode->i_lock);
1205 inode->i_state = I_NEW;
1206 hlist_add_head_rcu(&inode->i_hash, head);
1207 spin_unlock(&inode->i_lock);
1208 inode_sb_list_add(inode);
1209 spin_unlock(&inode_hash_lock);
1210
1211
1212
1213
1214 return inode;
1215 }
1216
1217
1218
1219
1220
1221
1222 spin_unlock(&inode_hash_lock);
1223 destroy_inode(inode);
1224 if (IS_ERR(old))
1225 return NULL;
1226 inode = old;
1227 wait_on_inode(inode);
1228 if (unlikely(inode_unhashed(inode))) {
1229 iput(inode);
1230 goto again;
1231 }
1232 }
1233 return inode;
1234}
1235EXPORT_SYMBOL(iget_locked);
1236
1237
1238
1239
1240
1241
1242
1243
1244static int test_inode_iunique(struct super_block *sb, unsigned long ino)
1245{
1246 struct hlist_head *b = inode_hashtable + hash(sb, ino);
1247 struct inode *inode;
1248
1249 hlist_for_each_entry_rcu(inode, b, i_hash) {
1250 if (inode->i_ino == ino && inode->i_sb == sb)
1251 return 0;
1252 }
1253 return 1;
1254}
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270ino_t iunique(struct super_block *sb, ino_t max_reserved)
1271{
1272
1273
1274
1275
1276
1277 static DEFINE_SPINLOCK(iunique_lock);
1278 static unsigned int counter;
1279 ino_t res;
1280
1281 rcu_read_lock();
1282 spin_lock(&iunique_lock);
1283 do {
1284 if (counter <= max_reserved)
1285 counter = max_reserved + 1;
1286 res = counter++;
1287 } while (!test_inode_iunique(sb, res));
1288 spin_unlock(&iunique_lock);
1289 rcu_read_unlock();
1290
1291 return res;
1292}
1293EXPORT_SYMBOL(iunique);
1294
1295struct inode *igrab(struct inode *inode)
1296{
1297 spin_lock(&inode->i_lock);
1298 if (!(inode->i_state & (I_FREEING|I_WILL_FREE))) {
1299 __iget(inode);
1300 spin_unlock(&inode->i_lock);
1301 } else {
1302 spin_unlock(&inode->i_lock);
1303
1304
1305
1306
1307
1308 inode = NULL;
1309 }
1310 return inode;
1311}
1312EXPORT_SYMBOL(igrab);
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330struct inode *ilookup5_nowait(struct super_block *sb, unsigned long hashval,
1331 int (*test)(struct inode *, void *), void *data)
1332{
1333 struct hlist_head *head = inode_hashtable + hash(sb, hashval);
1334 struct inode *inode;
1335
1336 spin_lock(&inode_hash_lock);
1337 inode = find_inode(sb, head, test, data);
1338 spin_unlock(&inode_hash_lock);
1339
1340 return IS_ERR(inode) ? NULL : inode;
1341}
1342EXPORT_SYMBOL(ilookup5_nowait);
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361struct inode *ilookup5(struct super_block *sb, unsigned long hashval,
1362 int (*test)(struct inode *, void *), void *data)
1363{
1364 struct inode *inode;
1365again:
1366 inode = ilookup5_nowait(sb, hashval, test, data);
1367 if (inode) {
1368 wait_on_inode(inode);
1369 if (unlikely(inode_unhashed(inode))) {
1370 iput(inode);
1371 goto again;
1372 }
1373 }
1374 return inode;
1375}
1376EXPORT_SYMBOL(ilookup5);
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386struct inode *ilookup(struct super_block *sb, unsigned long ino)
1387{
1388 struct hlist_head *head = inode_hashtable + hash(sb, ino);
1389 struct inode *inode;
1390again:
1391 spin_lock(&inode_hash_lock);
1392 inode = find_inode_fast(sb, head, ino);
1393 spin_unlock(&inode_hash_lock);
1394
1395 if (inode) {
1396 if (IS_ERR(inode))
1397 return NULL;
1398 wait_on_inode(inode);
1399 if (unlikely(inode_unhashed(inode))) {
1400 iput(inode);
1401 goto again;
1402 }
1403 }
1404 return inode;
1405}
1406EXPORT_SYMBOL(ilookup);
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431struct inode *find_inode_nowait(struct super_block *sb,
1432 unsigned long hashval,
1433 int (*match)(struct inode *, unsigned long,
1434 void *),
1435 void *data)
1436{
1437 struct hlist_head *head = inode_hashtable + hash(sb, hashval);
1438 struct inode *inode, *ret_inode = NULL;
1439 int mval;
1440
1441 spin_lock(&inode_hash_lock);
1442 hlist_for_each_entry(inode, head, i_hash) {
1443 if (inode->i_sb != sb)
1444 continue;
1445 mval = match(inode, hashval, data);
1446 if (mval == 0)
1447 continue;
1448 if (mval == 1)
1449 ret_inode = inode;
1450 goto out;
1451 }
1452out:
1453 spin_unlock(&inode_hash_lock);
1454 return ret_inode;
1455}
1456EXPORT_SYMBOL(find_inode_nowait);
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479struct inode *find_inode_rcu(struct super_block *sb, unsigned long hashval,
1480 int (*test)(struct inode *, void *), void *data)
1481{
1482 struct hlist_head *head = inode_hashtable + hash(sb, hashval);
1483 struct inode *inode;
1484
1485 RCU_LOCKDEP_WARN(!rcu_read_lock_held(),
1486 "suspicious find_inode_rcu() usage");
1487
1488 hlist_for_each_entry_rcu(inode, head, i_hash) {
1489 if (inode->i_sb == sb &&
1490 !(READ_ONCE(inode->i_state) & (I_FREEING | I_WILL_FREE)) &&
1491 test(inode, data))
1492 return inode;
1493 }
1494 return NULL;
1495}
1496EXPORT_SYMBOL(find_inode_rcu);
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517struct inode *find_inode_by_ino_rcu(struct super_block *sb,
1518 unsigned long ino)
1519{
1520 struct hlist_head *head = inode_hashtable + hash(sb, ino);
1521 struct inode *inode;
1522
1523 RCU_LOCKDEP_WARN(!rcu_read_lock_held(),
1524 "suspicious find_inode_by_ino_rcu() usage");
1525
1526 hlist_for_each_entry_rcu(inode, head, i_hash) {
1527 if (inode->i_ino == ino &&
1528 inode->i_sb == sb &&
1529 !(READ_ONCE(inode->i_state) & (I_FREEING | I_WILL_FREE)))
1530 return inode;
1531 }
1532 return NULL;
1533}
1534EXPORT_SYMBOL(find_inode_by_ino_rcu);
1535
1536int insert_inode_locked(struct inode *inode)
1537{
1538 struct super_block *sb = inode->i_sb;
1539 ino_t ino = inode->i_ino;
1540 struct hlist_head *head = inode_hashtable + hash(sb, ino);
1541
1542 while (1) {
1543 struct inode *old = NULL;
1544 spin_lock(&inode_hash_lock);
1545 hlist_for_each_entry(old, head, i_hash) {
1546 if (old->i_ino != ino)
1547 continue;
1548 if (old->i_sb != sb)
1549 continue;
1550 spin_lock(&old->i_lock);
1551 if (old->i_state & (I_FREEING|I_WILL_FREE)) {
1552 spin_unlock(&old->i_lock);
1553 continue;
1554 }
1555 break;
1556 }
1557 if (likely(!old)) {
1558 spin_lock(&inode->i_lock);
1559 inode->i_state |= I_NEW | I_CREATING;
1560 hlist_add_head_rcu(&inode->i_hash, head);
1561 spin_unlock(&inode->i_lock);
1562 spin_unlock(&inode_hash_lock);
1563 return 0;
1564 }
1565 if (unlikely(old->i_state & I_CREATING)) {
1566 spin_unlock(&old->i_lock);
1567 spin_unlock(&inode_hash_lock);
1568 return -EBUSY;
1569 }
1570 __iget(old);
1571 spin_unlock(&old->i_lock);
1572 spin_unlock(&inode_hash_lock);
1573 wait_on_inode(old);
1574 if (unlikely(!inode_unhashed(old))) {
1575 iput(old);
1576 return -EBUSY;
1577 }
1578 iput(old);
1579 }
1580}
1581EXPORT_SYMBOL(insert_inode_locked);
1582
1583int insert_inode_locked4(struct inode *inode, unsigned long hashval,
1584 int (*test)(struct inode *, void *), void *data)
1585{
1586 struct inode *old;
1587
1588 inode->i_state |= I_CREATING;
1589 old = inode_insert5(inode, hashval, test, NULL, data);
1590
1591 if (old != inode) {
1592 iput(old);
1593 return -EBUSY;
1594 }
1595 return 0;
1596}
1597EXPORT_SYMBOL(insert_inode_locked4);
1598
1599
1600int generic_delete_inode(struct inode *inode)
1601{
1602 return 1;
1603}
1604EXPORT_SYMBOL(generic_delete_inode);
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616static void iput_final(struct inode *inode)
1617{
1618 struct super_block *sb = inode->i_sb;
1619 const struct super_operations *op = inode->i_sb->s_op;
1620 unsigned long state;
1621 int drop;
1622
1623 WARN_ON(inode->i_state & I_NEW);
1624
1625 if (op->drop_inode)
1626 drop = op->drop_inode(inode);
1627 else
1628 drop = generic_drop_inode(inode);
1629
1630 if (!drop && (sb->s_flags & SB_ACTIVE)) {
1631 inode_add_lru(inode);
1632 spin_unlock(&inode->i_lock);
1633 return;
1634 }
1635
1636 state = inode->i_state;
1637 if (!drop) {
1638 WRITE_ONCE(inode->i_state, state | I_WILL_FREE);
1639 spin_unlock(&inode->i_lock);
1640
1641 write_inode_now(inode, 1);
1642
1643 spin_lock(&inode->i_lock);
1644 state = inode->i_state;
1645 WARN_ON(state & I_NEW);
1646 state &= ~I_WILL_FREE;
1647 }
1648
1649 WRITE_ONCE(inode->i_state, state | I_FREEING);
1650 if (!list_empty(&inode->i_lru))
1651 inode_lru_list_del(inode);
1652 spin_unlock(&inode->i_lock);
1653
1654 evict(inode);
1655}
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666void iput(struct inode *inode)
1667{
1668 if (!inode)
1669 return;
1670 BUG_ON(inode->i_state & I_CLEAR);
1671retry:
1672 if (atomic_dec_and_lock(&inode->i_count, &inode->i_lock)) {
1673 if (inode->i_nlink && (inode->i_state & I_DIRTY_TIME)) {
1674 atomic_inc(&inode->i_count);
1675 spin_unlock(&inode->i_lock);
1676 trace_writeback_lazytime_iput(inode);
1677 mark_inode_dirty_sync(inode);
1678 goto retry;
1679 }
1680 iput_final(inode);
1681 }
1682}
1683EXPORT_SYMBOL(iput);
1684
1685#ifdef CONFIG_BLOCK
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700int bmap(struct inode *inode, sector_t *block)
1701{
1702 if (!inode->i_mapping->a_ops->bmap)
1703 return -EINVAL;
1704
1705 *block = inode->i_mapping->a_ops->bmap(inode->i_mapping, *block);
1706 return 0;
1707}
1708EXPORT_SYMBOL(bmap);
1709#endif
1710
1711
1712
1713
1714
1715
1716static int relatime_need_update(struct vfsmount *mnt, struct inode *inode,
1717 struct timespec64 now)
1718{
1719
1720 if (!(mnt->mnt_flags & MNT_RELATIME))
1721 return 1;
1722
1723
1724
1725 if (timespec64_compare(&inode->i_mtime, &inode->i_atime) >= 0)
1726 return 1;
1727
1728
1729
1730 if (timespec64_compare(&inode->i_ctime, &inode->i_atime) >= 0)
1731 return 1;
1732
1733
1734
1735
1736
1737 if ((long)(now.tv_sec - inode->i_atime.tv_sec) >= 24*60*60)
1738 return 1;
1739
1740
1741
1742 return 0;
1743}
1744
1745int generic_update_time(struct inode *inode, struct timespec64 *time, int flags)
1746{
1747 int iflags = I_DIRTY_TIME;
1748 bool dirty = false;
1749
1750 if (flags & S_ATIME)
1751 inode->i_atime = *time;
1752 if (flags & S_VERSION)
1753 dirty = inode_maybe_inc_iversion(inode, false);
1754 if (flags & S_CTIME)
1755 inode->i_ctime = *time;
1756 if (flags & S_MTIME)
1757 inode->i_mtime = *time;
1758 if ((flags & (S_ATIME | S_CTIME | S_MTIME)) &&
1759 !(inode->i_sb->s_flags & SB_LAZYTIME))
1760 dirty = true;
1761
1762 if (dirty)
1763 iflags |= I_DIRTY_SYNC;
1764 __mark_inode_dirty(inode, iflags);
1765 return 0;
1766}
1767EXPORT_SYMBOL(generic_update_time);
1768
1769
1770
1771
1772
1773static int update_time(struct inode *inode, struct timespec64 *time, int flags)
1774{
1775 if (inode->i_op->update_time)
1776 return inode->i_op->update_time(inode, time, flags);
1777 return generic_update_time(inode, time, flags);
1778}
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789bool atime_needs_update(const struct path *path, struct inode *inode)
1790{
1791 struct vfsmount *mnt = path->mnt;
1792 struct timespec64 now;
1793
1794 if (inode->i_flags & S_NOATIME)
1795 return false;
1796
1797
1798
1799
1800 if (HAS_UNMAPPED_ID(inode))
1801 return false;
1802
1803 if (IS_NOATIME(inode))
1804 return false;
1805 if ((inode->i_sb->s_flags & SB_NODIRATIME) && S_ISDIR(inode->i_mode))
1806 return false;
1807
1808 if (mnt->mnt_flags & MNT_NOATIME)
1809 return false;
1810 if ((mnt->mnt_flags & MNT_NODIRATIME) && S_ISDIR(inode->i_mode))
1811 return false;
1812
1813 now = current_time(inode);
1814
1815 if (!relatime_need_update(mnt, inode, now))
1816 return false;
1817
1818 if (timespec64_equal(&inode->i_atime, &now))
1819 return false;
1820
1821 return true;
1822}
1823
1824void touch_atime(const struct path *path)
1825{
1826 struct vfsmount *mnt = path->mnt;
1827 struct inode *inode = d_inode(path->dentry);
1828 struct timespec64 now;
1829
1830 if (!atime_needs_update(path, inode))
1831 return;
1832
1833 if (!sb_start_write_trylock(inode->i_sb))
1834 return;
1835
1836 if (__mnt_want_write(mnt) != 0)
1837 goto skip_update;
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847 now = current_time(inode);
1848 update_time(inode, &now, S_ATIME);
1849 __mnt_drop_write(mnt);
1850skip_update:
1851 sb_end_write(inode->i_sb);
1852}
1853EXPORT_SYMBOL(touch_atime);
1854
1855
1856
1857
1858
1859
1860
1861int should_remove_suid(struct dentry *dentry)
1862{
1863 umode_t mode = d_inode(dentry)->i_mode;
1864 int kill = 0;
1865
1866
1867 if (unlikely(mode & S_ISUID))
1868 kill = ATTR_KILL_SUID;
1869
1870
1871
1872
1873
1874 if (unlikely((mode & S_ISGID) && (mode & S_IXGRP)))
1875 kill |= ATTR_KILL_SGID;
1876
1877 if (unlikely(kill && !capable(CAP_FSETID) && S_ISREG(mode)))
1878 return kill;
1879
1880 return 0;
1881}
1882EXPORT_SYMBOL(should_remove_suid);
1883
1884
1885
1886
1887
1888
1889int dentry_needs_remove_privs(struct dentry *dentry)
1890{
1891 struct inode *inode = d_inode(dentry);
1892 int mask = 0;
1893 int ret;
1894
1895 if (IS_NOSEC(inode))
1896 return 0;
1897
1898 mask = should_remove_suid(dentry);
1899 ret = security_inode_need_killpriv(dentry);
1900 if (ret < 0)
1901 return ret;
1902 if (ret)
1903 mask |= ATTR_KILL_PRIV;
1904 return mask;
1905}
1906
1907static int __remove_privs(struct dentry *dentry, int kill)
1908{
1909 struct iattr newattrs;
1910
1911 newattrs.ia_valid = ATTR_FORCE | kill;
1912
1913
1914
1915
1916 return notify_change(dentry, &newattrs, NULL);
1917}
1918
1919
1920
1921
1922
1923int file_remove_privs(struct file *file)
1924{
1925 struct dentry *dentry = file_dentry(file);
1926 struct inode *inode = file_inode(file);
1927 int kill;
1928 int error = 0;
1929
1930
1931
1932
1933
1934
1935
1936 if (IS_NOSEC(inode) || !S_ISREG(inode->i_mode))
1937 return 0;
1938
1939 kill = dentry_needs_remove_privs(dentry);
1940 if (kill < 0)
1941 return kill;
1942 if (kill)
1943 error = __remove_privs(dentry, kill);
1944 if (!error)
1945 inode_has_no_xattr(inode);
1946
1947 return error;
1948}
1949EXPORT_SYMBOL(file_remove_privs);
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964int file_update_time(struct file *file)
1965{
1966 struct inode *inode = file_inode(file);
1967 struct timespec64 now;
1968 int sync_it = 0;
1969 int ret;
1970
1971
1972 if (IS_NOCMTIME(inode))
1973 return 0;
1974
1975 now = current_time(inode);
1976 if (!timespec64_equal(&inode->i_mtime, &now))
1977 sync_it = S_MTIME;
1978
1979 if (!timespec64_equal(&inode->i_ctime, &now))
1980 sync_it |= S_CTIME;
1981
1982 if (IS_I_VERSION(inode) && inode_iversion_need_inc(inode))
1983 sync_it |= S_VERSION;
1984
1985 if (!sync_it)
1986 return 0;
1987
1988
1989 if (__mnt_want_write_file(file))
1990 return 0;
1991
1992 ret = update_time(inode, &now, sync_it);
1993 __mnt_drop_write_file(file);
1994
1995 return ret;
1996}
1997EXPORT_SYMBOL(file_update_time);
1998
1999
2000int file_modified(struct file *file)
2001{
2002 int err;
2003
2004
2005
2006
2007
2008 err = file_remove_privs(file);
2009 if (err)
2010 return err;
2011
2012 if (unlikely(file->f_mode & FMODE_NOCMTIME))
2013 return 0;
2014
2015 return file_update_time(file);
2016}
2017EXPORT_SYMBOL(file_modified);
2018
2019int inode_needs_sync(struct inode *inode)
2020{
2021 if (IS_SYNC(inode))
2022 return 1;
2023 if (S_ISDIR(inode->i_mode) && IS_DIRSYNC(inode))
2024 return 1;
2025 return 0;
2026}
2027EXPORT_SYMBOL(inode_needs_sync);
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040static void __wait_on_freeing_inode(struct inode *inode)
2041{
2042 wait_queue_head_t *wq;
2043 DEFINE_WAIT_BIT(wait, &inode->i_state, __I_NEW);
2044 wq = bit_waitqueue(&inode->i_state, __I_NEW);
2045 prepare_to_wait(wq, &wait.wq_entry, TASK_UNINTERRUPTIBLE);
2046 spin_unlock(&inode->i_lock);
2047 spin_unlock(&inode_hash_lock);
2048 schedule();
2049 finish_wait(wq, &wait.wq_entry);
2050 spin_lock(&inode_hash_lock);
2051}
2052
2053static __initdata unsigned long ihash_entries;
2054static int __init set_ihash_entries(char *str)
2055{
2056 if (!str)
2057 return 0;
2058 ihash_entries = simple_strtoul(str, &str, 0);
2059 return 1;
2060}
2061__setup("ihash_entries=", set_ihash_entries);
2062
2063
2064
2065
2066void __init inode_init_early(void)
2067{
2068
2069
2070
2071 if (hashdist)
2072 return;
2073
2074 inode_hashtable =
2075 alloc_large_system_hash("Inode-cache",
2076 sizeof(struct hlist_head),
2077 ihash_entries,
2078 14,
2079 HASH_EARLY | HASH_ZERO,
2080 &i_hash_shift,
2081 &i_hash_mask,
2082 0,
2083 0);
2084}
2085
2086void __init inode_init(void)
2087{
2088
2089 inode_cachep = kmem_cache_create("inode_cache",
2090 sizeof(struct inode),
2091 0,
2092 (SLAB_RECLAIM_ACCOUNT|SLAB_PANIC|
2093 SLAB_MEM_SPREAD|SLAB_ACCOUNT),
2094 init_once);
2095
2096
2097 if (!hashdist)
2098 return;
2099
2100 inode_hashtable =
2101 alloc_large_system_hash("Inode-cache",
2102 sizeof(struct hlist_head),
2103 ihash_entries,
2104 14,
2105 HASH_ZERO,
2106 &i_hash_shift,
2107 &i_hash_mask,
2108 0,
2109 0);
2110}
2111
2112void init_special_inode(struct inode *inode, umode_t mode, dev_t rdev)
2113{
2114 inode->i_mode = mode;
2115 if (S_ISCHR(mode)) {
2116 inode->i_fop = &def_chr_fops;
2117 inode->i_rdev = rdev;
2118 } else if (S_ISBLK(mode)) {
2119 inode->i_fop = &def_blk_fops;
2120 inode->i_rdev = rdev;
2121 } else if (S_ISFIFO(mode))
2122 inode->i_fop = &pipefifo_fops;
2123 else if (S_ISSOCK(mode))
2124 ;
2125 else
2126 printk(KERN_DEBUG "init_special_inode: bogus i_mode (%o) for"
2127 " inode %s:%lu\n", mode, inode->i_sb->s_id,
2128 inode->i_ino);
2129}
2130EXPORT_SYMBOL(init_special_inode);
2131
2132
2133
2134
2135
2136
2137
2138void inode_init_owner(struct inode *inode, const struct inode *dir,
2139 umode_t mode)
2140{
2141 inode->i_uid = current_fsuid();
2142 if (dir && dir->i_mode & S_ISGID) {
2143 inode->i_gid = dir->i_gid;
2144
2145
2146 if (S_ISDIR(mode))
2147 mode |= S_ISGID;
2148 else if ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP) &&
2149 !in_group_p(inode->i_gid) &&
2150 !capable_wrt_inode_uidgid(dir, CAP_FSETID))
2151 mode &= ~S_ISGID;
2152 } else
2153 inode->i_gid = current_fsgid();
2154 inode->i_mode = mode;
2155}
2156EXPORT_SYMBOL(inode_init_owner);
2157
2158
2159
2160
2161
2162
2163
2164
2165bool inode_owner_or_capable(const struct inode *inode)
2166{
2167 struct user_namespace *ns;
2168
2169 if (uid_eq(current_fsuid(), inode->i_uid))
2170 return true;
2171
2172 ns = current_user_ns();
2173 if (kuid_has_mapping(ns, inode->i_uid) && ns_capable(ns, CAP_FOWNER))
2174 return true;
2175 return false;
2176}
2177EXPORT_SYMBOL(inode_owner_or_capable);
2178
2179
2180
2181
2182static void __inode_dio_wait(struct inode *inode)
2183{
2184 wait_queue_head_t *wq = bit_waitqueue(&inode->i_state, __I_DIO_WAKEUP);
2185 DEFINE_WAIT_BIT(q, &inode->i_state, __I_DIO_WAKEUP);
2186
2187 do {
2188 prepare_to_wait(wq, &q.wq_entry, TASK_UNINTERRUPTIBLE);
2189 if (atomic_read(&inode->i_dio_count))
2190 schedule();
2191 } while (atomic_read(&inode->i_dio_count));
2192 finish_wait(wq, &q.wq_entry);
2193}
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205void inode_dio_wait(struct inode *inode)
2206{
2207 if (atomic_read(&inode->i_dio_count))
2208 __inode_dio_wait(inode);
2209}
2210EXPORT_SYMBOL(inode_dio_wait);
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228void inode_set_flags(struct inode *inode, unsigned int flags,
2229 unsigned int mask)
2230{
2231 WARN_ON_ONCE(flags & ~mask);
2232 set_mask_bits(&inode->i_flags, mask, flags);
2233}
2234EXPORT_SYMBOL(inode_set_flags);
2235
2236void inode_nohighmem(struct inode *inode)
2237{
2238 mapping_set_gfp_mask(inode->i_mapping, GFP_USER);
2239}
2240EXPORT_SYMBOL(inode_nohighmem);
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251struct timespec64 timestamp_truncate(struct timespec64 t, struct inode *inode)
2252{
2253 struct super_block *sb = inode->i_sb;
2254 unsigned int gran = sb->s_time_gran;
2255
2256 t.tv_sec = clamp(t.tv_sec, sb->s_time_min, sb->s_time_max);
2257 if (unlikely(t.tv_sec == sb->s_time_max || t.tv_sec == sb->s_time_min))
2258 t.tv_nsec = 0;
2259
2260
2261 if (gran == 1)
2262 ;
2263 else if (gran == NSEC_PER_SEC)
2264 t.tv_nsec = 0;
2265 else if (gran > 1 && gran < NSEC_PER_SEC)
2266 t.tv_nsec -= t.tv_nsec % gran;
2267 else
2268 WARN(1, "invalid file time granularity: %u", gran);
2269 return t;
2270}
2271EXPORT_SYMBOL(timestamp_truncate);
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283struct timespec64 current_time(struct inode *inode)
2284{
2285 struct timespec64 now;
2286
2287 ktime_get_coarse_real_ts64(&now);
2288
2289 if (unlikely(!inode->i_sb)) {
2290 WARN(1, "current_time() called with uninitialized super_block in the inode");
2291 return now;
2292 }
2293
2294 return timestamp_truncate(now, inode);
2295}
2296EXPORT_SYMBOL(current_time);
2297
2298
2299
2300
2301
2302
2303
2304
2305int vfs_ioc_setflags_prepare(struct inode *inode, unsigned int oldflags,
2306 unsigned int flags)
2307{
2308
2309
2310
2311
2312
2313
2314 if ((flags ^ oldflags) & (FS_APPEND_FL | FS_IMMUTABLE_FL) &&
2315 !capable(CAP_LINUX_IMMUTABLE))
2316 return -EPERM;
2317
2318 return fscrypt_prepare_setflags(inode, oldflags, flags);
2319}
2320EXPORT_SYMBOL(vfs_ioc_setflags_prepare);
2321
2322
2323
2324
2325
2326
2327
2328
2329int vfs_ioc_fssetxattr_check(struct inode *inode, const struct fsxattr *old_fa,
2330 struct fsxattr *fa)
2331{
2332
2333
2334
2335
2336 if ((old_fa->fsx_xflags ^ fa->fsx_xflags) &
2337 (FS_XFLAG_IMMUTABLE | FS_XFLAG_APPEND) &&
2338 !capable(CAP_LINUX_IMMUTABLE))
2339 return -EPERM;
2340
2341
2342
2343
2344
2345
2346 if (current_user_ns() != &init_user_ns) {
2347 if (old_fa->fsx_projid != fa->fsx_projid)
2348 return -EINVAL;
2349 if ((old_fa->fsx_xflags ^ fa->fsx_xflags) &
2350 FS_XFLAG_PROJINHERIT)
2351 return -EINVAL;
2352 }
2353
2354
2355 if ((fa->fsx_xflags & FS_XFLAG_EXTSIZE) && !S_ISREG(inode->i_mode))
2356 return -EINVAL;
2357
2358 if ((fa->fsx_xflags & FS_XFLAG_EXTSZINHERIT) &&
2359 !S_ISDIR(inode->i_mode))
2360 return -EINVAL;
2361
2362 if ((fa->fsx_xflags & FS_XFLAG_COWEXTSIZE) &&
2363 !S_ISREG(inode->i_mode) && !S_ISDIR(inode->i_mode))
2364 return -EINVAL;
2365
2366
2367
2368
2369
2370 if ((fa->fsx_xflags & FS_XFLAG_DAX) &&
2371 !(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode)))
2372 return -EINVAL;
2373
2374
2375 if (fa->fsx_extsize == 0)
2376 fa->fsx_xflags &= ~(FS_XFLAG_EXTSIZE | FS_XFLAG_EXTSZINHERIT);
2377 if (fa->fsx_cowextsize == 0)
2378 fa->fsx_xflags &= ~FS_XFLAG_COWEXTSIZE;
2379
2380 return 0;
2381}
2382EXPORT_SYMBOL(vfs_ioc_fssetxattr_check);
2383