On Thu, Aug 11, 2005 at 05:46:04PM +0900, YONETANI Tomokazu wrote: > On Thu, Aug 11, 2005 at 05:20:50PM +0900, Noritoshi Demizu wrote: > > > The latest GENERIC kernel fails to boot on my machine. > > > > When I reported this problem, I chose multi user mode in my all trys. > > > > I just find that, if I choose single user mode, the '#' prompt of > > /bin/sh is successfully displayed. And the "pwd" command successfully > > prints "/". But when I typed "ls", the kernel paniced in generic_bzero. > > > > I did buildworld & installworld both yesterday and today. Yesterdays' > > GENERIC kernel works fine with both yesterdays' and today's userland. > > But today's GENERIC kernel does not work with yesterdays' nor today's > > userland. > > Yes, I'm seeing this too, and I suspect that the calculation in > vop_write_dirent() is wrong; I inserted a printf() before the bzero() > and found that the second argument, or > > dp->d_reclen - offsetof(struct dirent, d_name) - dp->d_namlen, > > can be negative. Try reverting the users of vop_write_dirent() > to the previous revisions and see if it helps.
Found it. In the full dirent tree, the equivalent of GENERIC_DIRSIZ takes the string length directly, while GENERIC_DIRSIZ takes it from dirent. That field wasn't initialised. Joerg
