This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

kernel NULL pointer dereference error

On a custom board based on DM355 processor, the kernel panics with the following messages:

Linux video capture interface: v2.00
vpfe_init
vpfe-capture: vpss clock vpss_master enabled
vpfe-capture: vpss clock vpss_slave enabled
vpfe-capture vpfe-capture: v4l2 device registered
vpfe-capture vpfe-capture: video device registered
Unable to handle kernel NULL pointer dereference at virtual address 00000002
pgd = c0004000
[00000002] *pgd=00000000
Internal error: Oops: 5 [#1] PREEMPT
Modules linked in:
CPU: 0    Not tainted  (2.6.32-rc2-davinci1 #8)
PC is at i2c_smbus_write_byte_data+0x18/0x44
LR is at dm355evm_msp_write+0x1c/0x24
pc : [<c01b6414>]    lr : [<c0191e38>]    psr: 60000013
sp : c3029df0  ip : c3029e38  fp : c3029e34
r10: 00000000  r9 : c0298bec  r8 : c3ffcc1c
r7 : c4bd7e00  r6 : c0298ce4  r5 : 00000000  r4 : c3ffcc00
r3 : c3029e04  r2 : 00000000  r1 : 00000008  r0 : 00000000
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
Control: 0005317f  Table: 80004000  DAC: 00000017
Process swapper (pid: 1, stack limit = 0xc3028270)
Stack: (0xc3029df0 to 0xc302a000)
9de0:                                     22222222 22222222 c02b1838 c02b1838
9e00: c3029e2c c3029e00 c01ec5b0 c005b5a8 a0000013 00000000 c3029e54 c3029e28
9e20: c008fa38 c014b734 c3029e44 c3029e38 c0191e38 c01b640c c3029e54 c3029e48
9e40: c002f4e0 c0191e2c c3029eac c3029e58 c001a17c c002f4a4 00000000 00000000
9e60: 00000001 00000000 00000000 00000001 c3085030 00000000 c3ffcc10 00000002
9e80: c3029e9c c0296a90 c0296a90 c02b3528 c02b3528 00000000 00000000 00000000
9ea0: c3029ebc c3029eb0 c018d874 c0019ca0 c3029edc c3029ec0 c018c8b8 c018d868
9ec0: c0296a90 c0296ac4 c02b3528 00000000 c3029efc c3029ee0 c018c9d0 c018c818
9ee0: 00000000 c02b3528 c018c968 00000000 c3029f24 c3029f00 c018c08c c018c978
9f00: c3004638 c3041990 c0142ab4 c02b3528 c4bd43c0 c02af458 c3029f34 c3029f28
9f20: c018c71c c018c048 c3029f64 c3029f38 c018b97c c018c70c c0252961 00000000
9f40: c02b3528 00000000 00000001 00000000 00000000 00000000 c3029f8c c3029f68
9f60: c018ccf0 c018b8e8 00000000 c0019c68 00000000 00000001 00000000 00000000
9f80: c3029f9c c3029f90 c018db1c c018cc50 c3029fac c3029fa0 c0019c84 c018dae0
9fa0: c3029fdc c3029fb0 c0023340 c0019c78 00000000 00000000 c3029fdc c3029fc8
9fc0: c001c540 00000000 00000000 00000000 c3029ff4 c3029fe0 c000846c c00232f0
9fe0: c003b7e4 00000000 00000000 c3029ff8 c003b7e4 c00083e0 00008000 00000000
Backtrace:
[<c01b63fc>] (i2c_smbus_write_byte_data+0x0/0x44) from [<c0191e38>] (dm355evm_ms
p_write+0x1c/0x24)
[<c0191e1c>] (dm355evm_msp_write+0x0/0x24) from [<c002f4e0>] (dm355evm_setup_vid
eo_input+0x4c/0x54)
[<c002f494>] (dm355evm_setup_video_input+0x0/0x54) from [<c001a17c>] (vpfe_probe
+0x4ec/0x730)
[<c0019c90>] (vpfe_probe+0x0/0x730) from [<c018d874>] (platform_drv_probe+0x1c/0
x20)
[<c018d858>] (platform_drv_probe+0x0/0x20) from [<c018c8b8>] (driver_probe_devic
e+0xb0/0x160)
[<c018c808>] (driver_probe_device+0x0/0x160) from [<c018c9d0>] (__driver_attach+
0x68/0x8c)
 r7:00000000 r6:c02b3528 r5:c0296ac4 r4:c0296a90
[<c018c968>] (__driver_attach+0x0/0x8c) from [<c018c08c>] (bus_for_each_dev+0x54
/0x84)
 r6:00000000 r5:c018c968 r4:c02b3528 r3:00000000
[<c018c038>] (bus_for_each_dev+0x0/0x84) from [<c018c71c>] (driver_attach+0x20/0
x28)
 r6:c02af458 r5:c4bd43c0 r4:c02b3528
[<c018c6fc>] (driver_attach+0x0/0x28) from [<c018b97c>] (bus_add_driver+0xa4/0x2
1c)
[<c018b8d8>] (bus_add_driver+0x0/0x21c) from [<c018ccf0>] (driver_register+0xb0/
0x140)
[<c018cc40>] (driver_register+0x0/0x140) from [<c018db1c>] (platform_driver_regi
ster+0x4c/0x60)
 r8:00000000 r7:00000000 r6:00000001 r5:00000000 r4:c0019c68
r3:00000000

What could cause this problem? From looking at the backtrace it has something to do with vpfe.