47 lines
1.6 KiB
Diff
47 lines
1.6 KiB
Diff
From: Theodore Ts'o <tytso@mit.edu>
|
|
Date: Thu, 29 Mar 2018 22:10:31 -0400
|
|
Subject: ext4: always initialize the crc32c checksum driver
|
|
Origin: https://git.kernel.org/linus/a45403b51582a87872927a3e0fc0a389c26867f1
|
|
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2018-1094
|
|
|
|
The extended attribute code now uses the crc32c checksum for hashing
|
|
purposes, so we should just always always initialize it. We also want
|
|
to prevent NULL pointer dereferences if one of the metadata checksum
|
|
features is enabled after the file sytsem is originally mounted.
|
|
|
|
This issue has been assigned CVE-2018-1094.
|
|
|
|
https://bugzilla.kernel.org/show_bug.cgi?id=199183
|
|
https://bugzilla.redhat.com/show_bug.cgi?id=1560788
|
|
|
|
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
|
|
Cc: stable@vger.kernel.org
|
|
---
|
|
fs/ext4/super.c | 15 ++++++---------
|
|
1 file changed, 6 insertions(+), 9 deletions(-)
|
|
|
|
--- a/fs/ext4/super.c
|
|
+++ b/fs/ext4/super.c
|
|
@@ -3489,15 +3489,12 @@ static int ext4_fill_super(struct super_
|
|
}
|
|
|
|
/* Load the checksum driver */
|
|
- if (ext4_has_feature_metadata_csum(sb) ||
|
|
- ext4_has_feature_ea_inode(sb)) {
|
|
- sbi->s_chksum_driver = crypto_alloc_shash("crc32c", 0, 0);
|
|
- if (IS_ERR(sbi->s_chksum_driver)) {
|
|
- ext4_msg(sb, KERN_ERR, "Cannot load crc32c driver.");
|
|
- ret = PTR_ERR(sbi->s_chksum_driver);
|
|
- sbi->s_chksum_driver = NULL;
|
|
- goto failed_mount;
|
|
- }
|
|
+ sbi->s_chksum_driver = crypto_alloc_shash("crc32c", 0, 0);
|
|
+ if (IS_ERR(sbi->s_chksum_driver)) {
|
|
+ ext4_msg(sb, KERN_ERR, "Cannot load crc32c driver.");
|
|
+ ret = PTR_ERR(sbi->s_chksum_driver);
|
|
+ sbi->s_chksum_driver = NULL;
|
|
+ goto failed_mount;
|
|
}
|
|
|
|
/* Check superblock checksum */
|