| From dfd56c2c0c0dbb11be939b804ddc8d5395ab3432 Mon Sep 17 00:00:00 2001 |
| From: Jan Kara <jack@suse.cz> |
| Date: Wed, 16 Dec 2020 11:18:43 +0100 |
| Subject: ext4: fix superblock checksum failure when setting password salt |
| |
| From: Jan Kara <jack@suse.cz> |
| |
| commit dfd56c2c0c0dbb11be939b804ddc8d5395ab3432 upstream. |
| |
| When setting password salt in the superblock, we forget to recompute the |
| superblock checksum so it will not match until the next superblock |
| modification which recomputes the checksum. Fix it. |
| |
| CC: Michael Halcrow <mhalcrow@google.com> |
| Reported-by: Andreas Dilger <adilger@dilger.ca> |
| Fixes: 9bd8212f981e ("ext4 crypto: add encryption policy and password salt support") |
| Signed-off-by: Jan Kara <jack@suse.cz> |
| Link: https://lore.kernel.org/r/20201216101844.22917-8-jack@suse.cz |
| Signed-off-by: Theodore Ts'o <tytso@mit.edu> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/ext4/ioctl.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/fs/ext4/ioctl.c |
| +++ b/fs/ext4/ioctl.c |
| @@ -675,7 +675,10 @@ encryption_policy_out: |
| err = ext4_journal_get_write_access(handle, sbi->s_sbh); |
| if (err) |
| goto pwsalt_err_journal; |
| + lock_buffer(sbi->s_sbh); |
| generate_random_uuid(sbi->s_es->s_encrypt_pw_salt); |
| + ext4_superblock_csum_set(sb); |
| + unlock_buffer(sbi->s_sbh); |
| err = ext4_handle_dirty_metadata(handle, NULL, |
| sbi->s_sbh); |
| pwsalt_err_journal: |