tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: test wanted: module plists
On Mon Mar 08 2010 at 02:37:05 +0000, David Holland wrote:
> The code for loading a module plist from a file system is messed up in
> that it calls namei() and then it calls vn_open() on the same
> nameidata without reinitializing it or cleaning up the previous
> results. I'm surprised this didn't result in fireworks, but apparently
> it didn't.
>
> The following patch fixes that, and compiles, but I'm not set up to be
> able to test this -- is there anyone who can do so easily/quickly?
When I was playing with that code, I used atf on tests/modules. I can't
remember if it tests loading from .prop, but a .prop file isn't exactly
hard to create.
Dunno what the canonical in-tree feature using this is, though.
> Index: kern_module_vfs.c
> ===================================================================
> RCS file: /cvsroot/src/sys/kern/kern_module_vfs.c,v
> retrieving revision 1.3
> diff -u -p -r1.3 kern_module_vfs.c
> --- kern_module_vfs.c 16 Feb 2010 05:47:52 -0000 1.3
> +++ kern_module_vfs.c 8 Mar 2010 02:33:36 -0000
> @@ -147,23 +147,18 @@ module_load_plist_vfs(const char *modpat
> NDINIT(&nd, LOOKUP, FOLLOW | (nochroot ? NOCHROOT : 0),
> UIO_SYSSPACE, proppath);
>
> - error = namei(&nd);
> - if (error != 0) {
> - goto out1;
> + error = vn_open(&nd, FREAD, 0);
> + if (error != 0) {
> + goto out1;
> }
>
> error = vn_stat(nd.ni_vp, &sb);
> if (error != 0) {
> - goto out1;
> + goto out;
> }
> if (sb.st_size >= (plistsize - 1)) { /* leave space for term \0 */
> error = EFBIG;
> - goto out1;
> - }
> -
> - error = vn_open(&nd, FREAD, 0);
> - if (error != 0) {
> - goto out1;
> + goto out;
> }
>
> base = kmem_alloc(plistsize, KM_SLEEP);
>
>
>
> --
> David A. Holland
> dholland%netbsd.org@localhost
Home |
Main Index |
Thread Index |
Old Index