All of lore.kernel.org
 help / color / mirror / Atom feed
* [intel-lts:5.10/yocto 10621/20393] drivers/media/v4l2-core/v4l2-subdev.c:908:5: warning: stack frame size (1392) exceeds limit (1024) in 'v4l2_subdev_link_validate'
@ 2022-02-10 13:26 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-02-10 13:26 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 17312 bytes --]

Hi Wanhui,

FYI, the error/warning still remains.

tree:   https://github.com/intel/linux-intel-lts.git 5.10/yocto
head:   2dafc777a64181d42982628c7f5907a03da5f070
commit: f13978177f8c57c155d53df5f2df60f519e82e4a [10621/20393] v4l: subdev: Add support for sub-streams
config: arm-imx_v4_v5_defconfig (https://download.01.org/0day-ci/archive/20220210/202202102146.b4WAHQie-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project aa845d7a245d85c441d0bd44fc7b6c3be8f3de8d)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://github.com/intel/linux-intel-lts/commit/f13978177f8c57c155d53df5f2df60f519e82e4a
        git remote add intel-lts https://github.com/intel/linux-intel-lts.git
        git fetch --no-tags intel-lts 5.10/yocto
        git checkout f13978177f8c57c155d53df5f2df60f519e82e4a
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=arm SHELL=/bin/bash drivers/media/v4l2-core/ drivers/video/fbdev/core/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   In file included from drivers/media/v4l2-core/v4l2-subdev.c:16:
   In file included from include/linux/videodev2.h:61:
   include/uapi/linux/videodev2.h:1757:2: warning: field  within 'struct v4l2_ext_control' is less aligned than 'union v4l2_ext_control::(anonymous at include/uapi/linux/videodev2.h:1757:2)' and is usually due to 'struct v4l2_ext_control' being packed, which can lead to unaligned accesses [-Wunaligned-access]
           union {
           ^
>> drivers/media/v4l2-core/v4l2-subdev.c:908:5: warning: stack frame size (1392) exceeds limit (1024) in 'v4l2_subdev_link_validate' [-Wframe-larger-than]
   int v4l2_subdev_link_validate(struct media_link *link)
       ^
   2 warnings generated.


vim +/v4l2_subdev_link_validate +908 drivers/media/v4l2-core/v4l2-subdev.c

e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   907  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  @908  int v4l2_subdev_link_validate(struct media_link *link)
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   909  {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   910  	struct v4l2_subdev *sink;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   911  	struct v4l2_subdev_route sink_routes[LINK_VALIDATE_ROUTES];
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   912  	struct v4l2_subdev_routing sink_routing = {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   913  		.routes = sink_routes,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   914  		.num_routes = ARRAY_SIZE(sink_routes),
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   915  	};
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   916  	struct v4l2_subdev_route src_routes[LINK_VALIDATE_ROUTES];
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   917  	struct v4l2_subdev_routing src_routing = {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   918  		.routes = src_routes,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   919  		.num_routes = ARRAY_SIZE(src_routes),
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   920  	};
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   921  	unsigned int i, j;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   922  	int rval;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   923  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   924  	sink = media_entity_to_v4l2_subdev(link->sink->entity);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   925  	if (!sink)
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   926  		return -EINVAL;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   927  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   928  	if (!(link->sink->flags & MEDIA_PAD_FL_MULTIPLEX &&
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   929  		link->source->flags & MEDIA_PAD_FL_MULTIPLEX))
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   930  		return v4l2_subdev_link_validate_one(link, link->source, 0,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   931  						     link->sink, 0);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   932  	/*
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   933  	 * multiplex link cannot proceed without route information.
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   934  	 */
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   935  	rval = v4l2_subdev_call(sink, pad, get_routing, &sink_routing);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   936  	if (rval) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   937  		dev_err(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   938  			"error %d in get_routing() on %s, sink pad %u\n", rval,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   939  			sink->entity.name, link->sink->index);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   940  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   941  		return rval;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   942  	}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   943  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   944  	rval = v4l2_subdev_call(media_entity_to_v4l2_subdev(
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   945  					link->source->entity),
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   946  				pad, get_routing, &src_routing);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   947  	if (rval) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   948  		dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   949  			"error %d in get_routing() on %s, source pad %u\n",
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   950  			rval, sink->entity.name, link->source->index);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   951  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   952  		return rval;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   953  	}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   954  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   955  	dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   956  		"validating multiplexed link \"%s\":%u -> \"%s\":%u; %u/%u routes\n",
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   957  		link->source->entity->name, link->source->index,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   958  		sink->entity.name, link->sink->index,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   959  		src_routing.num_routes, sink_routing.num_routes);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   960  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   961  	for (i = 0; i < sink_routing.num_routes; i++) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   962  		/* Get the first active route for the sink pad. */
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   963  		if (sink_routes[i].sink_pad != link->sink->index ||
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   964  		    !(sink_routes[i].flags & V4L2_SUBDEV_ROUTE_FL_ACTIVE)) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   965  			dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   966  				"skipping sink route %u/%u -> %u/%u[%u]\n",
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   967  				sink_routes[i].sink_pad,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   968  				sink_routes[i].sink_stream,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   969  				sink_routes[i].source_pad,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   970  				sink_routes[i].source_stream,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   971  				(bool)(sink_routes[i].flags
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   972  				       & V4L2_SUBDEV_ROUTE_FL_ACTIVE));
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   973  			continue;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   974  		}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   975  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   976  		/*
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   977  		 * Get the corresponding route for the source pad.
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   978  		 * It's ok for the source pad to have routes active
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   979  		 * where the sink pad does not, but the routes that
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   980  		 * are active on the source pad have to be active on
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   981  		 * the sink pad as well.
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   982  		 */
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   983  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   984  		for (j = 0; j < src_routing.num_routes; j++) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   985  			if (src_routes[j].source_pad == link->source->index &&
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   986  			    src_routes[j].source_stream
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   987  			    == sink_routes[i].sink_stream)
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   988  				break;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   989  		}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   990  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   991  		if (j == src_routing.num_routes) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   992  			dev_err(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   993  				"no corresponding source found.\n");
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   994  			return -EINVAL;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   995  		}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   996  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   997  		/* The source route must be active. */
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   998  		if (!(src_routes[j].flags & V4L2_SUBDEV_ROUTE_FL_ACTIVE)) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13   999  			dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1000  				"source route not active\n");
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1001  			return -EINVAL;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1002  		}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1003  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1004  		dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1005  			"validating link \"%s\": %u/%u => \"%s\" %u/%u\n",
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1006  			link->source->entity->name, src_routes[j].source_pad,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1007  			src_routes[j].source_stream, sink->entity.name,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1008  			sink_routes[i].sink_pad, sink_routes[i].sink_stream);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1009  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1010  		rval = v4l2_subdev_link_validate_one(
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1011  			link, link->source, src_routes[j].source_stream,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1012  			link->sink, sink_routes[i].sink_stream);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1013  		if (rval) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1014  			dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1015  				"error %d in link validation\n", rval);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1016  			return rval;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1017  		}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1018  	}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1019  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1020  	if (i < sink_routing.num_routes) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1021  		dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1022  			"not all sink routes verified; out of source routes\n");
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1023  		return -EINVAL;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1024  	}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1025  
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1026  	return 0;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia           2016-06-13  1027  }
8227c92b696884 drivers/media/video/v4l2-subdev.c     Sakari Ailus     2011-10-10  1028  EXPORT_SYMBOL_GPL(v4l2_subdev_link_validate);
9b02cbb3ede89b drivers/media/v4l2-core/v4l2-subdev.c Laurent Pinchart 2015-04-24  1029  

:::::: The code at line 908 was first introduced by commit
:::::: e822d33e27dd00bb200f0e9db1811231554ce03c v4l: Take routing info into account in link validation

:::::: TO: wu xia <xia.wu@intel.com>
:::::: CC: Pan, Kris <kris.pan@intel.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-02-10 13:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-10 13:26 [intel-lts:5.10/yocto 10621/20393] drivers/media/v4l2-core/v4l2-subdev.c:908:5: warning: stack frame size (1392) exceeds limit (1024) in 'v4l2_subdev_link_validate' kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.