diff --git a/sys/dev/sysmon/sysmon_envsys.c b/sys/dev/sysmon/sysmon_envsys.c index 63630a11ecc6..31bab3831153 100644 --- a/sys/dev/sysmon/sysmon_envsys.c +++ b/sys/dev/sysmon/sysmon_envsys.c @@ -1,4 +1,4 @@ -/* $NetBSD: sysmon_envsys.c,v 1.36 2007/07/21 15:30:04 xtraeme Exp $ */ +/* $NetBSD: sysmon_envsys.c,v 1.37 2007/07/21 15:45:12 xtraeme Exp $ */ /*- * Copyright (c) 2007 The NetBSD Foundation, Inc. @@ -75,7 +75,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: sysmon_envsys.c,v 1.36 2007/07/21 15:30:04 xtraeme Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sysmon_envsys.c,v 1.37 2007/07/21 15:45:12 xtraeme Exp $"); #include #include @@ -339,12 +339,6 @@ sysmonioctl_envsys(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l) edata = &sme->sme_sensor_data[tred->sensor]; - if (edata->flags & ENVSYS_FDUPDESC) { - tred->validflags &= ~ENVSYS_FCURVALID; - tred->cur.data_s = tred->cur.data_us = 0; - goto out; - } - if (tred->sensor < sme->sme_nsensors) { if ((sme->sme_flags & SME_DISABLE_GTREDATA) == 0) { error = (*sme->sme_gtredata)(sme, edata); @@ -376,7 +370,8 @@ sysmonioctl_envsys(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l) tred->validflags |= ENVSYS_FFRACVALID; } - if (edata->state == ENVSYS_SINVALID) { + if (edata->state == ENVSYS_SINVALID || + edata->flags & ENVSYS_FDUPDESC) { tred->validflags &= ~ENVSYS_FCURVALID; tred->cur.data_us = tred->cur.data_s = 0; } @@ -387,8 +382,6 @@ sysmonioctl_envsys(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l) " tred->sensor=%d\n", __func__, tred->validflags, tred->units, tred->sensor)); } - -out: tred->sensor = oidx; mutex_exit(&sme_mtx);