[PATCH] staging: mt7621-pinctrl: fix pinmux warning at boot

Greg Ungerer gerg at kernel.org
Mon Jan 14 05:28:38 UTC 2019


Fix unassigned "num_maps" when calling pinctrl_utils_reserve_map() in
the satging mt7621-pinctrl driver. Although we do set an initial "map"
pointer to NULL, there is no initialization of the "num_maps" argument.

Uninitialized "num_maps" causes the following warning on boot on 5.0-rc1:

------------[ cut here ]------------
WARNING: CPU: 0 PID: 1 at mm/page_alloc.c:4511 __alloc_pages_nodemask+0x1d0/0xb70
Modules linked in:
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.0.0-rc1-00004-gf3cdc52549a2 #2
Stack : 00000046 00000000 00000000 807e0000 87d1e580 8006fb04 8072da9c 0000000b
        00000000 00000000 8072d2dc 87c3d894 80770000 00000001 87c3d828 588f41e8
        00000000 00000000 80820000 00000000 00000000 807e76a6 00000047 00000000
        2d316372 00000000 00000000 00000000 80770000 00000000 806eb6b8 00000009
        0000119f 80770000 80700000 807016cc 00000010 00000001 00000000 807e0000
        ...
Call Trace:
[<8000cfe0>] show_stack+0x94/0x12c
[<8060dd7c>] dump_stack+0x8c/0xd0
[<80028430>] __warn+0x10c/0x120
[<80028554>] warn_slowpath_null+0x44/0x60
[<800e27a8>] __alloc_pages_nodemask+0x1d0/0xb70
[<800fe4a8>] kmalloc_order+0x20/0x54
[<800fe858>] krealloc+0x7c/0x108
[<802ec9c8>] pinctrl_utils_reserve_map+0x88/0x100
[<80445f0c>] rt2880_pinctrl_dt_node_to_map+0xa0/0x18c
[<802ede20>] pinctrl_dt_to_map+0x274/0x394
[<802eb7cc>] create_pinctrl+0x80/0x478
[<802ebd7c>] pinctrl_enable+0x20/0x148
[<802ebed0>] pinctrl_register+0x2c/0x50
[<80446514>] rt2880_pinmux_probe+0x51c/0x758
[<80352d24>] platform_drv_probe+0x40/0x9c
[<80350e48>] really_probe+0x1f0/0x35c
[<8034ed74>] bus_for_each_drv+0x78/0xd0
[<80350c10>] __device_attach+0xdc/0x11c
[<8034ff04>] bus_probe_device+0xa0/0xbc
[<8034c548>] device_add+0x3c8/0x618
[<8043df90>] of_platform_device_create_pdata+0xac/0x120
[<8043e1b4>] of_platform_bus_create+0x168/0x260
[<8043e42c>] of_platform_populate+0x7c/0xec
[<8079985c>] __dt_register_buses+0x70/0x90
[<80798df0>] plat_of_setup+0x1c/0x34
[<800015f4>] do_one_initcall+0x50/0x1ac
[<80795e48>] kernel_init_freeable+0x184/0x26c
[<8062bad4>] kernel_init+0x14/0x110
[<80007198>] ret_from_kernel_thread+0x14/0x1c
---[ end trace d752c6e38e5b8de8 ]---
rt2880-pinmux pinctrl: krealloc(map) failed
rt2880-pinmux pinctrl: can't reserve map: -12
rt2880-pinmux pinctrl: error claiming hogs: -12
rt2880-pinmux pinctrl: could not claim hogs: -12
rt2880-pinmux: probe of pinctrl failed with error -12

Signed-off-by: Greg Ungerer <gerg at kernel.org>
---
 drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c b/drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c
index aa98fbb17013..b007f905b24e 100644
--- a/drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c
+++ b/drivers/staging/mt7621-pinctrl/pinctrl-rt2880.c
@@ -89,6 +89,7 @@ static int rt2880_pinctrl_dt_node_to_map(struct pinctrl_dev *pctrldev,
 		ngroups++;
 
 	*map = NULL;
+	*num_maps = 0;
 	ret = pinctrl_utils_reserve_map(pctrldev, map, &reserved_maps,
 					num_maps, ngroups);
 	if (ret) {
-- 
2.17.1



More information about the devel mailing list