On Sat, Jan 16, 2016 at 5:11 AM, Michał Kępień <kernel@xxxxxxxxxx> wrote: >> My laptop has one RW data object, one RO data object, and one >> totally inaccessible data object. Check for the existence of the >> accessor methods and report in sysfs. >> >> The docs also permit WQxx getters for single-instance objects to >> take no parameters. Probe for that as well to avoid ACPICA warnings >> about mismatched signatures. >> >> Signed-off-by: Andy Lutomirski <luto@xxxxxxxxxx> >> --- >> drivers/platform/x86/wmi.c | 94 ++++++++++++++++++++++++++++++++++++++++++++-- >> include/linux/wmi.h | 6 +++ >> 2 files changed, 96 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c >> index 5571ae7354a1..49be61207c4a 100644 >> --- a/drivers/platform/x86/wmi.c >> +++ b/drivers/platform/x86/wmi.c >> @@ -66,6 +66,8 @@ struct wmi_block { >> struct acpi_device *acpi_device; >> wmi_notify_handler handler; >> void *handler_data; >> + >> + bool read_takes_no_args; /* only defined if readable */ >> }; >> >> >> @@ -216,6 +218,25 @@ static bool find_guid(const char *guid_string, struct wmi_block **out) >> return false; >> } >> >> +static int get_subobj_info(acpi_handle handle, const char *pathname, >> + struct acpi_device_info *info) >> +{ >> + acpi_handle subobj_handle; >> + acpi_status status; >> + >> + status = acpi_get_handle(handle, (char *)pathname, &subobj_handle); >> + if (status == AE_NOT_FOUND) >> + return -ENOENT; >> + else if (ACPI_FAILURE(status)) >> + return -EIO; >> + >> + status = acpi_get_object_info(subobj_handle, &info); > > acpi_get_object_info() allocates the returned buffer itself. The latter > should then subsequently be freed by the caller. One solution is to > change get_subobj_info() so that it takes a struct acpi_device_info ** > as an argument, which should then be passed to acpi_get_object_info(). > See also below. I have an updated version of this patch in my queue. I'll try to send it early next week. --Andy -- To unsubscribe from this list: send the line "unsubscribe platform-driver-x86" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html