Pull bugzilla-8768 into release branch

Len Brown fc0dc4d3 53fdc518

+17 -30
+17 -30
drivers/acpi/battery.c
··· 113 113 acpi_string oem_info; 114 114 }; 115 115 116 - enum acpi_battery_files{ 116 + enum acpi_battery_files { 117 117 ACPI_BATTERY_INFO = 0, 118 118 ACPI_BATTERY_STATE, 119 119 ACPI_BATTERY_ALARM, ··· 129 129 }; 130 130 131 131 struct acpi_battery { 132 - struct mutex mutex; 133 132 struct acpi_device *device; 134 133 struct acpi_battery_flags flags; 135 134 struct acpi_buffer bif_data; 136 135 struct acpi_buffer bst_data; 136 + struct mutex lock; 137 137 unsigned long alarm; 138 138 unsigned long update_time[ACPI_BATTERY_NUMFILES]; 139 + 139 140 }; 140 141 141 142 inline int acpi_battery_present(struct acpi_battery *battery) ··· 236 235 return 0; 237 236 238 237 /* Evaluate _BIF */ 239 - 240 - status = 241 - acpi_evaluate_object(acpi_battery_handle(battery), "_BIF", NULL, 242 - &buffer); 238 + mutex_lock(&battery->lock); 239 + status = acpi_evaluate_object(acpi_battery_handle(battery), "_BIF", 240 + NULL, &buffer); 241 + mutex_unlock(&battery->lock); 243 242 if (ACPI_FAILURE(status)) { 244 243 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _BIF")); 245 244 return -ENODEV; ··· 286 285 return 0; 287 286 288 287 /* Evaluate _BST */ 289 - 290 - status = 291 - acpi_evaluate_object(acpi_battery_handle(battery), "_BST", NULL, 292 - &buffer); 288 + mutex_lock(&battery->lock); 289 + status = acpi_evaluate_object(acpi_battery_handle(battery), "_BST", 290 + NULL, &buffer); 291 + mutex_unlock(&battery->lock); 293 292 if (ACPI_FAILURE(status)) { 294 293 ACPI_EXCEPTION((AE_INFO, status, "Evaluating _BST")); 295 294 return -ENODEV; ··· 337 336 338 337 arg0.integer.value = alarm; 339 338 340 - status = 341 - acpi_evaluate_object(acpi_battery_handle(battery), "_BTP", 339 + mutex_lock(&battery->lock); 340 + status = acpi_evaluate_object(acpi_battery_handle(battery), "_BTP", 342 341 &arg_list, NULL); 342 + mutex_unlock(&battery->lock); 343 343 if (ACPI_FAILURE(status)) 344 344 return -ENODEV; 345 345 ··· 660 658 if (!battery || (count > sizeof(alarm_string) - 1)) 661 659 return -EINVAL; 662 660 663 - mutex_lock(&battery->mutex); 664 - 665 661 result = acpi_battery_update(battery, 1, &update_result); 666 662 if (result) { 667 663 result = -ENODEV; ··· 688 688 acpi_battery_check_result(battery, result); 689 689 690 690 if (!result) 691 - result = count; 692 - 693 - mutex_unlock(&battery->mutex); 691 + return count; 694 692 695 693 return result; 696 694 } ··· 712 714 int update_result = ACPI_BATTERY_NONE_UPDATE; 713 715 int update = 0; 714 716 715 - mutex_lock(&battery->mutex); 716 - 717 717 update = (get_seconds() - battery->update_time[fid] >= update_time); 718 718 update = (update | battery->flags.update[fid]); 719 719 ··· 729 733 result = acpi_read_funcs[fid].print(seq, result); 730 734 acpi_battery_check_result(battery, result); 731 735 battery->flags.update[fid] = result; 732 - mutex_unlock(&battery->mutex); 733 736 return result; 734 737 } 735 738 ··· 892 897 if (!battery) 893 898 return -ENOMEM; 894 899 895 - mutex_init(&battery->mutex); 896 - 897 - mutex_lock(&battery->mutex); 898 - 900 + mutex_init(&battery->lock); 899 901 battery->device = device; 900 902 strcpy(acpi_device_name(device), ACPI_BATTERY_DEVICE_NAME); 901 903 strcpy(acpi_device_class(device), ACPI_BATTERY_CLASS); ··· 928 936 kfree(battery); 929 937 } 930 938 931 - mutex_unlock(&battery->mutex); 932 939 933 940 return result; 934 941 } ··· 942 951 943 952 battery = acpi_driver_data(device); 944 953 945 - mutex_lock(&battery->mutex); 946 - 947 954 status = acpi_remove_notify_handler(device->handle, 948 955 ACPI_ALL_NOTIFY, 949 956 acpi_battery_notify); ··· 952 963 953 964 kfree(battery->bst_data.pointer); 954 965 955 - mutex_unlock(&battery->mutex); 956 - 957 - mutex_destroy(&battery->mutex); 966 + mutex_destroy(&battery->lock); 958 967 959 968 kfree(battery); 960 969