| From ea28780c38e324d36ae62b9c3db57c684c17c6b1 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 13 Aug 2018 17:32:17 -0400 |
| Subject: media: imx: work around false-positive warning, again |
| |
| From: Arnd Bergmann <arnd@arndb.de> |
| |
| [ Upstream commit 8d1a4817cce1b15b4909f0e324a4f5af5952da67 ] |
| |
| A warning that I thought to be solved by a previous patch of mine |
| has resurfaced with gcc-8: |
| |
| media/imx/imx-media-csi.c: In function 'csi_link_validate': |
| media/imx/imx-media-csi.c:1025:20: error: 'upstream_ep' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| media/imx/imx-media-csi.c:1026:24: error: 'upstream_ep.bus_type' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| media/imx/imx-media-csi.c:127:19: error: 'upstream_ep.bus.parallel.bus_width' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| media/imx/imx-media-csi.c: In function 'csi_enum_mbus_code': |
| media/imx/imx-media-csi.c:132:9: error: '*((void *)&upstream_ep+12)' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| media/imx/imx-media-csi.c:132:48: error: 'upstream_ep.bus.parallel.bus_width' may be used uninitialized in this function [-Werror=maybe-uninitialized] |
| |
| I spent some more time digging in this time, and think I have a better |
| fix, bailing out of the function that either initializes or errors |
| out here, which simplifies the code enough for gcc to figure out |
| what is going on. The earlier partial workaround can be removed now, |
| as the new workaround is better. |
| |
| Fixes: 890f27693f2a ("media: imx: work around false-positive warning") |
| |
| Signed-off-by: Arnd Bergmann <arnd@arndb.de> |
| Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/staging/media/imx/imx-media-csi.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c |
| index d17ce1fb4ef51..0f8fdc347091b 100644 |
| --- a/drivers/staging/media/imx/imx-media-csi.c |
| +++ b/drivers/staging/media/imx/imx-media-csi.c |
| @@ -166,6 +166,9 @@ static int csi_get_upstream_endpoint(struct csi_priv *priv, |
| struct v4l2_subdev *sd; |
| struct media_pad *pad; |
| |
| + if (!IS_ENABLED(CONFIG_OF)) |
| + return -ENXIO; |
| + |
| if (!priv->src_sd) |
| return -EPIPE; |
| |
| @@ -1072,7 +1075,7 @@ static int csi_link_validate(struct v4l2_subdev *sd, |
| struct v4l2_subdev_format *sink_fmt) |
| { |
| struct csi_priv *priv = v4l2_get_subdevdata(sd); |
| - struct v4l2_fwnode_endpoint upstream_ep = {}; |
| + struct v4l2_fwnode_endpoint upstream_ep; |
| bool is_csi2; |
| int ret; |
| |
| -- |
| 2.20.1 |
| |