OSDN Git Service
(root)
/
android-x86
/
kernel.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
11924ba
)
w1: omap-hdq: fix missing bus unregister at removal
author
Andreas Kemnade
<andreas@kemnade.info>
Sat, 22 Sep 2018 19:20:54 +0000
(21:20 +0200)
committer
Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
Tue, 2 Oct 2018 22:36:10 +0000
(15:36 -0700)
The bus master was not removed after unloading the module
or unbinding the driver. That lead to oopses like this
[ 127.842987] Unable to handle kernel paging request at virtual address
bf01d04c
[ 127.850646] pgd =
70e3cd9a
[ 127.853698] [
bf01d04c
] *pgd=
8f908811
, *pte=
00000000
, *ppte=
00000000
[ 127.860412] Internal error: Oops:
80000007
[#1] PREEMPT SMP ARM
[ 127.866668] Modules linked in: bq27xxx_battery overlay [last unloaded: omap_hdq]
[ 127.874542] CPU: 0 PID: 1022 Comm: w1_bus_master1 Not tainted
4.19.0-rc4-00001-g2d51da718324
#12
[ 127.883819] Hardware name: Generic OMAP36xx (Flattened Device Tree)
[ 127.890441] PC is at 0xbf01d04c
[ 127.893798] LR is at w1_search_process_cb+0x4c/0xfc
[ 127.898956] pc : [<
bf01d04c
>] lr : [<
c05f9580
>] psr:
a0070013
[ 127.905609] sp :
cf885f48
ip :
bf01d04c
fp :
ddf1e11c
[ 127.911132] r10:
cf8fe040
r9 :
c05f8d00
r8 :
cf8fe040
[ 127.916656] r7 :
000000f0
r6 :
cf8fe02c
r5 :
cf8fe000
r4 :
cf8fe01c
[ 127.923553] r3 :
c05f8d00
r2 :
000000f0
r1 :
cf8fe000
r0 :
dde1ef10
[ 127.930450] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
[ 127.938018] Control:
10c5387d
Table:
8f8f0019
DAC:
00000051
[ 127.944091] Process w1_bus_master1 (pid: 1022, stack limit = 0x9135699f)
[ 127.951171] Stack: (0xcf885f48 to 0xcf886000)
[ 127.955810] 5f40:
cf8fe000
00000000
cf884000
cf8fe090
000003e8
c05f8d00
[ 127.964477] 5f60:
dde5fc34
c05f9700
ddf1e100
ddf1e540
cf884000
cf8fe000
c05f9694
00000000
[ 127.973114] 5f80:
dde5fc34
c01499a4
00000000
ddf1e540
c0149874
00000000
00000000
00000000
[ 127.981781] 5fa0:
00000000
00000000
00000000
c01010e8
00000000
00000000
00000000
00000000
[ 127.990447] 5fc0:
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
[ 127.999114] 5fe0:
00000000
00000000
00000000
00000000
00000013
00000000
00000000
00000000
[ 128.007781] [<
c05f9580
>] (w1_search_process_cb) from [<
c05f9700
>] (w1_process+0x6c/0x118)
[ 128.016479] [<
c05f9700
>] (w1_process) from [<
c01499a4
>] (kthread+0x130/0x148)
[ 128.024047] [<
c01499a4
>] (kthread) from [<
c01010e8
>] (ret_from_fork+0x14/0x2c)
[ 128.031677] Exception stack(0xcf885fb0 to 0xcf885ff8)
[ 128.037017] 5fa0:
00000000
00000000
00000000
00000000
[ 128.045684] 5fc0:
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
[ 128.054351] 5fe0:
00000000
00000000
00000000
00000000
00000013
00000000
[ 128.061340] Code: bad PC value
[ 128.064697] ---[ end trace
af066e33c0e14119
]---
Cc: <stable@vger.kernel.org>
Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/w1/masters/omap_hdq.c
patch
|
blob
|
history
diff --git
a/drivers/w1/masters/omap_hdq.c
b/drivers/w1/masters/omap_hdq.c
index
83fc9aa
..
3099052
100644
(file)
--- a/
drivers/w1/masters/omap_hdq.c
+++ b/
drivers/w1/masters/omap_hdq.c
@@
-763,6
+763,8
@@
static int omap_hdq_remove(struct platform_device *pdev)
/* remove module dependency */
pm_runtime_disable(&pdev->dev);
+ w1_remove_master_device(&omap_w1_master);
+
return 0;
}