linux/drivers
Ranjan Kumar df2b818fa0 Input: elan_i2c - prevent division by zero and arithmetic underflow
The Elan I2C touchpad driver queries the device for its physical
dimensions and trace counts to calculate the device resolution and width.
However, if the device firmware or device tree provides invalid zero
values for x_traces or y_traces, it results in a fatal division-by-zero
exception leading to a kernel panic during device probe.

Add checks to ensure these parameters are non-zero before performing
the division. If invalid trace values are detected, fall back to a safe
default of 1.

Additionally, prevent an arithmetic underflow in the touch reporting
logic. Previously, if the calculated or fallback width was smaller than
ETP_FWIDTH_REDUCE (90), the subtraction would underflow, resulting in a
massive unsigned integer being reported to userspace. Clamp the adjusted
width to a minimum of 0 to safely handle small physical dimensions and
fallback scenarios.

Completing the probe with safe fallback values ensures the sysfs nodes
are created, keeping the firmware update path intact so a recovery
firmware can be flashed to the device.

Fixes: 6696777c65 ("Input: add driver for Elan I2C/SMbus touchpad")
Fixes: e3a9a12906 ("Input: elan_i2c - do not query the info if they are provided")
Signed-off-by: Ranjan Kumar <kumarranja@chromium.org>
Link: https://patch.msgid.link/20260612060339.3829666-1-kumarranja@chromium.org
Cc: stable@vger.kernel.org
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-06-22 22:33:02 -07:00
..
accel accel/ivpu: prevent uninitialized data bug in debugfs 2026-05-26 08:04:07 +02:00
accessibility
acpi ACPI: button: Add missing device class clearing on probe failures 2026-05-25 09:52:34 +02:00
amba
android rust_binder: Avoid holding lock when dropping delivered_death 2026-05-22 11:55:48 +02:00
ata ata: libata-scsi: do not needlessly defer commands when using PMP with FBS 2026-05-18 12:26:51 +02:00
atm net: remove unused ATM protocols and legacy ATM device drivers 2026-04-23 12:21:14 -07:00
auxdisplay auxdisplay: line-display: fix NULL dereference in linedisp_release 2026-03-27 09:54:31 +01:00
base regmap: reject volatile update_bits() in cache-only mode 2026-05-28 15:15:46 +01:00
bcma
block 13 hotfixes. 9 are for MM. 9 are cc:stable and the remaining 4 address 2026-05-26 08:23:19 -07:00
bluetooth Bluetooth: hci_qca: Use 100 ms SSR delay for rampatch and NVM loading 2026-05-27 16:44:02 -04:00
bus Char/Misc/IIO/and others driver updates for 7.1-rc1 2026-04-24 13:23:50 -07:00
cache
cdrom cdrom, scsi: sr: propagate read-only status to block layer via set_disk_ro() 2026-04-27 15:52:51 -06:00
cdx
char IPMI: Fix a number of issues that came up recently 2026-05-04 12:48:30 -07:00
clk clk: rk808: fix OF node reference imbalance 2026-04-28 20:55:53 -07:00
clocksource clocksource: Rewrite watchdog code completely 2026-03-20 13:36:32 +01:00
comedi comedi: comedi_test: fix check for valid scan_begin_src in waveform_ai_cmdtest() 2026-05-21 10:34:04 +02:00
connector
counter counter: Fix refcount leak in counter_alloc() error path 2026-05-03 13:48:39 +09:00
cpufreq cpufreq/amd-pstate-ut: Disable dynamic_epp after the mode switch 2026-05-26 12:39:28 +02:00
cpuidle powerpc updates for 7.1 2026-04-14 17:10:15 -07:00
crypto crypto: ccp - copy IV using skcipher ivsize 2026-04-16 17:37:03 +08:00
cxl CXL changes for v7.1 2026-04-17 15:52:58 -07:00
dax dax changes for 7.1 2026-04-21 14:12:01 -07:00
dca
devfreq PM / devfreq: tegra30-devfreq: add support for Tegra114 2026-04-04 03:15:39 +09:00
dibs
dio
dma dmaengine updates for v7.1 2026-04-17 10:29:01 -07:00
dma-buf dma-buf: fix UAF in dma_buf_fd() tracepoint 2026-05-28 20:05:43 +05:30
dpll dpll: zl3073x: make frequency monitor a per-device attribute 2026-05-28 14:05:29 +02:00
edac EDAC/versalnet: Fix device name memory leak 2026-05-05 14:49:48 +02:00
eisa
extcon extcon: usbc-tusb320: Make typec-power-opmode optional 2026-03-20 11:20:43 +09:00
firewire
firmware LoongArch fixes for v7.1-rc5 2026-05-23 09:13:00 -07:00
fpga fpga: m10bmc-sec: switch show_canceled_csk() to using sysfs_emit() 2026-03-25 14:57:26 +08:00
fsi
fwctl fwctl: pds: Validate RPC input size before parsing 2026-05-19 10:44:32 -03:00
gnss
gpib Revert "gpib: cb7210: Fix region leak when request_irq fails" 2026-05-30 12:25:36 +02:00
gpio gpio: rockchip: teardown bugs and resource leaks 2026-05-28 15:23:40 +02:00
gpu drm/gem: fix race between change_handle and handle_delete 2026-05-30 07:01:39 +10:00
greybus greybus: gb-beagleplay: bound bootloader receive buffering 2026-04-02 15:55:09 +02:00
hid hid-for-linus-2026052801 2026-05-29 08:51:46 -07:00
hsi HSI: omap_ssi_port: remove depends on ARM 2026-04-02 22:33:44 +02:00
hte hte: tegra194: Add Tegra264 GTE support 2026-04-12 23:29:31 -07:00
hv drm fixes for 7.1-rc1 2026-04-24 11:44:52 -07:00
hwmon hwmon: (pmbus/adm1266) serialize sequencer_state debugfs read with pmbus_lock 2026-05-21 07:00:39 -07:00
hwspinlock hwspinlock: u8500: delete driver 2026-04-06 09:43:18 -05:00
hwtracing Char/Misc/IIO/and others driver updates for 7.1-rc1 2026-04-24 13:23:50 -07:00
i2c i2c: virtio: mark device ready before registering the adapter 2026-05-30 15:56:07 +02:00
i3c i3c: mipi-i3c-hci: fix IBI payload length calculation for final status 2026-04-12 22:06:02 +02:00
idle
iio iio: adc: viperboard: Fix error handling in vprbrd_iio_read_raw 2026-05-15 12:05:35 +01:00
infiniband RDMA v7.1 first rc window 2026-05-23 07:17:27 -07:00
input Input: elan_i2c - prevent division by zero and arithmetic underflow 2026-06-22 22:33:02 -07:00
interconnect This pull request contains the interconnect changes for the 7.1-rc1 2026-04-07 10:06:50 +02:00
iommu iommu, debugobjects: avoid gcc-16.1 section mismatch warnings 2026-05-28 09:07:12 +02:00
ipack
irqchip irqchip/renesas-rzt2h: Use pm_runtime_put_sync() in probe error path 2026-05-21 20:11:29 +02:00
leds leds: class: Make led_remove_lookup() NULL-aware 2026-04-09 13:49:19 +01:00
macintosh
mailbox mailbox: mailbox-test: make data_ready a per-instance variable 2026-04-18 13:10:14 -05:00
mcb
md - fix crashes in dm-vdo if GFP_NOWAIT allocation fails 2026-05-25 12:45:40 -07:00
media media: rc: igorplugusb: fix control request setup packet 2026-05-30 18:21:47 +02:00
memory dma-mapping updates for Linux 7.0: 2026-04-17 11:12:42 -07:00
memstick
message
mfd MFD for v7.1 2026-04-20 11:31:01 -07:00
misc misc: rp1: Send IACK on IRQ activate to fix kdump/kexec 2026-05-22 12:19:02 +02:00
mmc mmc: sdhci-msm: Fix the wrapped key handling 2026-04-10 10:29:58 +02:00
most most: usb: Use kzalloc_objs for endpoint address array 2026-04-02 17:06:09 +02:00
mtd mtd: spinand: winbond: Fix ODTR write VCR on W35NxxJW 2026-04-27 15:08:04 +02:00
mux Char/Misc/IIO/and others driver updates for 7.1-rc1 2026-04-24 13:23:50 -07:00
net wireguard: send: append trailer after expanding head 2026-05-29 13:01:27 -07:00
nfc nfc: nxp-nci: i2c: use rising-edge IRQ on ACPI systems 2026-05-18 18:30:36 +02:00
ntb pci-v7.1-changes 2026-04-15 14:41:21 -07:00
nubus
nvdimm vfs-7.1-rc1.integrity 2026-04-13 10:40:26 -07:00
nvme Including fixes from netfilter. 2026-05-28 13:13:48 -07:00
nvmem Linux 7.0-rc7 2026-04-06 09:04:53 +02:00
of memblock: updates for 7.0-rc1 2026-04-18 11:29:14 -07:00
opp
parisc parisc: Fix IRQ leak in LASI driver 2026-05-04 11:48:12 +02:00
parport parport: Fix race between port and client registration 2026-05-22 12:19:02 +02:00
pci pci-v7.1-fixes-2 2026-05-21 15:02:12 -07:00
pcmcia PCMCIA fixes and cleanups for v7.1 2026-04-23 11:22:16 -07:00
peci
perf arm64 updates for 7.1: 2026-04-14 16:48:56 -07:00
phy phy: qcom: qmp-usbc: Fix out-of-bounds array access in dp swing config 2026-05-19 15:42:11 +05:30
pinctrl pinctrl-amd: enable IRQ for WACF2200 touchscreen on Lenovo Yoga 7 14AGP11 2026-05-13 09:34:55 +02:00
platform platform-drivers-x86 for v7.1-4 2026-05-22 15:45:26 -07:00
pmdomain pmdomain: mediatek: fix use-after-free in scpsys_get_bus_protection_legacy() 2026-04-27 14:53:30 +02:00
pnp
power USB / Thunderbolt changes for 7.1-rc1 2026-04-19 08:47:40 -07:00
powercap powercap: intel_rapl: Consolidate PL4 and PMU support flags into rapl_defaults 2026-04-01 16:03:05 +02:00
pps pps: change pps_class to a const struct 2026-04-02 16:33:00 +02:00
ps3
ptp ptp: vmw: Convert to a platform driver 2026-03-17 19:06:19 -07:00
pwm pwm: Two driver fixes 2026-04-23 08:37:07 -07:00
rapidio
ras
regulator regulator: tps65219: fix irq_data.rdev not being assigned 2026-05-18 10:52:24 +01:00
remoteproc rpmsg updates for v7.1 2026-04-17 14:18:55 -07:00
resctrl arm_mpam: Check whether the config array is allocated before destroying it 2026-05-14 09:52:05 +01:00
reset reset: eyeq: drop device_set_of_node_from_dev() done by parent 2026-04-28 19:03:50 -07:00
rpmsg rpmsg: Constify buffer passed to send API 2026-04-06 09:37:51 -05:00
rtc RTC for 7.1 2026-04-25 16:39:03 -07:00
s390 s390/cio: Restore GFP_DMA for CHSC allocation 2026-05-11 16:27:25 +02:00
sbus
scsi SCSI fixes on 20260531 2026-05-31 08:45:08 -07:00
sh
siox
slimbus driver core: platform: use generic driver_override infrastructure 2026-03-17 20:30:57 +01:00
soc rpmsg updates for v7.1 2026-04-17 14:18:55 -07:00
soundwire soundwire updates for 7.1 2026-04-17 10:16:53 -07:00
spi spi: spi-mem: avoid mutating op template in spi_mem_supports_op() 2026-05-28 13:49:00 +01:00
spmi
ssb
staging hid-for-linus-2026051401 2026-05-14 14:30:01 -07:00
target scsi: target: iscsi: Validate CHAP_R length before base64 decode 2026-05-22 23:06:00 -04:00
tc
tee soc: drivers for 7.1 2026-04-16 20:34:34 -07:00
thermal bitmap updates for v7.1 2026-04-14 08:55:18 -07:00
thunderbolt thunderbolt: property: Cap recursion depth in __tb_property_parse_dir() 2026-05-11 11:32:03 +02:00
tty serial: dz: Enable modular build 2026-05-22 11:52:34 +02:00
ufs scsi: ufs: core: Fix bRefClkFreq write failure in HS-LSS mode 2026-04-21 20:58:06 -04:00
uio uio: uio_pci_generic_sva: fix double free of devm_kzalloc() memory 2026-05-22 12:19:02 +02:00
usb USB serial fixes for 7.1-rc5 2026-05-23 13:21:56 +02:00
vdpa vdpa: use generic driver_override infrastructure 2026-04-04 00:47:50 +02:00
vfio vfio/pci: Check BAR resources before exporting a DMABUF 2026-05-14 11:39:03 -06:00
vhost Including fixes from Netfilter. 2026-04-23 16:50:42 -07:00
video fbdev: udlfb: add vm_ops to dlfb_ops_mmap to prevent use-after-free 2026-05-04 10:35:55 +02:00
virt virt: sev-guest: Explicitly leak pages in unknown state 2026-05-20 18:03:17 -07:00
virtio mm.git review status for linus..mm-stable 2026-04-15 12:59:16 -07:00
w1 w1: ds2490: drop redundant device reference 2026-04-03 10:55:12 +02:00
watchdog watchdog: ni903x_wdt: Convert to a platform driver 2026-04-07 21:06:59 +02:00
xen ACPI: PAD: xen: Check ACPI_COMPANION() against NULL 2026-05-12 19:01:37 +02:00
zorro
Kconfig net: remove ISDN subsystem and Bluetooth CMTP 2026-04-23 10:24:02 -07:00
Makefile net: remove ISDN subsystem and Bluetooth CMTP 2026-04-23 10:24:02 -07:00