Hey Al,
 mind looking at fs/namei,c line 2186:

                if (likely(!nd_jump_root(nd)))
                        return s;
                nd->root.mnt = NULL;
-->             rcu_read_unlock();   <--
                return ERR_PTR(-ECHILD);

because that rcu_read_unlock() looks odd.

It looks odd because the lock part is

                if (flags & LOOKUP_RCU)
                        rcu_read_lock();

ie it's locked conditionally, and the code in between does not seem to
return every time LOOKUP_RCU is clear.

So mind giving this a look? Is it as obviously buggy as I think it is,
or is there something I'm missing?

              Linus

Reply via email to