linux/drivers/acpi/acpica
Lv Zheng 83848fbe7e 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>
2017-06-12 14:09:29 +02:00
..
acapps.h ACPICA: Tools: Update common signon, remove compilation bit width 2017-02-09 14:47:42 +01:00
accommon.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acconvert.h ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
acdebug.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acdispat.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acevents.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acglobal.h ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
achware.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acinterp.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
aclocal.h ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
acmacros.h ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
acnamesp.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acobject.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acopcode.h ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
acparser.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acpredef.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acresrc.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acstruct.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
actables.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
acutils.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
amlcode.h ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
amlresrc.h ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dbcmds.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dbconvert.c scripts/spelling.txt: add "an union" pattern and fix typo instances 2017-02-27 18:43:46 -08:00
dbdisply.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dbexec.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dbfileio.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dbhistry.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dbinput.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dbmethod.c ACPICA: debugger: fix memory leak on Pathname 2017-04-27 00:31:00 +02:00
dbnames.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dbobject.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dbstats.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dbtest.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dbutils.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dbxface.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
dsargs.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dscontrol.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
dsdebug.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dsfield.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dsinit.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dsmethod.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dsmthdat.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
dsobject.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
dsopcode.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
dsutils.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
dswexec.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
dswload2.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
dswload.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dswscope.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
dswstate.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evevent.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evglock.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evgpe.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evgpeblk.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evgpeinit.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evgpeutil.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evhandler.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evmisc.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evregion.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evrgnini.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evsci.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evxface.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evxfevnt.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evxfgpe.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
evxfregn.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exconcat.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exconfig.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exconvrt.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
excreate.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exdebug.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exdump.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exfield.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exfldio.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exmisc.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
exmutex.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exnames.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
exoparg1.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
exoparg2.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
exoparg3.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exoparg6.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
exprep.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exregion.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exresnte.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exresolv.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
exresop.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exstore.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
exstoren.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
exstorob.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exsystem.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
extrace.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
exutils.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
hwacpi.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
hwesleep.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
hwgpe.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
hwpci.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
hwregs.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
hwsleep.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
hwtimer.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
hwvalid.c ACPICA: Fix several incorrect invocations of ACPICA return macro 2017-04-27 00:31:00 +02:00
hwxface.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
hwxfsleep.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
Makefile ACPICA: Add non-linux host build support 2017-04-11 22:11:09 +02:00
nsaccess.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
nsalloc.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsarguments.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsconvert.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsdump.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsdumpdv.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nseval.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsinit.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsload.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsnames.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsobject.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsparse.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nspredef.c scripts/spelling.txt: add "an union" pattern and fix typo instances 2017-02-27 18:43:46 -08:00
nsprepkg.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsrepair2.c ACPICA: Update for automatic repair code for objects returned by evaluate_object 2017-04-27 00:31:00 +02:00
nsrepair.c ACPICA: Update for automatic repair code for objects returned by evaluate_object 2017-04-27 00:31:00 +02:00
nssearch.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsutils.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
nswalk.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsxfeval.c scripts/spelling.txt: add "an union" pattern and fix typo instances 2017-02-27 18:43:46 -08:00
nsxfname.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
nsxfobj.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
psargs.c ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
psloop.c ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
psobject.c ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
psopcode.c ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
psopinfo.c ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
psparse.c ACPICA: Cleanup AML opcode definitions, no functional change 2017-04-27 00:31:00 +02:00
psscope.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
pstree.c ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
psutils.c ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
pswalk.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
psxface.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rsaddr.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rscalc.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rscreate.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rsdump.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rsdumpinfo.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rsinfo.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rsio.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rsirq.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rslist.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rsmemory.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rsmisc.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rsserial.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rsutils.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
rsxface.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
tbdata.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
tbfadt.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
tbfind.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
tbinstal.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
tbprint.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
tbutils.c ACPICA: Tables: Mechanism to handle late stage acpi_get_table() imbalance 2017-06-12 14:09:29 +02:00
tbxface.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
tbxfload.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
tbxfroot.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utaddress.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utalloc.c ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
utascii.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utbuffer.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utcache.c ACPICA: Local cache support: Allow small cache objects 2017-04-27 00:31:01 +02:00
utcopy.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utdebug.c ACPICA: iasl: add ASL conversion tool 2017-04-28 21:56:10 +02:00
utdecode.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utdelete.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
uterror.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
uteval.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utexcep.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utglobal.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
uthex.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utids.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utinit.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utlock.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utmath.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utmisc.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utmutex.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utnonansi.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utobject.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utosi.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utownerid.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utpredef.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utprint.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utresrc.c Revert "ACPICA: Disassembler: Enhance resource descriptor detection" 2017-06-05 23:33:39 +02:00
utstate.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utstring.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utstrtoul64.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
uttrack.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utuuid.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utxface.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utxferror.c ACPICA: Update some function headers, no funtional change 2017-04-27 00:30:59 +02:00
utxfinit.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00
utxfmutex.c ACPICA: Source tree: Update copyright notices to 2017 2017-02-09 14:47:02 +01:00