vnconfig -l support patch (Re: vn(4) RFC Misc.)

Matthew Dillon dillon at apollo.backplane.com
Mon Jan 14 07:48:02 PST 2008


:Per my recent email to kernel@, Attached is a little patch to get 
:vnconfig to list configured / available vn devices adapted from
:& imho improved from OpenBSD.
:
:Unless there are objections, I'll probably commit within the next couple 
:of days - I had a couple of questions / notes though particularly
:on the VNIOCGET ioctl kernel code:

    It looks great.

:- I'm implicitly trusting the input, assuming that this is
:   checked on kernel copy-in time. Is this a correct assumption
:   (I didn't have time to track it down)

    If I remember right the kernel does the copyin/copyout for ioctl's
    for you, so I believe the structure's integrity is good at the
    point where you process it.  You still have to bounds-check the
    parameters of course (and it looks like you do).

    Note that the length parameter encoded in the ioctl number
    is limited to 8192 bytes (sys/ioccom.h).  It can encode
    the vn_user structure since PATH_MAX is only 1K, but be aware
    of the limit.

:- The 'struct vn_user' doesn't store the vn file path, so I use the
:   vfs cache to re-lookup the vnode pointer backing the VN -
:   is this silly?
:
:   Also, I'm not sure if I needed to lock anything before using
:   the vfs cache, so there might be problems there.

    I'd suggest just constructing the path by hand and assuming the
    form "/dev/vn*".  The namecache reference is not guarenteed
    to exist... for example, the namecache can get flushed.

:- I've not yet run this under jails, which may mean a path disclosure
:   problem. Suggestions on fixing this if it is an issue welcome.

    It should theoretically work but if it doesn't it's a problem
    with vn_fullpath().  curproc is always valid in the ioctl path so
    you don't have to re-roll vn_fullpath().  Though, again, I suggest
    just constructing the path manually and not using the namecache at all.

:- I wasn't quite sure on how to do the swap size calculation for swap
:   backed vns in some cases & got bored at that point. Should work for
:   the normal case. Yea, lame excuse, I know.
:
:Tested briefly on a vmware UP VM & vkernel so far.
:
:Next up: Add a mount_vnd interface to vnconfig, after which it
:might make sense to move this piece into /usr/src/sbin
:instead of usr.sbin.

    /sbin is probably better then /usr/sbin, yah.

						-Matt






More information about the Submit mailing list