[libcamera-devel] [PATCH v5 4/6] media: v4l2-subdev: Assume V4L2_SUBDEV_API is selected

Jacopo Mondi jacopo at jmondi.org
Wed Apr 29 09:04:42 CEST 2020


Here it goes -.-'
I was hoping to have this going through kbuild soon

Would guarding the whole file handle operations and the ioctl handler
a best option then ?

On Wed, Apr 29, 2020 at 07:44:30AM +0800, kbuild test robot wrote:
> Hi Jacopo,
>
> I love your patch! Yet something to improve:
>
> [auto build test ERROR on linuxtv-media/master]
> [also build test ERROR on linus/master v5.7-rc3 next-20200428]
> [if your patch is applied to the wrong git tree, please drop us a note to help
> improve the system. BTW, we also suggest to use '--base' option to specify the
> base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
>
> url:    https://github.com/0day-ci/linux/commits/Jacopo-Mondi/media-Register-read-only-sub-dev-devnode/20200429-062133
> base:   git://linuxtv.org/media_tree.git master
> config: arm-at91_dt_defconfig (attached as .config)
> compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # save the attached .config to linux build tree
>         COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=arm
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kbuild test robot <lkp at intel.com>
>
> All errors (new ones prefixed by >>):
>
>    drivers/media/v4l2-core/v4l2-subdev.c: In function 'subdev_fh_init':
> >> drivers/media/v4l2-core/v4l2-subdev.c:28:5: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>       28 |   fh->pad = v4l2_subdev_alloc_pad_config(sd);
>          |     ^~
>    drivers/media/v4l2-core/v4l2-subdev.c:29:9: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>       29 |   if (fh->pad == NULL)
>          |         ^~
>    drivers/media/v4l2-core/v4l2-subdev.c: In function 'subdev_fh_free':
>    drivers/media/v4l2-core/v4l2-subdev.c:38:32: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>       38 |  v4l2_subdev_free_pad_config(fh->pad);
>          |                                ^~
>    drivers/media/v4l2-core/v4l2-subdev.c:39:4: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>       39 |  fh->pad = NULL;
>          |    ^~
>    In file included from include/media/v4l2-device.h:13,
>                     from drivers/media/v4l2-core/v4l2-subdev.c:20:
>    drivers/media/v4l2-core/v4l2-subdev.c: In function 'subdev_do_ioctl':
>    drivers/media/v4l2-core/v4l2-subdev.c:469:54: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      469 |   return v4l2_subdev_call(sd, pad, get_fmt, subdev_fh->pad, format);
>          |                                                      ^~
>    include/media/v4l2-subdev.h:1111:16: note: in definition of macro 'v4l2_subdev_call'
>     1111 |        __sd, ##args); \
>          |                ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:469:54: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      469 |   return v4l2_subdev_call(sd, pad, get_fmt, subdev_fh->pad, format);
>          |                                                      ^~
>    include/media/v4l2-subdev.h:1113:39: note: in definition of macro 'v4l2_subdev_call'
>     1113 |    __result = __sd->ops->o->f(__sd, ##args); \
>          |                                       ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:480:54: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      480 |   return v4l2_subdev_call(sd, pad, set_fmt, subdev_fh->pad, format);
>          |                                                      ^~
>    include/media/v4l2-subdev.h:1111:16: note: in definition of macro 'v4l2_subdev_call'
>     1111 |        __sd, ##args); \
>          |                ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:480:54: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      480 |   return v4l2_subdev_call(sd, pad, set_fmt, subdev_fh->pad, format);
>          |                                                      ^~
>    include/media/v4l2-subdev.h:1113:39: note: in definition of macro 'v4l2_subdev_call'
>     1113 |    __result = __sd->ops->o->f(__sd, ##args); \
>          |                                       ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:494:37: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      494 |    sd, pad, get_selection, subdev_fh->pad, &sel);
>          |                                     ^~
>    include/media/v4l2-subdev.h:1111:16: note: in definition of macro 'v4l2_subdev_call'
>     1111 |        __sd, ##args); \
>          |                ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:494:37: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      494 |    sd, pad, get_selection, subdev_fh->pad, &sel);
>          |                                     ^~
>    include/media/v4l2-subdev.h:1113:39: note: in definition of macro 'v4l2_subdev_call'
>     1113 |    __result = __sd->ops->o->f(__sd, ##args); \
>          |                                       ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:516:37: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      516 |    sd, pad, set_selection, subdev_fh->pad, &sel);
>          |                                     ^~
>    include/media/v4l2-subdev.h:1111:16: note: in definition of macro 'v4l2_subdev_call'
>     1111 |        __sd, ##args); \
>          |                ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:516:37: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      516 |    sd, pad, set_selection, subdev_fh->pad, &sel);
>          |                                     ^~
>    include/media/v4l2-subdev.h:1113:39: note: in definition of macro 'v4l2_subdev_call'
>     1113 |    __result = __sd->ops->o->f(__sd, ##args); \
>          |                                       ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:527:61: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      527 |   return v4l2_subdev_call(sd, pad, enum_mbus_code, subdev_fh->pad,
>          |                                                             ^~
>    include/media/v4l2-subdev.h:1111:16: note: in definition of macro 'v4l2_subdev_call'
>     1111 |        __sd, ##args); \
>          |                ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:527:61: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      527 |   return v4l2_subdev_call(sd, pad, enum_mbus_code, subdev_fh->pad,
>          |                                                             ^~
>    include/media/v4l2-subdev.h:1113:39: note: in definition of macro 'v4l2_subdev_call'
>     1113 |    __result = __sd->ops->o->f(__sd, ##args); \
>          |                                       ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:535:62: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      535 |   return v4l2_subdev_call(sd, pad, enum_frame_size, subdev_fh->pad,
>          |                                                              ^~
>    include/media/v4l2-subdev.h:1111:16: note: in definition of macro 'v4l2_subdev_call'
>     1111 |        __sd, ##args); \
>          |                ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:535:62: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      535 |   return v4l2_subdev_call(sd, pad, enum_frame_size, subdev_fh->pad,
>          |                                                              ^~
>    include/media/v4l2-subdev.h:1113:39: note: in definition of macro 'v4l2_subdev_call'
>     1113 |    __result = __sd->ops->o->f(__sd, ##args); \
>          |                                       ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:560:66: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      560 |   return v4l2_subdev_call(sd, pad, enum_frame_interval, subdev_fh->pad,
>          |                                                                  ^~
>    include/media/v4l2-subdev.h:1111:16: note: in definition of macro 'v4l2_subdev_call'
>     1111 |        __sd, ##args); \
>          |                ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:560:66: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>      560 |   return v4l2_subdev_call(sd, pad, enum_frame_interval, subdev_fh->pad,
>          |                                                                  ^~
>    include/media/v4l2-subdev.h:1113:39: note: in definition of macro 'v4l2_subdev_call'
>     1113 |    __result = __sd->ops->o->f(__sd, ##args); \
>          |                                       ^~~~
>    drivers/media/v4l2-core/v4l2-subdev.c:569:37: error: 'struct v4l2_subdev_fh' has no member named 'pad'
>
> vim +28 drivers/media/v4l2-core/v4l2-subdev.c
>
> 2096a5dcf9704f drivers/media/video/v4l2-subdev.c     Laurent Pinchart  2009-12-09  24
> 7cd5a16b22af7d drivers/media/video/v4l2-subdev.c     Stanimir Varbanov 2010-05-21  25  static int subdev_fh_init(struct v4l2_subdev_fh *fh, struct v4l2_subdev *sd)
> 7cd5a16b22af7d drivers/media/video/v4l2-subdev.c     Stanimir Varbanov 2010-05-21  26  {
> 9b02cbb3ede89b drivers/media/v4l2-core/v4l2-subdev.c Laurent Pinchart  2015-04-24  27  	if (sd->entity.num_pads) {
> 9b02cbb3ede89b drivers/media/v4l2-core/v4l2-subdev.c Laurent Pinchart  2015-04-24 @28  		fh->pad = v4l2_subdev_alloc_pad_config(sd);
> ae184cda8d0eeb drivers/media/video/v4l2-subdev.c     Sakari Ailus      2011-10-14  29  		if (fh->pad == NULL)
> 7cd5a16b22af7d drivers/media/video/v4l2-subdev.c     Stanimir Varbanov 2010-05-21  30  			return -ENOMEM;
> 9b02cbb3ede89b drivers/media/v4l2-core/v4l2-subdev.c Laurent Pinchart  2015-04-24  31  	}
> b9e6aad3939a62 drivers/media/v4l2-core/v4l2-subdev.c Jacopo Mondi      2020-04-28  32
> 7cd5a16b22af7d drivers/media/video/v4l2-subdev.c     Stanimir Varbanov 2010-05-21  33  	return 0;
> 7cd5a16b22af7d drivers/media/video/v4l2-subdev.c     Stanimir Varbanov 2010-05-21  34  }
> 7cd5a16b22af7d drivers/media/video/v4l2-subdev.c     Stanimir Varbanov 2010-05-21  35
>
> :::::: The code at line 28 was first introduced by commit
> :::::: 9b02cbb3ede89b5cd84bbe4ef493bd130d76b070 [media] v4l: subdev: Add pad config allocator and init
>
> :::::: TO: Laurent Pinchart <laurent.pinchart at linaro.org>
> :::::: CC: Mauro Carvalho Chehab <mchehab at osg.samsung.com>
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org




More information about the libcamera-devel mailing list