Subject: Re: eliminating veriexec #ifdefs in vfs_vnops.c
To: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
From: Elad Efrat <elad@NetBSD.org>
List: tech-kern
Date: 12/30/2006 16:49:07
actually... forget about it. I don't even wanna touch this piece of shit
code. I'll add #ifdefs.

-e.

Elad Efrat wrote:
> YAMAMOTO Takashi wrote:
> 
>> in the case of UIO_USERSPACE, currently namei() does copyinstr().
>> ie. one copy.
>> with your change, pathname_get() does copyinstr, and then namei() does
>> copystr().  ie. two copies.
>> don't you consider it as an additional cost at all?
> 
> did you measure it?
> 
> how about we add a new namei flag, HASNAME, that if set, namei() will
> not do any of the allocation/copy:
> 
> 	if ((cnp->cn_flags & HASNAME) == 0) {
> 		/* PNBUF_GET() */
> 		/* copyin/copyinstr... */
> 	} else {
> 		cnp->cn_pnbuf = ndp->ni_dirp;
> 	}
> 
> 	/* PNBUF_PUT() -> if (!HASNAME) PNBUF_PUT() */
> 
> and then, in vn_open(), just call namei() with that flag after
> pathname_get()? would that work? otherwise we still have to have
> loads of #ifdefs in vn_open() and it's staying ugly.
> 
> -e.
>