Re: [PATCH v2] rbtree: fix the red root

From: Esme
Date: Fri Jan 11 2019 - 19:39:33 EST


I've been out today but return home tomorrow and can test any suggested fixes, or with different kernel settings. Just let me know.

Esme


Sent with ProtonMail Secure Email.

âââââââ Original Message âââââââ
On Friday, January 11, 2019 7:18 PM, Qian Cai <cai@xxxxxx> wrote:

> On 1/11/19 6:16 PM, Matthew Wilcox wrote:
>
> > On Fri, Jan 11, 2019 at 03:58:43PM -0500, Qian Cai wrote:
> >
> > > diff --git a/lib/rbtree_test.c b/lib/rbtree_test.c
> > > index b7055b2a07d3..afad0213a117 100644
> > > --- a/lib/rbtree_test.c
> > > +++ b/lib/rbtree_test.c
> > > @@ -345,6 +345,17 @@ static int __init rbtree_test_init(void)
> > > check(0);
> > > }
> > >
> > > - /*
> > > - - a little regression test to catch a bug may be introduced by
> > > - - 6d58452dc06 (rbtree: adjust root color in rb_insert_color() only when
> > > - - necessary)
> > > - */
> > > - insert(nodes, &root);
> > > - nodes->rb.__rb_parent_color = RB_RED;
> > > - insert(nodes + 1, &root);
> > > - erase(nodes + 1, &root);
> > > - erase(nodes, &root);
> >
> > That's not a fair test! You're poking around in the data structure to
> > create the situation. This test would have failed before 6d58452dc06 too.
> > How do we create a tree that has a red parent at root, only using insert()
> > and erase()?
>
> If only I knew how to reproduce this myself, I might be able to figure out how
> it ends up with the red root in the first place.