projects
/
firefly-linux-kernel-4.4.55.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
6a91e85
)
power: charger-manager: Fix NULL pointer exception with missing cm-fuel-gauge
author
Krzysztof Kozlowski
<k.kozlowski@samsung.com>
Fri, 26 Sep 2014 11:27:03 +0000
(13:27 +0200)
committer
Sebastian Reichel
<sre@kernel.org>
Fri, 26 Sep 2014 15:09:56 +0000
(17:09 +0200)
NULL pointer exception happens during charger-manager probe if
'cm-fuel-gauge' property is not present.
[ 2.448536] Unable to handle kernel NULL pointer dereference at virtual address
00000000
[ 2.456572] pgd =
c0004000
[ 2.459217] [
00000000
] *pgd=
00000000
[ 2.462759] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
[ 2.468047] Modules linked in:
[ 2.471089] CPU: 0 PID: 1 Comm: swapper/0 Not tainted
3.17.0-rc6-00251-ge44cf96cd525
-dirty #969
[ 2.479765] task:
ea890000
ti:
ea87a000
task.ti:
ea87a000
[ 2.485161] PC is at strcmp+0x4/0x30
[ 2.488719] LR is at power_supply_match_device_by_name+0x10/0x1c
[ 2.494695] pc : [<
c01f4220
>] lr : [<
c030fe38
>] psr:
a0000113
[ 2.494695] sp :
ea87bde0
ip :
00000000
fp :
eaa97010
[ 2.506150] r10:
00000004
r9 :
ea97269c
r8 :
ea3bbfd0
[ 2.511360] r7 :
eaa97000
r6 :
c030fe28
r5 :
00000000
r4 :
ea3b0000
[ 2.517869] r3 :
0000006d
r2 :
00000000
r1 :
00000000
r0 :
c057c195
[ 2.524381] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel
[ 2.531671] Control:
10c5387d
Table:
4000404a
DAC:
00000015
[ 2.537399] Process swapper/0 (pid: 1, stack limit = 0xea87a240)
[ 2.543388] Stack: (0xea87bde0 to 0xea87c000)
[ 2.547733] bde0:
ea3b0210
c026b1c8
eaa97010
eaa97000
eaa97010
eabb60a8
ea3b0210
00000000
[ 2.555891] be00:
00000008
ea2db210
ea1a3410
c030fee0
ea3bbf90
c03138fc
c068969c
c013526c
[ 2.564050] be20:
eaa040c0
00000000
c068969c
00000000
eaa040c0
ea2da300
00000002
00000000
[ 2.572208] be40:
00000001
ea2da3c0
00000000
00000001
00000000
eaa97010
c068969c
00000000
[ 2.580367] be60:
00000000
c068969c
00000000
00000002
00000000
c026b71c
c026b6f0
eaa97010
[ 2.588527] be80:
c0e82530
c026a330
00000000
eaa97010
c068969c
eaa97044
00000000
c061df50
[ 2.596686] bea0:
ea87a000
c026a4dc
00000000
c068969c
c026a448
c0268b5c
ea8054a8
eaa8fd50
[ 2.604845] bec0:
c068969c
ea2db180
c06801f8
c0269b18
c0590f68
c068969c
c0656c98
c068969c
[ 2.613004] bee0:
c0656c98
ea3bbe40
c06988c0
c026aaf0
00000000
c0656c98
c0656c98
c00088a4
[ 2.621163] bf00:
00000000
c0055f48
00000000
00000004
00000000
ea890000
c05dbc54
c062c178
[ 2.629323] bf20:
c0603518
c005f674
00000001
ea87a000
eb7ff83b
c0476440
00000091
c003d41c
[ 2.637482] bf40:
c05db344
00000007
eb7ff858
00000007
c065a76c
c0647d24
00000007
c062c170
[ 2.645642] bf60:
c06988c0
00000091
c062c178
c0603518
00000000
c0603cc4
00000007
00000007
[ 2.653801] bf80:
c0603518
c0c0c0c0
00000000
c0453948
00000000
00000000
00000000
00000000
[ 2.661959] bfa0:
00000000
c0453950
00000000
c000e728
00000000
00000000
00000000
00000000
[ 2.670118] bfc0:
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
[ 2.678277] bfe0:
00000000
00000000
00000000
00000000
00000013
00000000
c0c0c0c0
c0c0c0c0
[ 2.686454] [<
c01f4220
>] (strcmp) from [<
c030fe38
>] (power_supply_match_device_by_name+0x10/0x1c)
[ 2.695303] [<
c030fe38
>] (power_supply_match_device_by_name) from [<
c026b1c8
>] (class_find_device+0x54/0xac)
[ 2.705106] [<
c026b1c8
>] (class_find_device) from [<
c030fee0
>] (power_supply_get_by_name+0x1c/0x30)
[ 2.714137] [<
c030fee0
>] (power_supply_get_by_name) from [<
c03138fc
>] (charger_manager_probe+0x3d8/0xe58)
[ 2.723683] [<
c03138fc
>] (charger_manager_probe) from [<
c026b71c
>] (platform_drv_probe+0x2c/0x5c)
[ 2.732532] [<
c026b71c
>] (platform_drv_probe) from [<
c026a330
>] (driver_probe_device+0x10c/0x224)
[ 2.741384] [<
c026a330
>] (driver_probe_device) from [<
c026a4dc
>] (__driver_attach+0x94/0x98)
[ 2.749813] [<
c026a4dc
>] (__driver_attach) from [<
c0268b5c
>] (bus_for_each_dev+0x54/0x88)
[ 2.757969] [<
c0268b5c
>] (bus_for_each_dev) from [<
c0269b18
>] (bus_add_driver+0xd4/0x1d0)
[ 2.766123] [<
c0269b18
>] (bus_add_driver) from [<
c026aaf0
>] (driver_register+0x78/0xf4)
[ 2.774110] [<
c026aaf0
>] (driver_register) from [<
c00088a4
>] (do_one_initcall+0x80/0x1bc)
[ 2.782276] [<
c00088a4
>] (do_one_initcall) from [<
c0603cc4
>] (kernel_init_freeable+0x100/0x1cc)
[ 2.790952] [<
c0603cc4
>] (kernel_init_freeable) from [<
c0453950
>] (kernel_init+0x8/0xec)
[ 2.799029] [<
c0453950
>] (kernel_init) from [<
c000e728
>] (ret_from_fork+0x14/0x2c)
[ 2.806572] Code:
e12fff1e
e1a03000
eafffff7
e4d03001
(
e4d12001
)
[ 2.812832] ---[ end trace
7f12556111b9e7ef
]---
Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Cc: <stable@vger.kernel.org>
Fixes: 856ee6115e2d ("charger-manager: Support deivce tree in charger manager driver")
Signed-off-by: Sebastian Reichel <sre@kernel.org>
drivers/power/charger-manager.c
patch
|
blob
|
history
diff --git
a/drivers/power/charger-manager.c
b/drivers/power/charger-manager.c
index c1ed3c99c0593b80a33f4874a4f221628f568adb..7098a1ce2d3c1068e2ef6cc5fbbe4d185ece9850 100644
(file)
--- a/
drivers/power/charger-manager.c
+++ b/
drivers/power/charger-manager.c
@@
-1720,6
+1720,11
@@
static int charger_manager_probe(struct platform_device *pdev)
return -EINVAL;
}
+ if (!desc->psy_fuel_gauge) {
+ dev_err(&pdev->dev, "No fuel gauge power supply defined\n");
+ return -EINVAL;
+ }
+
/* Counting index only */
while (desc->psy_charger_stat[i])
i++;