Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 30 Jul 2011 00:52:13 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r224505 - head/sys/powerpc/powermac
Message-ID:  <201107300052.p6U0qDVU073070@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: nwhitehorn
Date: Sat Jul 30 00:52:13 2011
New Revision: 224505
URL: http://svn.freebsd.org/changeset/base/224505

Log:
  Fix an error that could cause sysctl -a to enter an infinite loop in the
  event of a broken or busy fan due to returning incorrect error codes from
  the FCU sysctl handler.
  
  Reported by:	Path Mather <paul at gromit dot dlib dot vt dot edu>1
  Approved by:	re (kib)

Modified:
  head/sys/powerpc/powermac/fcu.c

Modified: head/sys/powerpc/powermac/fcu.c
==============================================================================
--- head/sys/powerpc/powermac/fcu.c	Sat Jul 30 00:51:36 2011	(r224504)
+++ head/sys/powerpc/powermac/fcu.c	Sat Jul 30 00:52:13 2011	(r224505)
@@ -282,14 +282,14 @@ fcu_fan_set_rpm(struct fcu_fan *fan, int
 		fan->setpoint = rpm;
 	} else {
 		device_printf(fan->dev, "Unknown fan type: %d\n", fan->type);
-		return (-1);
+		return (ENXIO);
 	}
 
 	buf[0] = rpm >> (8 - fcu_rpm_shift);
 	buf[1] = rpm << fcu_rpm_shift;
 
 	if (fcu_write(sc->sc_dev, sc->sc_addr, reg, buf, 2) < 0)
-		return (-1);
+		return (EIO);
 
 	return (0);
 }
@@ -377,7 +377,7 @@ fcu_fan_set_pwm(struct fcu_fan *fan, int
 	buf[0] = (pwm * 2550) / 1000;
 
 	if (fcu_write(sc->sc_dev, sc->sc_addr, reg, buf, 1) < 0)
-		return (-1);
+		return (EIO);
 	return (0);
 }
 
@@ -536,12 +536,12 @@ fcu_fanrpm_sysctl(SYSCTL_HANDLER_ARGS)
 	if (fan->type == FCU_FAN_RPM) {
 		rpm = fcu_fan_get_rpm(fan);
 		if (rpm < 0)
-			return (-1);
+			return (EIO);
 		error = sysctl_handle_int(oidp, &rpm, 0, req);
 	} else {
 		error = fcu_fan_get_pwm(fcu, fan, &pwm, &rpm);
 		if (error < 0)
-			return (-1);
+			return (EIO);
 
 		switch (arg2 & 0xff00) {
 		case FCU_PWM_SYSCTL_PWM:
@@ -552,7 +552,7 @@ fcu_fanrpm_sysctl(SYSCTL_HANDLER_ARGS)
 			break;
 		default:
 			/* This should never happen */
-			error = -1;
+			return (EINVAL);
 		};
 	}
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201107300052.p6U0qDVU073070>