diff options
Diffstat (limited to 'drivers/acpi/sbshc.c')
-rw-r--r-- | drivers/acpi/sbshc.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/acpi/sbshc.c b/drivers/acpi/sbshc.c index fd40b6a1d639..a2cf3008ce6c 100644 --- a/drivers/acpi/sbshc.c +++ b/drivers/acpi/sbshc.c @@ -111,12 +111,17 @@ static int wait_transaction_complete(struct acpi_smb_hc *hc, int timeout) return -ETIME; } -int acpi_smbus_transaction(struct acpi_smb_hc *hc, u8 protocol, u8 address, - u8 command, u8 *data, u8 length) +static int acpi_smbus_transaction(struct acpi_smb_hc *hc, u8 protocol, + u8 address, u8 command, u8 *data, u8 length) { int ret = -EFAULT, i; u8 temp, sz = 0; + if (!hc) { + printk(KERN_ERR PREFIX "host controller is not configured\n"); + return ret; + } + mutex_lock(&hc->lock); if (smb_hc_read(hc, ACPI_SMB_PROTOCOL, &temp)) goto end; @@ -292,6 +297,7 @@ static int acpi_smbus_hc_remove(struct acpi_device *device, int type) hc = acpi_driver_data(device); acpi_ec_remove_query_handler(hc->ec, hc->query_bit); kfree(hc); + acpi_driver_data(device) = NULL; return 0; } |