lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 11 Sep 2021 17:00:54 +0800 From: Ye Bin <yebin10@...wei.com> To: <tytso@....edu>, <adilger.kernel@...ger.ca>, <linux-ext4@...r.kernel.org> CC: <linux-kernel@...r.kernel.org>, <jack@...e.cz>, Ye Bin <yebin10@...wei.com> Subject: [PATCH -next v2 1/6] ext4: init seq with random value in kmmpd If two host has the same nodename, and seq start from 0, May cause the detection mechanism to fail. So init seq with random value to accelerate conflict detection. Signed-off-by: Ye Bin <yebin10@...wei.com> --- fs/ext4/mmp.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c index cebea4270817..12af6dc8457b 100644 --- a/fs/ext4/mmp.c +++ b/fs/ext4/mmp.c @@ -122,6 +122,21 @@ void __dump_mmp_msg(struct super_block *sb, struct mmp_struct *mmp, (int)sizeof(mmp->mmp_bdevname), mmp->mmp_bdevname); } +/* + * Get a random new sequence number but make sure it is not greater than + * EXT4_MMP_SEQ_MAX. + */ +static unsigned int mmp_new_seq(void) +{ + u32 new_seq; + + do { + new_seq = prandom_u32(); + } while (new_seq > EXT4_MMP_SEQ_MAX); + + return new_seq; +} + /* * kmmpd will update the MMP sequence every s_mmp_update_interval seconds */ @@ -132,7 +147,7 @@ static int kmmpd(void *data) struct buffer_head *bh = EXT4_SB(sb)->s_mmp_bh; struct mmp_struct *mmp; ext4_fsblk_t mmp_block; - u32 seq = 0; + u32 seq = mmp_new_seq(); unsigned long failed_writes = 0; int mmp_update_interval = le16_to_cpu(es->s_mmp_update_interval); unsigned mmp_check_interval; @@ -258,21 +273,6 @@ void ext4_stop_mmpd(struct ext4_sb_info *sbi) } } -/* - * Get a random new sequence number but make sure it is not greater than - * EXT4_MMP_SEQ_MAX. - */ -static unsigned int mmp_new_seq(void) -{ - u32 new_seq; - - do { - new_seq = prandom_u32(); - } while (new_seq > EXT4_MMP_SEQ_MAX); - - return new_seq; -} - /* * Protect the filesystem from being mounted more than once. */ -- 2.31.1
Powered by blists - more mailing lists