kern/163268: [acpi_hp] [patch] fix driver detach in absence of CMI
John Baldwin
jhb at freebsd.org
Fri Apr 12 16:18:27 UTC 2013
On Monday, April 08, 2013 3:30:01 pm hiren panchasara wrote:
> The following reply was made to PR kern/163268; it has been noted by GNATS.
>
> From: hiren panchasara <hiren.panchasara at gmail.com>
> To: bug-followup at FreeBSD.org, yuri.pankov at gmail.com
> Cc:
> Subject: Re: kern/163268: [acpi_hp] [patch] fix driver detach in absence of
CMI
> Date: Mon, 8 Apr 2013 12:29:11 -0700
>
> I do not see any apparent problem in the proposed patch. Unfortunately
> I do not have an hp to play with.
>
> Can someone look at the patch and try or approve so that we can make
> progress on this?
The current patch would incorrectly remove the notification handler if it
failed with EBUSY. I'm compiling the following to see if it builds. I also
think it is a bit less invasive. I have no way to test it however:
Index: dev/acpi_support/acpi_hp.c
===================================================================
--- dev/acpi_support/acpi_hp.c (revision 248326)
+++ dev/acpi_support/acpi_hp.c (working copy)
@@ -574,28 +574,26 @@
static int
acpi_hp_detach(device_t dev)
{
- int ret;
+ struct acpi_hp_softc *sc;
ACPI_FUNCTION_TRACE((char *)(uintptr_t) __func__);
- struct acpi_hp_softc *sc = device_get_softc(dev);
- if (sc->has_cmi && sc->hpcmi_open_pid != 0) {
- ret = EBUSY;
- }
- else {
- if (sc->has_notify) {
- ACPI_WMI_REMOVE_EVENT_HANDLER(dev,
- ACPI_HP_WMI_EVENT_GUID);
- }
+ sc = device_get_softc(dev);
+ if (sc->has_cmi && sc->hpcmi_open_pid != 0)
+ return (EBUSY);
+
+ if (sc->has_notify)
+ ACPI_WMI_REMOVE_EVENT_HANDLER(dev, ACPI_HP_WMI_EVENT_GUID);
+
+ if (sc->has_cmi) {
if (sc->hpcmi_bufptr != -1) {
sbuf_delete(&sc->hpcmi_sbuf);
sc->hpcmi_bufptr = -1;
}
sc->hpcmi_open_pid = 0;
destroy_dev(sc->hpcmi_dev_t);
- ret = 0;
}
- return (ret);
+ return (0);
}
static int
--
John Baldwin
More information about the freebsd-acpi
mailing list