diff options
author | Lv Zheng <lv.zheng@intel.com> | 2017-06-07 07:54:58 +0300 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2017-06-12 15:09:29 +0300 |
commit | 83848fbe7e6af978c080a88c130a67178b1ac0e4 (patch) | |
tree | d0768387438df3a229e80017c093e826f0b30cec /drivers/acpi/acpica/dbxface.c | |
parent | 186f0a0d8e083505bd5cd23baa82b2205224d9ad (diff) | |
download | linux-83848fbe7e6af978c080a88c130a67178b1ac0e4.tar.xz |
ACPICA: Tables: Mechanism to handle late stage acpi_get_table() imbalance
Considering this case:
1. A program opens a sysfs table file 65535 times, it can increase
validation_count and first increment cause the table to be mapped:
validation_count = 65535
2. AML execution causes "Load" to be executed on the same
table, this time it cannot increase validation_count, so
validation_count remains:
validation_count = 65535
3. The program closes sysfs table file 65535 times, it can decrease
validation_count and the last decrement cause the table to be
unmapped:
validation_count = 0
4. AML code still accessing the loaded table, kernel crash can be
observed.
To prevent that from happening, add a validation_count threashold.
When it is reached, the validation_count can no longer be
incremented/decremented to invalidate the table descriptor (means
preventing table unmappings)
Note that code added in acpi_tb_put_table() is actually a no-op but
changes the warning message into a "warn once" one. Lv Zheng.
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
[ rjw: Changelog, comments ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/acpica/dbxface.c')
0 files changed, 0 insertions, 0 deletions