On Tue, Nov 12, 2013 at 03:33:45PM +0400, Sergey Kandaurov wrote:
> On 12 November 2013 07:01, Mateusz Guzik <mjgu...@gmail.com> wrote:
> > On Mon, Nov 11, 2013 at 01:33:25PM -0800, Julian Elischer wrote:
> >> On 11/11/13, 7:49 AM, Pavel Timofeev wrote:
> >> >Great, it helped! Thanks a lot!
> >>
> >> the suggested change suggests fragile code. It should be able to
> >> handle unexpected input..
> >
> > Indeed, I already suggested Sergey placing a compile time assertion to
> > make sure vm_guest range is covered.
> 
> I have the following change for this.
> Btw, the last element in vm_guest_sysctl_names is NULL, is it really needed
> for something? Unlike vm_bnames/vm_pnames, it seems not.
> 

No idea, I would leave it be.

> Add CTASSERT to handle enum VM_GUEST and vm_guest_sysctl_names cooperation.
> 
> Index: sys/sys/systm.h
> ===================================================================
> --- sys/sys/systm.h    (revision 258036)
> +++ sys/sys/systm.h    (working copy)
> @@ -72,7 +72,8 @@ extern int vm_guest;        /* Running as virtual machin
>   * ever implemented (e.g. vendor-specific paravirtualization features).
>   * Keep in sync with vm_guest_sysctl_names[].
>   */
> -enum VM_GUEST { VM_GUEST_NO = 0, VM_GUEST_VM, VM_GUEST_XEN, VM_GUEST_HV };
> +enum VM_GUEST { VM_GUEST_NO = 0, VM_GUEST_VM, VM_GUEST_XEN, VM_GUEST_HV,
> +        VM_LAST };
> 
>  #if defined(WITNESS) || defined(INVARIANTS)
>  void    kassert_panic(const char *fmt, ...)  __printflike(1, 2);
> Index: sys/kern/subr_param.c
> ===================================================================
> --- sys/kern/subr_param.c    (revision 258036)
> +++ sys/kern/subr_param.c    (working copy)
> @@ -156,6 +156,7 @@ static const char *const vm_guest_sysctl_names[] =
>      "hv",
>      NULL
>  };
> +CTASSERT(nitems(vm_guest_sysctl_names) - 1 == VM_LAST);
> 
>  #ifndef XEN
>  static const char *const vm_bnames[] = {
> 

I can't test it right now, I presume it works :)

With that in mind looks good to me, thanks!

-- 
Mateusz Guzik <mjguzik gmail.com>
_______________________________________________
freebsd-virtualization@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-virtualization
To unsubscribe, send any mail to 
"freebsd-virtualization-unsubscr...@freebsd.org"

Reply via email to