linux/drivers/misc
Hans de Goede dbd328dfd9 misc: lis3lv02d: Fix false-positive WARN on various HP models
commit 3641762c1c upstream.

Before this commit lis3lv02d_get_pwron_wait() had a WARN_ONCE() to catch
a potential divide by 0. WARN macros should only be used to catch internal
kernel bugs and that is not the case here. We have been receiving a lot of
bug reports about kernel backtraces caused by this WARN.

The div value being checked comes from the lis3->odrs[] array. Which
is sized to be a power-of-2 matching the number of bits in lis3->odr_mask.

The only lis3 model where this array is not entirely filled with non zero
values. IOW the only model where we can hit the div == 0 check is the
3dc ("8 bits 3DC sensor") model:

int lis3_3dc_rates[16] = {0, 1, 10, 25, 50, 100, 200, 400, 1600, 5000};

Note the 0 value at index 0, according to the datasheet an odr index of 0
means "Power-down mode". HP typically uses a lis3 accelerometer for HDD
fall protection. What I believe is happening here is that on newer
HP devices, which only contain a SDD, the BIOS is leaving the lis3 device
powered-down since it is not used for HDD fall protection.

Note that the lis3_3dc_rates array initializer only specifies 10 values,
which matches the datasheet. So it also contains 6 zero values at the end.

Replace the WARN with a normal check, which treats an odr index of 0
as power-down and uses a normal dev_err() to report the error in case
odr index point past the initialized part of the array.

Fixes: 1510dd5954 ("lis3lv02d: avoid divide by zero due to unchecked")
Cc: stable@vger.kernel.org
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=785814
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1817027
BugLink: https://bugs.centos.org/view.php?id=10720
Link: https://lore.kernel.org/r/20210217102501.31758-1-hdegoede@redhat.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-05-14 09:49:58 +02:00
..
altera-stapl
c2port
cardreader misc: rtsx: init of rts522a add OCP power off when no card is present 2021-03-04 11:38:32 +01:00
cb710
cxl cxl: Rework error message for incompatible slots 2020-08-25 01:31:32 +10:00
echo
eeprom misc: eeprom_93xx46: Add quirk to support Microchip 93LC46B eeprom 2021-03-11 14:17:27 +01:00
genwqe pci-v5.9-changes 2020-08-07 18:48:15 -07:00
habanalabs habanalabs: Call put_pid() when releasing control device 2021-03-30 14:31:50 +02:00
ibmasm
lis3lv02d misc: lis3lv02d: Fix false-positive WARN on various HP models 2021-05-14 09:49:58 +02:00
lkdtm lkdtm: don't move ctors to .rodata 2021-02-17 11:02:24 +01:00
mei mei: me: add Alder Lake P device id. 2021-05-02 11:06:09 +02:00
ocxl powerpc updates for 5.10 2020-10-16 12:21:15 -07:00
sgi-gru x86/platform/uv: Update Copyrights to conform to HPE standards 2020-10-07 09:10:07 +02:00
sgi-xp x86/platform/uv: Update Copyrights to conform to HPE standards 2020-10-07 09:10:07 +02:00
ti-st
uacce Char/Misc driver patches for 5.10-rc1 2020-10-15 10:01:51 -07:00
vmw_vmci drivers/misc/vmw_vmci: restrict too big queue size in qp_host_alloc_queue 2021-03-04 11:38:32 +01:00
ad525x_dpot-i2c.c
ad525x_dpot-spi.c
ad525x_dpot.c
ad525x_dpot.h
apds990x.c
apds9802als.c
atmel_tclib.c
atmel-ssc.c
bh1770glc.c
cs5535-mfgpt.c
ds1682.c
dummy-irq.c
enclosure.c
fastrpc.c misc: fastrpc: restrict user apps from sending kernel RPC messages 2021-03-17 17:06:31 +01:00
hisi_hikey_usb.c misc: hisi_hikey_usb: delete a stray tab 2020-09-22 18:54:00 +02:00
hmc6352.c
hpilo.c
hpilo.h
ibmvmc.c mm, treewide: rename kzfree() to kfree_sensitive() 2020-08-07 11:33:22 -07:00
ibmvmc.h
ics932s401.c
isl29003.c
isl29020.c
Kconfig misc: mic: remove the MIC drivers 2020-10-28 19:12:03 +01:00
kgdbts.c kgdbts: switch to kernel_clone() 2020-08-20 13:12:59 +02:00
lattice-ecp3-config.c
Makefile misc: mic: remove the MIC drivers 2020-10-28 19:12:03 +01:00
pch_phub.c
pci_endpoint_test.c misc: pci_endpoint_test: fix return value of error branch 2020-12-30 11:53:45 +01:00
phantom.c
pti.c
pvpanic.c misc/pvpanic: Export module FDT device table 2021-03-17 17:06:31 +01:00
qcom-coincell.c
sram-exec.c
sram.c
sram.h
tifm_7xx1.c
tifm_core.c
tsl2550.c
vmw_balloon.c
xilinx_sdfec.c