diff options
| author | Greg Kroah-Hartman <gregkh@google.com> | 2020-12-02 09:11:55 +0100 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@google.com> | 2020-12-02 09:11:55 +0100 |
| commit | 72ce9d84b53f69669f7085d298c98fc329a3447e (patch) | |
| tree | 7733f3613f1ee30fa953d351e7d04827782fa018 /drivers/input | |
| parent | b0dc0348f1c294d7406532594d740e40869986d4 (diff) | |
| parent | 0f586dbaf10f0cf74f663f0e26b398f1ce4e8727 (diff) | |
Merge 4.4.247 into android-4.4-p
Changes in 4.4.247
btrfs: tree-checker: Enhance chunk checker to validate chunk profile
btrfs: inode: Verify inode mode to avoid NULL pointer dereference
HID: cypress: Support Varmilo Keyboards' media hotkeys
Input: i8042 - allow insmod to succeed on devices without an i8042 controller
HID: hid-sensor-hub: Fix issue with devices with no report ID
x86/xen: don't unbind uninitialized lock_kicker_irq
proc: don't allow async path resolution of /proc/self components
dmaengine: pl330: _prep_dma_memcpy: Fix wrong burst size
scsi: libiscsi: Fix NOP race condition
scsi: target: iscsi: Fix cmd abort fabric stop race
scsi: ufs: Fix race between shutdown and runtime resume flow
bnxt_en: fix error return code in bnxt_init_board()
video: hyperv_fb: Fix the cache type when mapping the VRAM
bnxt_en: Release PCI regions when DMA mask setup fails during probe.
IB/mthca: fix return value of error branch in mthca_init_cq()
nfc: s3fwrn5: use signed integer for parsing GPIO numbers
efivarfs: revert "fix memory leak in efivarfs_create()"
perf probe: Fix to die_entrypc() returns error correctly
USB: core: Change %pK for __user pointers to %px
x86/speculation: Fix prctl() when spectre_v2_user={seccomp,prctl},ibpb
USB: core: add endpoint-blacklist quirk
USB: core: Fix regression in Hercules audio card
btrfs: fix lockdep splat when reading qgroup config on mount
Linux 4.4.247
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I8e8603322c7bf2a54d2758e3ab7a5424758a6548
Diffstat (limited to 'drivers/input')
| -rw-r--r-- | drivers/input/serio/i8042.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c index c84c685056b9..6b648339733f 100644 --- a/drivers/input/serio/i8042.c +++ b/drivers/input/serio/i8042.c @@ -125,6 +125,7 @@ module_param_named(unmask_kbd_data, i8042_unmask_kbd_data, bool, 0600); MODULE_PARM_DESC(unmask_kbd_data, "Unconditional enable (may reveal sensitive data) of normally sanitize-filtered kbd data traffic debug log [pre-condition: i8042.debug=1 enabled]"); #endif +static bool i8042_present; static bool i8042_bypass_aux_irq_test; static char i8042_kbd_firmware_id[128]; static char i8042_aux_firmware_id[128]; @@ -343,6 +344,9 @@ int i8042_command(unsigned char *param, int command) unsigned long flags; int retval; + if (!i8042_present) + return -1; + spin_lock_irqsave(&i8042_lock, flags); retval = __i8042_command(param, command); spin_unlock_irqrestore(&i8042_lock, flags); @@ -1597,12 +1601,15 @@ static int __init i8042_init(void) err = i8042_platform_init(); if (err) - return err; + return (err == -ENODEV) ? 0 : err; err = i8042_controller_check(); if (err) goto err_platform_exit; + /* Set this before creating the dev to allow i8042_command to work right away */ + i8042_present = true; + pdev = platform_create_bundle(&i8042_driver, i8042_probe, NULL, 0, NULL, 0); if (IS_ERR(pdev)) { err = PTR_ERR(pdev); @@ -1621,6 +1628,9 @@ static int __init i8042_init(void) static void __exit i8042_exit(void) { + if (!i8042_present) + return; + platform_device_unregister(i8042_platform_device); platform_driver_unregister(&i8042_driver); i8042_platform_exit(); |
