我在这个函数上有一个内核崩溃:__rb_rotate_left()
. 有人可以简单地解释一下这个功能的含义吗?
PC is at __rb_rotate_left+0x24/0x78
LR is at rb_insert_color+0x108/0x134
pc : [<c41aef04>] lr : [<c41af0dc>] psr: a0000013
sp : cf2c9ddc ip : acc8089f fp : cf2c9dec
r10: d0800000 r9 : d0800000 r8 : c8089fac
r7 : c96ae538 r6 : cf101ea8 r5 : cf101ea8 r4 : cf101ea8
r3 : cf101ea9 r2 : cf101ea8 r1 : c96ae538 r0 : cf101ea8
Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 10c53c7d Table: 0f0fc04a DAC: 00000015
Process insmod (pid: 31163, stack limit = 0xcf2c82f0)
Stack: (0xcf2c9ddc to 0xcf2ca000)
9dc0: cf101ea8
9de0: cf2c9e14 cf2c9df0 c41af0dc c41aeeec 00000000 c82384ec c82384e0 00000001
9e00: d668c000 00004000 cf2c9e2c cf2c9e18 c40d2120 c41aefe0 00000000 c82384e0
9e20: cf2c9e6c cf2c9e30 c40d30c0 c40d20b4 00003fff 00000000 ffffffff f0000000
9e40: c41af96c c7c4c940 00003000 00000022 00000001 000000d2 c406de40 d0800000
9e60: cf2c9ea4 cf2c9e70 c40d3268 c40d2eb0 000000d2 c8314800 cf2c9f78 000025ac
9e80: 000025ac 000000d2 c406de40 ffffffff cf2c8000 00000000 cf2c9ee4 cf2c9ea8
9ea0: c40d3bec c40d31a8 f0000000 000000d2 c406de40 00000001 ffffffff c8314800
9ec0: 00000000 000025ac 000025ac 00bf5198 00000080 c400de84 cf2c9f04 cf2c9ee8
9ee0: c40d3da0 c40d3b9c 000000d2 0000065f ffffffff c406de40 cf2c9f1c cf2c9f08
9f00: c40d3ee4 c40d3d6c ffffffff c406de40 cf2c9fa4 cf2c9f20 c406de40 c40d3ec0
9f20: c40e0be0 c40faf0c 00000020 00bf5188 c8314800 00000000 00000000 00000000
9f40: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
9f60: 00000000 00000000 00000000 00000000 00000000 00000000 c40dcd64 000025ac
9f80: 00000000 be8fff1b 00000080 c400de84 cf2c8000 00000000 00000000 cf2c9fa8
9fa0: c400dd00 c406ddf0 000025ac 00000000 00bf5198 000025ac 00bf5188 00bfd238
9fc0: 000025ac 00000000 be8fff1b 00000080 00000000 00000000 4003f000 00000000
9fe0: be8ffc78 be8ffc68 0001b73c 40242550 60000010 00bf5198 00000000 00000000
Backtrace:
[<c41aeee0>] (__rb_rotate_left+0x0/0x78) from [<c41af0dc>] (rb_insert_color+0x108/0x134)
r4:cf101ea8
[<c41aefd4>] (rb_insert_color+0x0/0x134) from [<c40d2120>] (__insert_vmap_area+0x78/0xd8)
r8:00004000 r7:d668c000 r6:00000001 r5:c82384e0 r4:c82384ec
r3:00000000
[<c40d20a8>] (__insert_vmap_area+0x0/0xd8) from [<c40d30c0>] (alloc_vmap_area.clone.18+0x21c/0x2f8)
r5:c82384e0 r4:00000000
[<c40d2ea4>] (alloc_vmap_area.clone.18+0x0/0x2f8) from [<c40d3268>] (__get_vm_area_node.clone.19+0xcc/0x164)
[<c40d319c>] (__get_vm_area_node.clone.19+0x0/0x164) from [<c40d3bec>] (__vmalloc_node_range+0x5c/0x1d0)
[<c40d3b90>] (__vmalloc_node_range+0x0/0x1d0) from [<c40d3da0>] (__vmalloc_node+0x40/0x4c)
r8:c400de84 r7:00000080 r6:00bf5198 r5:000025ac r4:000025ac
[<c40d3d60>] (__vmalloc_node+0x0/0x4c) from [<c40d3ee4>] (vmalloc+0x30/0x3c)
[<c40d3eb4>] (vmalloc+0x0/0x3c) from [<c406de40>] (sys_init_module+0x5c/0x1878)
[<c406dde4>] (sys_init_module+0x0/0x1878) from [<c400dd00>] (ret_fast_syscall+0x0/0x30)
Code: e593c008 e35c0000 e580c004 1593c008 (159c4000)
该函数在不干扰元素顺序的情况下更改二叉树的结构。
看:
__rb_rotate_left
rbtree.c
。