linux/drivers/watchdog
Christian Lamparter f06f35c66f watchdog: qcom: fix kernel panic due to external abort on non-linefetch
This patch fixes a off-by-one in the "watchdog: qcom: add option for
standalone watchdog not in timer block" patch that causes the
following panic on boot:

> Unhandled fault: external abort on non-linefetch (0x1008) at 0xc8874002
> pgd = c0204000
> [c8874002] *pgd=87806811, *pte=0b017653, *ppte=0b017453
> Internal error: : 1008 [#1] SMP ARM
> CPU: 2 PID: 1 Comm: swapper/0 Not tainted 4.8.6 #0
> Hardware name: Generic DT based system
> PC is at 0xc02222f4
> LR is at 0x1
> pc : [<c02222f4>]    lr : [<00000001>]    psr: 00000113
> sp : c782fc98  ip : 00000003  fp : 00000000
> r10: 00000004  r9 : c782e000  r8 : c04ab98c
> r7 : 00000001  r6 : c8874002  r5 : c782fe00  r4 : 00000002
> r3 : 00000000  r2 : c782fe00  r1 : 00100000  r0 : c8874002
> Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
> Control: 10c5387d  Table: 8020406a  DAC: 00000051
> Process swapper/0 (pid: 1, stack limit = 0xc782e210)
> Stack: (0xc782fc98 to 0xc7830000)
> [...]

The WDT_STS (status) needs to be translated via wdt_addr as well.

fixes: f0d9d0f4b4 ("watchdog: qcom: add option for standalone watchdog not in timer block")
Cc: stable@vger.kernel.org # 4.8
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2016-12-16 06:53:54 -08:00
..
acquirewdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
advantechwdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
alim1535_wdt.c watchdog: remove DEFINE_PCI_DEVICE_TABLE macro 2014-01-28 19:07:07 +01:00
alim7101_wdt.c watchdog: alim7101: register restart handler with kernel restart handler 2014-09-26 00:00:32 -07:00
ar7_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
asm9260_wdt.c watchdog-asm9260: Delete owner assignment 2016-09-23 22:35:45 +02:00
aspeed_wdt.c watchdog: Add Aspeed watchdog driver 2016-07-17 20:59:10 +02:00
at32ap700x_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
at91rm9200_wdt.c Merge git://www.linux-watchdog.org/linux-watchdog 2015-09-11 15:12:59 -07:00
at91sam9_wdt.c watchdog: at91sam9: get and use slow clock 2015-09-09 21:38:52 +02:00
at91sam9_wdt.h watchdog: add a driver to support SAMA5D4 watchdog timer 2015-09-09 21:38:29 +02:00
ath79_wdt.c mips: separate extable.h, switch module.h to it 2016-10-05 18:36:18 -04:00
atlas7_wdt.c watchdog: atlas7_wdt: test clock rate to avoid division by 0 2016-03-16 21:09:08 +01:00
bcm47xx_wdt.c watchdog: Add 'action' and 'data' parameters to restart handler callback 2016-03-01 15:36:35 +01:00
bcm63xx_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
bcm2835_wdt.c watchdog: bcm2835_wdt: remove redundant ->set_timeout callback 2016-07-17 21:03:50 +02:00
bcm7038_wdt.c watchdog: bcm7038_wdt: fix module autoload 2016-12-16 06:53:53 -08:00
bcm_kona_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
bfin_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
booke_wdt.c watchdog: booke_wdt: Use infrastructure to check timeout limits 2015-09-09 21:34:34 +02:00
cadence_wdt.c watchdog: constify watchdog_ops structures 2016-09-24 08:50:10 +02:00
coh901327_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
cpu5wdt.c watchdog: delete non-required instances of include <linux/init.h> 2014-03-31 13:22:45 +02:00
cpwd.c watchdog: cpwd: Use setup_timer() 2016-05-14 18:25:49 +02:00
da9052_wdt.c watchdog: da9052_wdt: Drop reference counting 2015-12-29 20:36:03 +01:00
da9055_wdt.c watchdog: da9055_wdt: Drop reference counting 2015-12-29 20:36:04 +01:00
da9062_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
da9063_wdt.c watchdog: da9063_wdt: don't trigger watchdog too fast 2016-07-17 21:02:42 +02:00
davinci_wdt.c watchdog: davinci: add support for deferred probing 2016-12-16 06:53:53 -08:00
diag288_wdt.c watchdog: diag288: Stop re-using watchdog core internal flags 2015-12-29 20:36:02 +01:00
digicolor_wdt.c watchdog: Add 'action' and 'data' parameters to restart handler callback 2016-03-01 15:36:35 +01:00
dw_wdt.c watchdog: dw_wdt: Read clock rate only once and validate it 2016-09-23 08:40:55 +02:00
ebc-c384_wdt.c watchdog: ebc-c384_wdt: Utilize the ISA bus driver 2016-05-02 09:32:04 -07:00
ep93xx_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
eurotechwdt.c
f71808e_wdt.c watchdog: f71808e_wdt: Add F81866 support 2016-07-17 21:00:55 +02:00
gef_wdt.c watchdog: Fix module autoload for OF platform driver 2015-09-28 10:56:01 +02:00
geodewdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
gpio_wdt.c watchdog: gpio_wdt: Fix missing platform_set_drvdata() in gpio_wdt_probe() 2016-07-27 10:47:43 +02:00
hpwdt.c watchdog: hpwdt: add support for iLO5 2016-10-03 08:37:41 +02:00
i6300esb.c watchdog: delete non-required instances of include <linux/init.h> 2014-03-31 13:22:45 +02:00
ib700wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
ibmasr.c watchdog: fix checkpatch warnings and error 2014-03-31 13:31:06 +02:00
ie6xx_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
imgpdc_wdt.c watchdog: Add 'action' and 'data' parameters to restart handler callback 2016-03-01 15:36:35 +01:00
imx2_wdt.c watchdog: imx2_wdt: add pretimeout function support 2016-10-08 10:27:30 +02:00
indydog.c watchdog: indydog: Simplify indydog_{start,stop} 2014-03-31 13:26:31 +02:00
intel_scu_watchdog.c watchdog: intel_scu_watchdog: Remove unused variable 2014-03-31 13:26:56 +02:00
intel_scu_watchdog.h
intel-mid_wdt.c watchdog: intel-mid: add Magic Closure flag 2015-10-28 22:58:32 +01:00
iop_wdt.c
it87_wdt.c watchdog: it87_wdt: add IT8783 ID 2015-02-17 21:32:08 +01:00
it8712f_wdt.c
iTCO_vendor_support.c
iTCO_vendor.h
iTCO_wdt.c watchdog: iTCO_wdt: constify iTCO_wdt_pm structure 2016-09-24 08:49:51 +02:00
ixp4xx_wdt.c
jz4740_wdt.c watchdog: remove error message when unable to allocate watchdog device 2016-05-14 16:24:43 +02:00
Kconfig watchdog: Standardize leading tabs and spaces in Kconfig file 2016-12-16 06:53:53 -08:00
kempld_wdt.c watchdog: constify watchdog_ops structures 2016-09-24 08:50:10 +02:00
ks8695_wdt.c char: make misc_deregister a void function 2015-08-05 10:35:49 -07:00
lantiq_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
lpc18xx_wdt.c watchdog: Add 'action' and 'data' parameters to restart handler callback 2016-03-01 15:36:35 +01:00
m54xx_wdt.c
machzwd.c
Makefile Merge git://www.linux-watchdog.org/linux-watchdog 2016-10-13 16:44:20 -07:00
max63xx_wdt.c watchdog: max63xx: make module's license marker match the header 2016-01-31 16:51:56 +01:00
max77620_wdt.c watchdog: max77620_wdt: fix module autoload 2016-12-16 06:53:53 -08:00
mei_wdt.c watchdog: mei_wdt: re-register device on event 2016-02-07 13:00:52 -08:00
mena21_wdt.c watchdog: mena21: Do not use device pointer from struct watchdog_device 2015-12-28 23:04:06 +01:00
menf21bmc_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
meson_gxbb_wdt.c watchdog: meson: Remove unneeded platform MODULE_ALIAS 2016-12-16 06:53:53 -08:00
meson_wdt.c watchdog: Add 'action' and 'data' parameters to restart handler callback 2016-03-01 15:36:35 +01:00
mixcomwd.c
moxart_wdt.c watchdog: Add 'action' and 'data' parameters to restart handler callback 2016-03-01 15:36:35 +01:00
mpc8xxx_wdt.c watchdog: mpc8xxx: use better error code when watchdog cannot be enabled 2015-09-09 21:37:51 +02:00
mt7621_wdt.c watchdog: mt7621_wdt: Remove assignment of dev pointer 2016-09-24 08:59:31 +02:00
mtk_wdt.c watchdog: Add 'action' and 'data' parameters to restart handler callback 2016-03-01 15:36:35 +01:00
mtx-1_wdt.c watchdog: delete non-required instances of include <linux/init.h> 2014-03-31 13:22:45 +02:00
mv64x60_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
ni903x_wdt.c watchdog: ni903x_wdt: Add NI 903x/913x watchdog driver 2016-03-01 16:25:39 +01:00
nuc900_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
nv_tco.c watchdog: add support for MCP78S chipset in nv_tco 2016-07-17 21:04:13 +02:00
nv_tco.h
octeon-wdt-main.c watchdog: octeon: Handle the FROZEN hot plug notifier actions. 2016-05-14 09:22:21 +02:00
octeon-wdt-nmi.S
of_xilinx_wdt.c watchdog: xilinx: Add clock support 2016-09-23 22:04:09 +02:00
omap_wdt.c watchdog: omap: don't disable the timer when it should be enabled early 2015-12-27 21:09:40 +01:00
omap_wdt.h watchdog: omap_wdt: implement get_timeleft 2015-06-22 15:54:35 +02:00
orion_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
pc87413_wdt.c watchdog: fix checkpatch warnings and error 2014-03-31 13:31:06 +02:00
pcwd_pci.c watchdog: remove DEFINE_PCI_DEVICE_TABLE macro 2014-01-28 19:07:07 +01:00
pcwd_usb.c watchdog: pcwd_usb: don't print error when allocating urb fails 2016-09-23 08:43:06 +02:00
pcwd.c watchdog: pcwd: Utilize the module_isa_driver macro 2016-07-17 20:59:23 +02:00
pic32-dmt.c watchdog: pic32-dmt: Remove .owner field for driver 2016-07-25 12:02:32 +02:00
pic32-wdt.c watchdog: pic32-wdt: Fix return value check in pic32_wdt_drv_probe() 2016-07-25 12:02:43 +02:00
pika_wdt.c
pnx833x_wdt.c
pnx4008_wdt.c watchdog: pnx4008: restart: support "cmd" from userspace 2016-03-16 21:09:42 +01:00
pretimeout_noop.c watchdog: pretimeout: add noop pretimeout governor 2016-10-08 10:27:13 +02:00
pretimeout_panic.c watchdog: pretimeout: add panic pretimeout governor 2016-10-08 10:27:17 +02:00
qcom-wdt.c watchdog: qcom: fix kernel panic due to external abort on non-linefetch 2016-12-16 06:53:54 -08:00
rc32434_wdt.c watchdog: rc32434_wdt: fix ioctl error handling 2016-03-01 15:29:42 +01:00
rdc321x_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
renesas_wdt.c watchdog: renesas-wdt: add driver 2016-05-14 18:15:40 +02:00
retu_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
riowd.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
rn5t618_wdt.c watchdog: constify watchdog_ops structures 2016-09-24 08:50:10 +02:00
rt2880_wdt.c watchdog: rt2880_wdt: Remove assignment of dev pointer 2016-09-24 08:59:23 +02:00
s3c2410_wdt.c watchdog: s3c2410_wdt: Add max and min timeout values 2016-03-16 21:08:09 +01:00
sa1100_wdt.c
sama5d4_wdt.c watchdog: add a driver to support SAMA5D4 watchdog timer 2015-09-09 21:38:29 +02:00
sb_wdog.c
sbc60xxwdt.c
sbc7240_wdt.c
sbc8360.c
sbc_epx_c3.c
sbc_fitpc2_wdt.c
sbsa_gwdt.c watchdog: sbsa: Drop status function 2016-07-19 10:09:12 +02:00
sc520_wdt.c watchdog: sc520_wdt: Remove unused variable 2014-03-31 13:27:34 +02:00
sc1200wdt.c
sch311x_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
scx200_wdt.c
shwdt.c watchdog: shwdt: Use setup_timer() 2016-05-14 18:25:56 +02:00
sirfsoc_wdt.c watchdog: sirf: fix __iomem * warnings 2016-07-17 21:00:44 +02:00
smsc37b787_wdt.c
softdog.c watchdog: softdog: implement pretimeout support 2016-10-08 10:27:27 +02:00
sp805_wdt.c watchdog: sp805: ping fails to abort wdt reset 2016-01-31 16:52:08 +01:00
sp5100_tco.c watchdog: sp5100_tco: properly check for new register layouts 2016-05-14 16:16:04 +02:00
sp5100_tco.h
st_lpc_wdt.c watchdog: st_wdt: Remove support for obsolete platforms 2016-09-24 08:59:49 +02:00
stmp3xxx_rtc_wdt.c watchdog: stmp3xxx: Remove unused variables 2016-01-11 21:51:28 +01:00
sun4v_wdt.c Add sun4v_wdt watchdog driver 2016-01-31 11:06:24 -08:00
sunxi_wdt.c watchdog: Add 'action' and 'data' parameters to restart handler callback 2016-03-01 15:36:35 +01:00
tangox_wdt.c watchdog: tangox: Set max_hw_heartbeat_ms instead of max_timeout 2016-07-18 12:10:21 +02:00
tegra_wdt.c watchdog: tegra: constify watchdog_ops structures 2016-09-24 08:50:03 +02:00
ts72xx_wdt.c char: make misc_deregister a void function 2015-08-05 10:35:49 -07:00
ts4800_wdt.c watchdog: ts4800: add driver for TS-4800 watchdog 2015-12-28 22:29:35 +01:00
twl4030_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
txx9wdt.c watchdog: txx9wdt: Add missing clock (un)prepare calls for CCF 2016-09-23 22:36:32 +02:00
ux500_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
via_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
w83627hf_wdt.c watchdog: constify watchdog_ops structures 2016-09-24 08:50:10 +02:00
w83877f_wdt.c
w83977f_wdt.c watchdog: w83977f_wdt: underflow in wdt_set_timeout() 2015-11-23 08:59:30 +01:00
wafer5823wdt.c
watchdog_core.c watchdog: core: Fix devres_alloc() allocation size 2016-09-23 08:37:14 +02:00
watchdog_core.h watchdog: Create watchdog device in watchdog_dev.c 2015-12-29 20:36:01 +01:00
watchdog_dev.c watchdog: pretimeout: add pretimeout_available_governors attribute 2016-10-08 10:27:24 +02:00
watchdog_pretimeout.c watchdog: pretimeout: add pretimeout_available_governors attribute 2016-10-08 10:27:24 +02:00
watchdog_pretimeout.h watchdog: pretimeout: add pretimeout_available_governors attribute 2016-10-08 10:27:24 +02:00
wd501p.h
wdat_wdt.c watchdog: wdat_wdt: Ping the watchdog on resume 2016-10-21 01:28:33 +02:00
wdrtas.c
wdt285.c watchdog: wdt285: Fix variable type 2014-03-31 13:28:20 +02:00
wdt977.c
wdt_pci.c watchdog: delete non-required instances of include <linux/init.h> 2014-03-31 13:22:45 +02:00
wdt.c
wm831x_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
wm8350_wdt.c Watchdog: Fix parent of watchdog_devices 2015-09-09 21:39:22 +02:00
xen_wdt.c watchdog: drop owner assignment from platform_drivers 2014-10-20 16:21:56 +02:00
ziirave_wdt.c watchdog: ziirave_wdt: Add support to upload the firmware. 2016-09-23 22:34:24 +02:00