hc
2024-05-10 9999e48639b3cecb08ffb37358bcba3b48161b29
kernel/fs/fat/namei_msdos.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * linux/fs/msdos/namei.c
34 *
....@@ -250,7 +251,7 @@
250251 if (err)
251252 return err;
252253
253
- dir->i_ctime = dir->i_mtime = *ts;
254
+ fat_truncate_time(dir, ts, S_CTIME|S_MTIME);
254255 if (IS_DIRSYNC(dir))
255256 (void)fat_sync_inode(dir);
256257 else
....@@ -294,7 +295,7 @@
294295 err = PTR_ERR(inode);
295296 goto out;
296297 }
297
- inode->i_mtime = inode->i_atime = inode->i_ctime = ts;
298
+ fat_truncate_time(inode, &ts, S_ATIME|S_CTIME|S_MTIME);
298299 /* timestamp is already written, so mark_inode_dirty() is unneeded. */
299300
300301 d_instantiate(dentry, inode);
....@@ -327,7 +328,7 @@
327328 drop_nlink(dir);
328329
329330 clear_nlink(inode);
330
- inode->i_ctime = current_time(inode);
331
+ fat_truncate_time(inode, NULL, S_CTIME);
331332 fat_detach(inode);
332333 out:
333334 mutex_unlock(&MSDOS_SB(sb)->s_lock);
....@@ -380,7 +381,7 @@
380381 goto out;
381382 }
382383 set_nlink(inode, 2);
383
- inode->i_mtime = inode->i_atime = inode->i_ctime = ts;
384
+ fat_truncate_time(inode, &ts, S_ATIME|S_CTIME|S_MTIME);
384385 /* timestamp is already written, so mark_inode_dirty() is unneeded. */
385386
386387 d_instantiate(dentry, inode);
....@@ -413,7 +414,7 @@
413414 if (err)
414415 goto out;
415416 clear_nlink(inode);
416
- inode->i_ctime = current_time(inode);
417
+ fat_truncate_time(inode, NULL, S_CTIME);
417418 fat_detach(inode);
418419 out:
419420 mutex_unlock(&MSDOS_SB(sb)->s_lock);
....@@ -478,7 +479,7 @@
478479 mark_inode_dirty(old_inode);
479480
480481 inode_inc_iversion(old_dir);
481
- old_dir->i_ctime = old_dir->i_mtime = current_time(old_dir);
482
+ fat_truncate_time(old_dir, NULL, S_CTIME|S_MTIME);
482483 if (IS_DIRSYNC(old_dir))
483484 (void)fat_sync_inode(old_dir);
484485 else
....@@ -538,7 +539,7 @@
538539 if (err)
539540 goto error_dotdot;
540541 inode_inc_iversion(old_dir);
541
- old_dir->i_ctime = old_dir->i_mtime = ts;
542
+ fat_truncate_time(old_dir, &ts, S_CTIME|S_MTIME);
542543 if (IS_DIRSYNC(old_dir))
543544 (void)fat_sync_inode(old_dir);
544545 else
....@@ -548,7 +549,7 @@
548549 drop_nlink(new_inode);
549550 if (is_dir)
550551 drop_nlink(new_inode);
551
- new_inode->i_ctime = ts;
552
+ fat_truncate_time(new_inode, &ts, S_CTIME);
552553 }
553554 out:
554555 brelse(sinfo.bh);
....@@ -637,6 +638,7 @@
637638 .rename = msdos_rename,
638639 .setattr = fat_setattr,
639640 .getattr = fat_getattr,
641
+ .update_time = fat_update_time,
640642 };
641643
642644 static void setup(struct super_block *sb)
....@@ -678,6 +680,7 @@
678680 }
679681
680682 MODULE_LICENSE("GPL");
683
+MODULE_IMPORT_NS(ANDROID_GKI_VFS_EXPORT_ONLY);
681684 MODULE_AUTHOR("Werner Almesberger");
682685 MODULE_DESCRIPTION("MS-DOS filesystem support");
683686