テストCIT中にUSBを挿入し、再起動が発生する


(gdb) bt
#0 __vectors_start ()
at /home/XXX-buildsrv33/jenkins/workspace/UNIFIED_VERSION_BUILD/code/kernel-3.18/arch/arm/kernel/entry-armv.S:1218
#1 0xc0401564 in mt_mt65xx_led_set_cust (cust=0xdd2f7b98, level=255)
at /home/XXX-buildsrv33/jenkins/workspace/UNIFIED_VERSION_BUILD/code/kernel-3.18/drivers/misc/mediatek/leds/mt6735/leds.c:897
#2 0xc04015d4 in mt_mt65xx_led_work (work=0xdd2f7bb8)
at /home/XXX-buildsrv33/jenkins/workspace/UNIFIED_VERSION_BUILD/code/kernel-3.18/drivers/misc/mediatek/leds/mt6735/leds.c:920
#3 0xc0133ff4 in process_one_work (worker=0xdac2bf00, work=0xdd2f7bb8)
at /home/XXX-buildsrv33/jenkins/workspace/UNIFIED_VERSION_BUILD/code/kernel-3.18/kernel/workqueue.c:2055
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

(gdb)backtrace情報から分かるように、crashは/drivers/misc/mediatek/leds/mt 6735/ledsで発生する.cファイルの897行(gdb)disassemble 0 xc 0401564
Dump of assembler code for function mt_mt65xx_led_set_cust:
0xc040136c : mov r12, sp
0xc0401370 : push

{r4, r5, r6, r11, r12, lr, pc}

0xc0401374 : sub r11, r12, #4
......
0xc0401558 : ldr r3, r4, #8
0xc040155c : mov r0, r5
0xc0401560 : blx r3
=> 0xc0401564 : str r0, r6, #164 ; 0xa4
0xc0401568 : ldr r0, [r4]
0xc040156c : ldr r1, pc, #32 ; 0xc0401594 
0xc0401570 : bl 0xc033fc9c 
......

対応レジスタ情報を表示する:(gdb)info registers r 0 xff 255 r 1 0 xff 255 r 2 0 xdb 3 e 7 eb 8 3678305976 r 3 0 x 1 r 4 0 xdd 2 f 7 b 98 371087658 r 5 0 xff 255 r 6 0 xc 1053270 3238343280 r 7 0 xdde 82700 3722979072 r 8 0 xc 109 ac 78 3238636664…cpsr 0 x 40070013 1074200595計算r 6+164=0 xc 1053314(gdb)x/xw 0 xc 1053314 0 xc 1053314:0 x 00000000 LEDモジュールに空のポインタアクセスが発生し、NE発生
/drivers/misc/mediatek/leds/mt6735/leds.c
ret = ((cust_set_brightness) (cust->data)) (level);