From: Theodore Ts'o Date: Sat, 24 Jul 2021 16:55:28 +0000 (-0400) Subject: libext2fs: avoid unnecessary stat(2) calls on mountpoints X-Git-Tag: v1.46.3~9 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=ddee43e8e847b25148d694bb5dbec633729e975b;p=tools%2Fe2fsprogs.git libext2fs: avoid unnecessary stat(2) calls on mountpoints If the device name in the mtab or /proc/mounts file does not match with the device passed into ext2fs_check_if_mounted() or ext2fs_check_mount_point(), skip the stat(2) call on the mountpoint, since we never use the results of the stat(2) in that case. Not only does this provide a slight performance win, but it the stat calls on the mountpoints could potentially trigger some SELinux denials that could stress some sysadmins out. Google-Bug-Id: 193137337 Signed-off-by: Theodore Ts'o --- diff --git a/lib/ext2fs/ismounted.c b/lib/ext2fs/ismounted.c index 46d330d..c9e6a9d 100644 --- a/lib/ext2fs/ismounted.c +++ b/lib/ext2fs/ismounted.c @@ -128,14 +128,14 @@ static errcode_t check_mntent_file(const char *mtab_file, const char *file, while ((mnt = getmntent (f)) != NULL) { if (mnt->mnt_fsname[0] != '/') continue; - if (stat(mnt->mnt_dir, &st_buf) != 0) - continue; if (strcmp(file, mnt->mnt_fsname) == 0) { + if (stat(mnt->mnt_dir, &st_buf) != 0) + continue; if (file_rdev && (file_rdev != st_buf.st_dev)) { #ifdef DEBUG printf("Bogus entry in %s! " - "(%s does not exist)\n", - mtab_file, mnt->mnt_dir); + "(%s is not mounted on %s)\n", + mtab_file, file, mnt->mnt_dir); #endif /* DEBUG */ continue; }