Andriy,

That's correct. Once you're in this code path you hold the appropriate
locks which prevent the metaslab group from being passivated so it can't be
NULL.

Thanks,
George


On Fri, Sep 9, 2016 at 9:28 AM, Andriy Gapon <[email protected]> wrote:

> On 08/09/2016 17:58, George Wilson wrote:
> > It can't be NULL in this code path. It can only be NULL when you first
> select
> > the metaslab group that you're going to attempt to allocate from.
>
> George,
>
> thank you for the reply.
> Just to be sure, do we need to check mg_next for being NULL in the
> following
> code in metaslab_alloc_dva():
>         if (hintdva) {
>                 vd = vdev_lookup_top(spa, DVA_GET_VDEV(&hintdva[d]));
>
>                 /*
>                  * It's possible the vdev we're using as the hint no
>                  * longer exists (i.e. removed). Consult the rotor when
>                  * all else fails.
>                  */
>                 if (vd != NULL) {
>                         mg = vd->vdev_mg;
>
>                         if (flags & METASLAB_HINTBP_AVOID &&
>                             mg->mg_next != NULL)
>                                 mg = mg->mg_next;
>                 } else {
>                         mg = mc->mc_rotor;
>                 }
>         } else if (d != 0) {
>
>
> > On Thu, Sep 8, 2016 at 10:26 AM, Andriy Gapon <[email protected]
> > <mailto:[email protected]>> wrote:
> >
> > Can mg_next even be NULL?
> > There is some code that checks for that condition and, thus, Coverity
> assumes
> > that it can be true.  Based on that assumption it quite convincingly
> proves that
> > there could be a NULL pointer dereference in
> metaslab_group_allocatable() where
> > we have the following loop:
> >
> > for (mgp = mg->mg_next; mgp != rotor; mgp = mgp->mg_next) {
> >         ...
> > }
> >
> > --
> > Andriy Gapon
> >
> > *openzfs-developer* | Archives
> > <https://www.listbox.com/member/archive/274414/=now>
> > <https://www.listbox.com/member/archive/rss/274414/28133750-22ed9730> |
> Modify
> > <https://www.listbox.com/member/?&;>
> > Your Subscription     [Powered by Listbox] <http://www.listbox.com>
> 
> 
> --
> Andriy Gapon
> 



-------------------------------------------
openzfs-developer
Archives: https://www.listbox.com/member/archive/274414/=now
RSS Feed: https://www.listbox.com/member/archive/rss/274414/28015062-cce53afa
Modify Your Subscription: 
https://www.listbox.com/member/?member_id=28015062&id_secret=28015062-f966d51c
Powered by Listbox: http://www.listbox.com

Reply via email to