mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 13:51:44 +00:00
Merge branches 'acpi-property' and 'acpi-sbs'
* acpi-property: ACPI / property: Switch to bitmap_zalloc() * acpi-sbs: ACPI / SBS: Fix rare oops when removing modules ACPI / SBS: Fix GPE storm on recent MacBookPro's
This commit is contained in:
commit
0a1875ad29
@ -1132,6 +1132,7 @@ void acpi_os_wait_events_complete(void)
|
||||
flush_workqueue(kacpid_wq);
|
||||
flush_workqueue(kacpi_notify_wq);
|
||||
}
|
||||
EXPORT_SYMBOL(acpi_os_wait_events_complete);
|
||||
|
||||
struct acpi_hp_work {
|
||||
struct work_struct work;
|
||||
|
@ -441,9 +441,13 @@ static int acpi_ac_get_present(struct acpi_sbs *sbs)
|
||||
|
||||
/*
|
||||
* The spec requires that bit 4 always be 1. If it's not set, assume
|
||||
* that the implementation doesn't support an SBS charger
|
||||
* that the implementation doesn't support an SBS charger.
|
||||
*
|
||||
* And on some MacBooks a status of 0xffff is always returned, no
|
||||
* matter whether the charger is plugged in or not, which is also
|
||||
* wrong, so ignore the SBS charger for those too.
|
||||
*/
|
||||
if (!((status >> 4) & 0x1))
|
||||
if (!((status >> 4) & 0x1) || status == 0xffff)
|
||||
return -ENODEV;
|
||||
|
||||
sbs->charger_present = (status >> 15) & 0x1;
|
||||
|
@ -196,6 +196,7 @@ int acpi_smbus_unregister_callback(struct acpi_smb_hc *hc)
|
||||
hc->callback = NULL;
|
||||
hc->context = NULL;
|
||||
mutex_unlock(&hc->lock);
|
||||
acpi_os_wait_events_complete();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -292,6 +293,7 @@ static int acpi_smbus_hc_remove(struct acpi_device *device)
|
||||
|
||||
hc = acpi_driver_data(device);
|
||||
acpi_ec_remove_query_handler(hc->ec, hc->query_bit);
|
||||
acpi_os_wait_events_complete();
|
||||
kfree(hc);
|
||||
device->driver_data = NULL;
|
||||
return 0;
|
||||
|
@ -62,7 +62,7 @@ void acpi_extract_apple_properties(struct acpi_device *adev)
|
||||
if (!numprops)
|
||||
goto out_free;
|
||||
|
||||
valid = kcalloc(BITS_TO_LONGS(numprops), sizeof(long), GFP_KERNEL);
|
||||
valid = bitmap_zalloc(numprops, GFP_KERNEL);
|
||||
if (!valid)
|
||||
goto out_free;
|
||||
|
||||
@ -137,5 +137,5 @@ void acpi_extract_apple_properties(struct acpi_device *adev)
|
||||
|
||||
out_free:
|
||||
ACPI_FREE(props);
|
||||
kfree(valid);
|
||||
bitmap_free(valid);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user