From: Andreas Dilger <adilger@dilger.ca> To: Ye Bin <yebin10@huawei.com> Cc: Theodore Ts'o <tytso@mit.edu>, Ext4 Developers List <linux-ext4@vger.kernel.org>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Jan Kara <jack@suse.cz> Subject: Re: [PATCH 2/2] ext4: Fix potential uas-after-free about sbi->s_mmp_tsk when kmmpd kthread exit before set sbi->s_mmp_tsk Date: Mon, 5 Jul 2021 18:44:20 -0600 [thread overview] Message-ID: <85F4B44C-7AB8-4F3B-A443-454F3AC8C1B4@dilger.ca> (raw) In-Reply-To: <20210629143603.2166962-3-yebin10@huawei.com> [-- Attachment #1: Type: text/plain, Size: 2242 bytes --] On Jun 29, 2021, at 8:36 AM, Ye Bin <yebin10@huawei.com> wrote: > > Now sbi->s_mmp_tsk is created with kthread_run, then kmmpd maybe > already running and even exit as exception. Even though we set > sbi->s_mmp_tsk with NULL before kmmpd kthread exit, but > "sbi->s_mmp_tsk=kthread_run(XX)" may set after set with NULL. > mount kmmpd > | | > |-call kthread_run | > | |-kmmpd runing > | |-kmmpd exit sbi->s_mmp_tsk=NULL > | | > |-kthread_run return | > | and set sbi->s_mmp_tsk | > | | > |-then we get wild ptr"sbi->s_mmp_tsk" and later trigger UAF > > This patch is base on previous "ext4: Fix use-after-free about sbi->s_mmp_tsk". > Previous patch ensure kmmpd kthread exit by itself will set sbi->s_mmp_tsk with > NULL. We can create kthread first, and then wakeup kmmpd kthread later. > > Signed-off-by: Ye Bin <yebin10@huawei.com> Please note minor typo in the patch subject, should be "use-after-free". Reviewed-by: Andreas Dilger <adilger@dilger.ca> > --- > fs/ext4/mmp.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c > index fc18a8c205c7..6ec1ea182cc0 100644 > --- a/fs/ext4/mmp.c > +++ b/fs/ext4/mmp.c > @@ -394,16 +394,18 @@ int ext4_multi_mount_protect(struct super_block *sb, > /* > * Start a kernel thread to update the MMP block periodically. > */ > - EXT4_SB(sb)->s_mmp_tsk = kthread_run(kmmpd, sb, "kmmpd-%.*s", > - (int)sizeof(mmp->mmp_bdevname), > - bdevname(bh->b_bdev, > - mmp->mmp_bdevname)); > + EXT4_SB(sb)->s_mmp_tsk = kthread_create(kmmpd, sb, "kmmpd-%.*s", > + (int)sizeof(mmp->mmp_bdevname), > + bdevname(bh->b_bdev, > + mmp->mmp_bdevname)); > + > if (IS_ERR(EXT4_SB(sb)->s_mmp_tsk)) { > EXT4_SB(sb)->s_mmp_tsk = NULL; > ext4_warning(sb, "Unable to create kmmpd thread for %s.", > sb->s_id); > goto failed; > } > + wake_up_process(EXT4_SB(sb)->s_mmp_tsk); > > return 0; > > -- > 2.31.1 > Cheers, Andreas [-- Attachment #2: Message signed with OpenPGP --] [-- Type: application/pgp-signature, Size: 873 bytes --]
prev parent reply other threads:[~2021-07-06 0:44 UTC|newest] Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-06-29 14:36 [PATCH 0/2] Fix use-after-free about sbi->s_mmp_tsk Ye Bin 2021-06-29 14:36 ` [PATCH 1/2] ext4: " Ye Bin 2021-07-05 11:15 ` Jan Kara 2021-07-05 20:35 ` Theodore Ts'o 2021-07-06 11:11 ` Jan Kara 2021-07-06 16:03 ` Theodore Ts'o 2021-06-29 14:36 ` [PATCH 2/2] ext4: Fix potential uas-after-free about sbi->s_mmp_tsk when kmmpd kthread exit before set sbi->s_mmp_tsk Ye Bin 2021-07-05 10:52 ` Jan Kara 2021-07-06 0:44 ` Andreas Dilger [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=85F4B44C-7AB8-4F3B-A443-454F3AC8C1B4@dilger.ca \ --to=adilger@dilger.ca \ --cc=jack@suse.cz \ --cc=linux-ext4@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=tytso@mit.edu \ --cc=yebin10@huawei.com \ --subject='Re: [PATCH 2/2] ext4: Fix potential uas-after-free about sbi->s_mmp_tsk when kmmpd kthread exit before set sbi->s_mmp_tsk' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).