PERFORCE change 124243 for review
Constantine A. Murenin
cnst at FreeBSD.org
Sat Jul 28 02:21:43 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=124243
Change 124243 by cnst at dale on 2007/07/28 02:20:40
reinitialise size_t *oldlenp parameter to sysctl(3),
because it can be changed by sysctl(3) sometimes.
This gets rid of the following problems on FreeBSD:
sensorsd: sysctl: Cannot allocate memory
(FreeBSD must have something different here than OpenBSD?)
Affected files ...
.. //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.c#3 edit
Differences ...
==== //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.c#3 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $P4: //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.c#2 $ */
+/* $P4: //depot/projects/soc2007/cnst-sensors/usr.sbin.sensorsd/sensorsd.c#3 $ */
/* $FreeBSD$ */
/* $OpenBSD: sensorsd.c,v 1.33 2007/06/01 22:41:12 cnst Exp $ */
@@ -110,7 +110,7 @@
{
struct sensordev sensordev;
struct sdlim_t *sdlim;
- size_t sdlen = sizeof(sensordev);
+ size_t sdlen;
time_t next_report, last_report = 0, next_check;
int mib[3], dev;
int sleeptime, sensor_cnt = 0, ch;
@@ -130,6 +130,7 @@
for (dev = 0; dev < MAXSENSORDEVICES; dev++) {
mib[2] = dev;
+ sdlen = sizeof(sensordev);
if (sysctl(mib, 3, &sensordev, &sdlen, NULL, 0) == -1) {
if (errno != ENOENT)
warn("sysctl");
@@ -190,7 +191,7 @@
struct sensor sensor;
struct sdlim_t *sdlim;
struct limits_t *limit;
- size_t slen = sizeof(sensor);
+ size_t slen;
int mib[5], numt;
enum sensor_type type;
@@ -209,6 +210,7 @@
mib[3] = type;
for (numt = 0; numt < snsrdev->maxnumt[type]; numt++) {
mib[4] = numt;
+ slen = sizeof(sensor);
if (sysctl(mib, 5, &sensor, &slen, NULL, 0) == -1) {
if (errno != ENOENT)
warn("sysctl");
@@ -247,7 +249,6 @@
mib[0] = CTL_HW;
mib[1] = HW_SENSORS;
mib[2] = sdlim->dev;
- len = sizeof(sensor);
TAILQ_FOREACH(limit, &sdlim->limits, entries) {
if ((limit->flags & SENSORSD_L_ISTATUS) &&
@@ -256,6 +257,7 @@
mib[3] = limit->type;
mib[4] = limit->numt;
+ len = sizeof(sensor);
if (sysctl(mib, 5, &sensor, &len, NULL, 0) == -1)
err(1, "sysctl");
More information about the p4-projects
mailing list