安卓5 v4l2 ioctrl VIDIOC_REQBUFS命令导致系统重启

当运行这段代码后

struct v4l2_requestbuffers tV4L2_reqbuf;
  tV4L2_reqbuf.count = FRAME_NUM;
  tV4L2_reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
  tV4L2_reqbuf.memory = V4L2_MEMORY_MMAP;
  if (ioctl(fd, VIDIOC_REQBUFS, &tV4L2_reqbuf) == -1)
  {
    printf("Error getting buffer.\n");
    printf("REQBUFS:%s\n", strerror(errno));
    return FALSE;
  }
  printf("REQBUFS succeeded\n");

板子报错并重启

[  230.970000] Unable to handle kernel NULL pointer dereference at virtual address 00000050
[  230.974000] pgd = d86c0000
[  230.977000] [00000050] *pgd=49046831, *pte=00000000, *ppte=00000000
[  230.983000] Internal error: Oops: 17 [#1] PREEMPT SMP ARM
[  230.988000] Modules linked in: rtk_btusb nx_vpu(O) vr(O) [last unloaded: wlan]
[  230.996000] CPU: 1    Tainted: G           O  (3.4.39-9tripod #20)
[  231.002000] PC is at do_raw_spin_trylock+0x8/0x4c
[  231.007000] LR is at __raw_spin_lock_irqsave+0x30/0xa0
[  231.012000] pc : [<c0296cbc>]    lr : [<c073854c>]    psr: 60000093
[  231.012000] sp : d856bc58  ip : 00000000  fp : 00000000
[  231.023000] r10: 00000000  r9 : e2b5e400  r8 : c995f000
[  231.028000] r7 : d856a000  r6 : 00000001  r5 : 60000013  r4 : 00000050
[  231.035000] r3 : 00000050  r2 : 00000001  r1 : 00000001  r0 : 00000050
[  231.041000] Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
[  231.049000] Control: 10c5383d  Table: 586c006a  DAC: 00000015

如果我把V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE改成V4L2_BUF_TYPE_VIDEO_CAPTURE则打印的错误为Invalid Argument

求解