On Wed, Jan 21, 2015 at 05:32:13AM -0800, Guenter Roeck wrote:path_init() returns -2. Guess that explains the unexpected flags ;-).
Another data point (though I have no idea if it is useful or what it means):
In the working case, path_init sets nd->flags to 0x50 or 0x51.
In the non-working case (ie for all files with a '/' in the name),
it sets nd->flags to 0x10 or 0x11, even though it is always called
with the LOOKUP_RCU bit set in flags.
Umm... Are those path_init() succeeding or failing? Note that path_init()
includes "walk everything except for the last component", so your non-working
case is "have it walk anything at all". What's failing there? path_init()
or handling the remaining component?