⬢ DragonFlyBSD Kernel Audit
DF-5145 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/misc/ipmi/ipmi_acpi.c
+++ b/sys/dev/misc/ipmi/ipmi_acpi.c
@@ -76,9 +76,8 @@
 {
 	ACPI_HANDLE devh;
 	const char *mode;
-	struct ipmi_get_info info;
 	struct ipmi_softc *sc = device_get_softc(dev);
-	int count, error, flags, i, type;
+	int count, error, i, type;
 	int interface_type = 0, interface_version = 0;
 
 	error = 0;
@@ -102,11 +101,8 @@
 		device_printf(dev, "BT interface not supported\n");
 		return (ENXIO);
 	case SSIF_MODE:
-		if (ACPI_FAILURE(acpi_GetInteger(devh, "_ADR", &flags)))
-			return (ENXIO);
-		info.address = flags;
 		device_printf(dev, "SSIF interface not supported on ACPI\n");
-		return (0);
+		return (ENXIO);
 	default:
 		return (ENXIO);
 	}
--- a/sys/dev/misc/ipmi/ipmi.c
+++ b/sys/dev/misc/ipmi/ipmi.c
@@ -587,6 +587,11 @@
 	int error;
 
 	IPMI_LOCK(sc);
+	if (sc->ipmi_enqueue_request == NULL) {
+		/* Interface frontend never attached (dead softc). */
+		IPMI_UNLOCK(sc);
+		return (ENXIO);
+	}
 	error = sc->ipmi_enqueue_request(sc, req);
 	if (error == 0)
 		error = lksleep(req, &sc->ipmi_lock, 0, "ipmireq", timo);