Index: sys/net/if_gif.c =================================================================== --- sys/net/if_gif.c (revision 193748) +++ sys/net/if_gif.c (working copy) @@ -912,13 +912,13 @@ case GIFSOPTS: if ((error = priv_check(curthread, PRIV_NET_GIF)) != 0) break; - if ((error = copyin(&options, &sc->gif_options, - sizeof(sc->gif_options)))) { - if ((options | GIF_FULLOPTS) == GIF_FULLOPTS) - ifr->ifr_data = (caddr_t)options; - else - error = EINVAL; - } + error = copyin(ifr->ifr_data, &options, sizeof(options)); + if (error) + break; + if (options & ~GIF_FULLOPTS) + error = EINVAL; + else + sc->gif_options = options; break; default: