diff options
| author | Lv Zheng <lv.zheng@intel.com> | 2017-06-07 12:54:58 +0800 | 
|---|---|---|
| committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2017-06-12 14:09:29 +0200 | 
| commit | 83848fbe7e6af978c080a88c130a67178b1ac0e4 (patch) | |
| tree | d0768387438df3a229e80017c093e826f0b30cec /include/linux/fpga/fpga-bridge.h | |
| parent | 186f0a0d8e083505bd5cd23baa82b2205224d9ad (diff) | |
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 'include/linux/fpga/fpga-bridge.h')
0 files changed, 0 insertions, 0 deletions
