All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Sterba <dsterba@suse.cz>
To: bodefang <bodefang@126.com>
Cc: clm@fb.com, josef@toxicpanda.com, dsterba@suse.com,
	linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] fs/btrfs: avoid null pointer dereference if reloc control has not been initialized
Date: Tue, 5 Jan 2021 12:38:10 +0100	[thread overview]
Message-ID: <20210105113810.GL6430@suse.cz> (raw)
In-Reply-To: <125f3257.193a.176d084a633.Coremail.bodefang@126.com>

I'm keeping the rest of the mail as I received it, it's completely
garbled and would need manual reformatting. The changelog and even the
diff are completely on one line(!).

On Tue, Jan 05, 2021 at 11:08:42AM +0800, bodefang wrote:
> Similar to commmit<389305b2aa68>(“btrfs: relocation: Only remove reloc rb_trees if reloc control has been initialized”).it turns out that fs_info::reloc_ctl can be NULL in btrfs_recover_relocation() as we allocate relocation control after allreloc roots have been verified.,so there should be a check for rc to prevent null pointer dereference.
> 
> Signed-off-by: Defang Bo <bodefang@126.com>Reviewed-by: David Sterba <dsterba@suse.cz>---

Oh and don't add reviewed-by unless it's explicitly stated by the
person.

> Changes since v1:
> - More accurate description for this patch to describe how the NULL can get there.
> ---
> --- fs/btrfs/relocation.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index 3602806..ca03571 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -626,6 +626,9 @@ static int __must_check __add_reloc_root(struct btrfs_root *root) struct mapping_node *node; struct reloc_control *rc = fs_info->reloc_ctl; + if (!rc) + return 0; + node = kmalloc(sizeof(*node), GFP_NOFS); if (!node) return -ENOMEM; @@ -703,6 +706,9 @@ static int __update_reloc_root(struct btrfs_root *root) struct rb_node *rb_node; struct mapping_node *node = NULL; struct reloc_control *rc = fs_info->reloc_ctl; + + if (!rc) + return 0; spin_lock(&rc->reloc_root_tree.lock); rb_node = rb_simple_search(&rc->reloc_root_tree.rb_root, -- 2.7.4
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> At 2021-01-04 23:11:13, "David Sterba" <dsterba@suse.cz> wrote:
> >On Sun, Dec 27, 2020 at 10:55:31PM +0800, Defang Bo wrote:
> >> Similar to commmit<389305b2>,
> >
> >Please use full commit reference like 389305b2aa68 ("btrfs: relocation:
> >Only remove reloc rb_trees if reloc control has been initialized")
> >
> >> it turns out that fs_info::reloc_ctl can be NULL ,
> >
> >Please describe how the NULL can get there.

      parent reply	other threads:[~2021-01-05 11:40 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-27 14:55 [PATCH 3/3] fs/btrfs: avoid null pointer dereference if reloc control has not been initialized Defang Bo
2021-01-04 15:11 ` David Sterba
     [not found]   ` <125f3257.193a.176d084a633.Coremail.bodefang@126.com>
2021-01-05 11:38     ` David Sterba [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=20210105113810.GL6430@suse.cz \
    --to=dsterba@suse.cz \
    --cc=bodefang@126.com \
    --cc=clm@fb.com \
    --cc=dsterba@suse.com \
    --cc=josef@toxicpanda.com \
    --cc=linux-btrfs@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.