Module Name: src Committed By: thorpej Date: Wed Jan 29 05:48:22 UTC 2020
Modified Files: src/sys/compat/common: uipc_syscalls_50.c Log Message: Don't reference ifp->if_data directly; use if_export_if_data(). To generate a diff of this commit: cvs rdiff -u -r1.10 -r1.11 src/sys/compat/common/uipc_syscalls_50.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/compat/common/uipc_syscalls_50.c diff -u src/sys/compat/common/uipc_syscalls_50.c:1.10 src/sys/compat/common/uipc_syscalls_50.c:1.11 --- src/sys/compat/common/uipc_syscalls_50.c:1.10 Sun Dec 15 16:48:26 2019 +++ src/sys/compat/common/uipc_syscalls_50.c Wed Jan 29 05:48:22 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: uipc_syscalls_50.c,v 1.10 2019/12/15 16:48:26 tsutsui Exp $ */ +/* $NetBSD: uipc_syscalls_50.c,v 1.11 2020/01/29 05:48:22 thorpej Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -58,6 +58,7 @@ static int compat_ifdatareq(struct lwp *l, u_long cmd, void *data) { + struct if_data ifi; struct oifdatareq *ifdr = data; struct ifnet *ifp; int error; @@ -78,7 +79,8 @@ compat_ifdatareq(struct lwp *l, u_long c /* Do work. */ switch (cmd) { case OSIOCGIFDATA: - ifdatan2o(&ifdr->ifdr_data, &ifp->if_data); + if_export_if_data(ifp, &ifi, false); + ifdatan2o(&ifdr->ifdr_data, &ifi); return 0; case OSIOCZIFDATA: @@ -90,13 +92,9 @@ compat_ifdatareq(struct lwp *l, u_long c if (error != 0) return error; } - ifdatan2o(&ifdr->ifdr_data, &ifp->if_data); - /* - * Assumes that the volatile counters that can be - * zero'ed are at the end of if_data. - */ - memset(&ifp->if_data.ifi_ipackets, 0, sizeof(ifp->if_data) - - offsetof(struct if_data, ifi_ipackets)); + if_export_if_data(ifp, &ifi, true); + ifdatan2o(&ifdr->ifdr_data, &ifi); + /* XXX if_lastchange? */ return 0; default: