linux/drivers/acpi/acpica
Lv Zheng 7c43312af8 ACPICA: Events: Cleanup GPE dispatcher type obtaining code
ACPICA commit 7926d5ca9452c87f866938dcea8f12e1efb58f89

There is an issue in acpi_install_gpe_handler() and acpi_remove_gpe_handler().
The code to obtain the GPE dispatcher type from the Handler->original_flags
is wrong:
    if (((Handler->original_flags & ACPI_GPE_DISPATCH_METHOD) ||
         (Handler->original_flags & ACPI_GPE_DISPATCH_NOTIFY)) &&
ACPI_GPE_DISPATCH_NOTIFY is 0x03 and ACPI_GPE_DISPATCH_METHOD is 0x02, thus
this statement is TRUE for the following dispatcher types:
    0x01 (ACPI_GPE_DISPATCH_HANDLER): not expected
    0x02 (ACPI_GPE_DISPATCH_METHOD): expected
    0x03 (ACPI_GPE_DISPATCH_NOTIFY): expected

There is no functional issue due to this because Handler->original_flags is
only set in acpi_install_gpe_handler(), and an earlier checker has excluded
the ACPI_GPE_DISPATCH_HANDLER:
    if ((gpe_event_info->Flags & ACPI_GPE_DISPATCH_MASK) ==
            ACPI_GPE_DISPATCH_HANDLER)
    {
        Status = AE_ALREADY_EXISTS;
        goto free_and_exit;
    }
    ...
    Handler->original_flags = (u8) (gpe_event_info->Flags &
        (ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK));

We need to clean this up before modifying the GPE dispatcher type values.

In order to prevent such issue from happening in the future, this patch
introduces ACPI_GPE_DISPATCH_TYPE() macro to be used to obtain the GPE
dispatcher types. Lv Zheng.

Link: https://github.com/acpica/acpica/commit/7926d5ca
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-02-05 15:31:38 +01:00
..
acapps.h ACPICA: Common: Enhance cm_get_file_size() to improve portability 2014-07-08 14:22:26 +02:00
accommon.h ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
acdebug.h ACPICA: Utilities: Add support to read table from files 2014-07-08 14:22:25 +02:00
acdispat.h ACPICA: Add auto-serialization support for ill-behaved control methods. 2014-03-26 16:25:59 +01:00
acevents.h ACPICA: Events: Remove acpi_ev_valid_gpe_event() due to current restriction 2015-02-05 15:31:37 +01:00
acglobal.h ACPICA: Disassembler: Add support for C-style operators and expressions. 2014-11-28 00:00:52 +01:00
achware.h ACPICA: Events: Reduce indent divergences of events files. 2014-10-21 00:39:39 +02:00
acinterp.h ACPICA: Remove global option to serialize all control methods. 2014-03-26 16:25:59 +01:00
aclocal.h ACPICA: Save current masks of enabled GPEs after enable register writes 2014-12-01 23:50:16 +01:00
acmacros.h ACPICA: Revert "Headers: Deploy #pragma pack (push) and (pop)." 2014-03-18 01:53:45 +01:00
acnamesp.h ACPICA: Revert "Headers: Deploy #pragma pack (push) and (pop)." 2014-03-18 01:53:45 +01:00
acobject.h ACPICA: Update to GPIO region handler interface. 2014-09-24 22:53:46 +02:00
acopcode.h ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
acparser.h ACPICA: Revert "Headers: Deploy #pragma pack (push) and (pop)." 2014-03-18 01:53:45 +01:00
acpredef.h ACPICA: ACPI 5.1: Support for the _CCA predifined name. 2014-07-31 00:50:24 +02:00
acresrc.h ACPICA: Revert "Headers: Deploy #pragma pack (push) and (pop)." 2014-03-18 01:53:45 +01:00
acstruct.h ACPICA: Add auto-serialization support for ill-behaved control methods. 2014-03-26 16:25:59 +01:00
actables.h ACPICA: acpidump: Add ACPI 1.0 RSDP support. 2014-10-21 00:39:39 +02:00
acutils.h ACPICA: acpihelp: Add UUID support, restructure some existing files. 2014-07-31 00:50:23 +02:00
amlcode.h ACPICA: Revert "Headers: Deploy #pragma pack (push) and (pop)." 2014-03-18 01:53:45 +01:00
amlresrc.h ACPICA: iASL/Disassembler: Add support for hardware summary mapfiles. 2014-10-21 00:39:40 +02:00
dsargs.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
dscontrol.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
dsfield.c ACPICA: Update to GPIO region handler interface. 2014-09-24 22:53:46 +02:00
dsinit.c ACPICA: Add auto-serialization support for ill-behaved control methods. 2014-03-26 16:25:59 +01:00
dsmethod.c ACPICA: Ignore sync_level for methods that have been auto-serialized. 2014-03-26 16:25:59 +01:00
dsmthdat.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
dsobject.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
dsopcode.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
dsutils.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
dswexec.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
dswload2.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
dswload.c ACPICA: Add auto-serialization support for ill-behaved control methods. 2014-03-26 16:25:59 +01:00
dswscope.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
dswstate.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
evevent.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
evglock.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
evgpe.c ACPICA: Events: Cleanup GPE dispatcher type obtaining code 2015-02-05 15:31:38 +01:00
evgpeblk.c ACPICA: Events: Cleanup GPE dispatcher type obtaining code 2015-02-05 15:31:38 +01:00
evgpeinit.c ACPICA: Events: Cleanup GPE dispatcher type obtaining code 2015-02-05 15:31:38 +01:00
evgpeutil.c ACPICA: Events: Cleanup GPE dispatcher type obtaining code 2015-02-05 15:31:38 +01:00
evhandler.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
evmisc.c ACPICA: Disassembler: Add decoding of Notify() values. 2014-04-20 22:59:37 +02:00
evregion.c ACPICA: Update to GPIO region handler interface. 2014-09-24 22:53:46 +02:00
evrgnini.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
evsci.c ACPICA: Update comments for ACPICA name - no functional change. 2014-04-20 22:59:37 +02:00
evxface.c ACPICA: Events: Cleanup GPE dispatcher type obtaining code 2015-02-05 15:31:38 +01:00
evxfevnt.c ACPICA: Events: Reduce source code difference for the ACPI_EVENT_FLAG_HANDLE renaming. 2014-10-21 00:39:40 +02:00
evxfgpe.c ACPICA: Events: Cleanup GPE dispatcher type obtaining code 2015-02-05 15:31:38 +01:00
evxfregn.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exconfig.c ACPICA: Table Manager: Misc cleanup and renames, no functional change. 2014-04-20 22:59:39 +02:00
exconvrt.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
excreate.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exdebug.c ACPICA: Debug object: Add current value of Timer() to debug line prefix. 2014-07-31 00:50:23 +02:00
exdump.c ACPICA: Remove some extraneous printf arguments. 2014-07-31 00:50:23 +02:00
exfield.c ACPICA: Update to GPIO region handler interface. 2014-09-24 22:53:46 +02:00
exfldio.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exmisc.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exmutex.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exnames.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exoparg1.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exoparg2.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exoparg3.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exoparg6.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exprep.c ACPICA: Update to GPIO region handler interface. 2014-09-24 22:53:46 +02:00
exregion.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exresnte.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exresolv.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exresop.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exstore.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exstoren.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exstorob.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
exsystem.c ACPICA: Remove global option to serialize all control methods. 2014-03-26 16:25:59 +01:00
exutils.c ACPICA: Remove global option to serialize all control methods. 2014-03-26 16:25:59 +01:00
hwacpi.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
hwesleep.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
hwgpe.c ACPICA: Events: Cleanup GPE dispatcher type obtaining code 2015-02-05 15:31:38 +01:00
hwpci.c ACPICA: Update handling of PCI ID lists. 2014-05-07 00:55:00 +02:00
hwregs.c ACPICA: Hardware: back port of a recursive locking fix 2014-07-08 14:22:27 +02:00
hwsleep.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
hwtimer.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
hwvalid.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
hwxface.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
hwxfsleep.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
Makefile Merge branch 'acpica' 2014-08-05 22:50:12 +02:00
nsaccess.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nsalloc.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nsarguments.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nsconvert.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nsdump.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nsdumpdv.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nseval.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nsinit.c ACPICA: Add auto-serialization support for ill-behaved control methods. 2014-03-26 16:25:59 +01:00
nsload.c ACPICA: Add auto-serialization support for ill-behaved control methods. 2014-03-26 16:25:59 +01:00
nsnames.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nsobject.c ACPICA: Fix a regression for deletion of Alias() objects. 2014-07-09 17:55:49 +02:00
nsparse.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nspredef.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nsprepkg.c ACPICA: ACPI 5.1: Add support for runtime validation of _DSD package. 2014-09-02 01:48:00 +02:00
nsrepair2.c ACPICA: Comment update - no functional change. 2014-03-18 01:47:30 +01:00
nsrepair.c ACPICA: Comment update - no functional change. 2014-03-18 01:47:30 +01:00
nssearch.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nsutils.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nswalk.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nsxfeval.c Merge branch 'acpica' 2014-03-20 13:25:02 +01:00
nsxfname.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
nsxfobj.c ACPI: Introduce acpi_unload_parent_table() usages in Linux kernel 2015-01-26 16:08:49 +01:00
psargs.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
psloop.c ACPICA: Add auto-serialization support for ill-behaved control methods. 2014-03-26 16:25:59 +01:00
psobject.c ACPICA: Add auto-serialization support for ill-behaved control methods. 2014-03-26 16:25:59 +01:00
psopcode.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
psopinfo.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
psparse.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
psscope.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
pstree.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
psutils.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
pswalk.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
psxface.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
rsaddr.c ACPICA: Resources: Provide common part for struct acpi_resource_address structures. 2015-01-26 16:09:56 +01:00
rscalc.c ACPICA: Comment update - no functional change. 2014-03-18 01:47:30 +01:00
rscreate.c ACPICA: Update acpi_buffer_to_resource interface. 2014-05-07 00:55:00 +02:00
rsdump.c ACPICA: Update conditional compilation flags for resource dump functions. 2014-02-27 00:45:59 +01:00
rsdumpinfo.c ACPICA: Resources: Provide common part for struct acpi_resource_address structures. 2015-01-26 16:09:56 +01:00
rsinfo.c ACPICA: Update the conditions to enable the utility resource dump strings. 2014-02-11 00:30:25 +01:00
rsio.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
rsirq.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
rslist.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
rsmemory.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
rsmisc.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
rsserial.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
rsutils.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
rsxface.c ACPICA: Resources: Provide common part for struct acpi_resource_address structures. 2015-01-26 16:09:56 +01:00
tbdata.c ACPICA: Tables: Add mechanism to control early table checksum verification. 2014-06-01 00:18:52 +02:00
tbfadt.c ACPICA: Remove extraneous error message for large number of GPEs. 2014-05-07 00:55:02 +02:00
tbfind.c ACPICA: Tables: Clean up split INSTALLED/VALIDATED table state logics. 2014-04-20 22:59:38 +02:00
tbinstal.c ACPICA: Tables: Add mechanism to control early table checksum verification. 2014-06-01 00:18:52 +02:00
tbprint.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
tbutils.c ACPICA: Tables: Add mechanism to control early table checksum verification. 2014-06-01 00:18:52 +02:00
tbxface.c ACPI: Introduce acpi_unload_parent_table() usages in Linux kernel 2015-01-26 16:08:49 +01:00
tbxfload.c ACPICA: Table Manager: Misc cleanup and renames, no functional change. 2014-04-20 22:59:39 +02:00
tbxfroot.c ACPICA: acpidump: Add ACPI 1.0 RSDP support. 2014-10-21 00:39:39 +02:00
utaddress.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utalloc.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utbuffer.c ACPICA: acpidump: Reduce freopen() invocations to improve portability 2014-07-08 14:22:27 +02:00
utcache.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utcopy.c ACPICA: Utilities: Fix memory leak in acpi_ut_copy_iobject_to_iobject 2014-07-08 14:22:24 +02:00
utdebug.c ACPICA: Utilities: Introduce acpi_log_error() to improve portability 2014-07-08 14:22:26 +02:00
utdecode.c ACPICA: ACPI 5.1: New notify value for System Affinity Update. 2014-07-31 00:50:24 +02:00
utdelete.c ACPICA: Prevent infinite loops when traversing corrupted lists. 2014-03-18 01:52:18 +01:00
uterror.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
uteval.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utexcep.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utfileio.c ACPICA: Remove some extraneous printf arguments. 2014-07-31 00:50:23 +02:00
utglobal.c ACPICA: Utilities: Cleanup DEFINE_ACPI_GLOBALS by moving acpi_ut_init_global() from utglobal.c to utinit.c 2014-07-08 14:22:25 +02:00
uthex.c ACPICA: acpihelp: Add UUID support, restructure some existing files. 2014-07-31 00:50:23 +02:00
utids.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utinit.c ACPICA: OSL: Clean up acpi_os_printf()/acpi_os_vprintf() stubs 2014-07-08 14:22:25 +02:00
utlock.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utmath.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utmisc.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utmutex.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utobject.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utosi.c ACPICA: Add text: ACPICA policy for new _OSI strings. No functional change. 2014-03-18 01:52:17 +01:00
utownerid.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utpredef.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utprint.c ACPICA: Utilities: Fix local printf issue. 2014-07-31 00:50:23 +02:00
utresrc.c ACPICA: Disassembler: Emit correct string for 0 stop bits. 2014-11-28 00:00:53 +01:00
utstate.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utstring.c ACPICA: utstring: Check array index bound before use. 2014-04-20 22:59:37 +02:00
uttrack.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00
utuuid.c ACPICA: acpihelp: Add UUID support, restructure some existing files. 2014-07-31 00:50:23 +02:00
utxface.c ACPICA: iASL: Add support for to_PLD macro. 2014-11-28 00:00:52 +01:00
utxferror.c ACPICA: OSL: Add configurability for error message functions. 2014-05-07 00:55:01 +02:00
utxfinit.c ACPICA: acpiexec: Add option to specify an object initialization file. 2014-11-28 00:00:52 +01:00
utxfmutex.c ACPICA: Update ACPICA copyrights to 2014. 2014-02-11 00:30:25 +01:00