From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Sasha Levin To: "stable@vger.kernel.org" , "linux-kernel@vger.kernel.org" CC: Nicholas Mc Guire , Greg Kroah-Hartman , Sasha Levin Subject: [PATCH AUTOSEL 4.14 43/67] staging: bcm2835-camera: fix timeout handling in wait_for_completion_timeout Date: Fri, 7 Sep 2018 00:37:53 +0000 Message-ID: <20180907003716.57737-43-alexander.levin@microsoft.com> References: <20180907003716.57737-1-alexander.levin@microsoft.com> In-Reply-To: <20180907003716.57737-1-alexander.levin@microsoft.com> Content-Language: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: From: Nicholas Mc Guire [ Upstream commit b7afce51d95726a619743aaad8870db66dfa1479 ] wait_for_completion_timeout returns unsigned long not int so a variable of proper type is introduced. Further the check for <=3D 0 is ambiguous and sh= ould be =3D=3D 0 here indicating timeout which is the only error case so no addi= tional check needed here. Signed-off-by: Nicholas Mc Guire Fixes: 7b3ad5abf027 ("staging: Import the BCM2835 MMAL-based V4L2 camera dr= iver.") Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- .../staging/vc04_services/bcm2835-camera/mmal-vchiq.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c b/dr= ivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c index 4360db6d4392..b3176f42c820 100644 --- a/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c +++ b/drivers/staging/vc04_services/bcm2835-camera/mmal-vchiq.c @@ -834,6 +834,7 @@ static int send_synchronous_mmal_msg(struct vchiq_mmal_= instance *instance, { struct mmal_msg_context *msg_context; int ret; + unsigned long timeout; =20 /* payload size must not cause message to exceed max size */ if (payload_len > @@ -872,11 +873,11 @@ static int send_synchronous_mmal_msg(struct vchiq_mma= l_instance *instance, return ret; } =20 - ret =3D wait_for_completion_timeout(&msg_context->u.sync.cmplt, 3 * HZ); - if (ret <=3D 0) { - pr_err("error %d waiting for sync completion\n", ret); - if (ret =3D=3D 0) - ret =3D -ETIME; + timeout =3D wait_for_completion_timeout(&msg_context->u.sync.cmplt, + 3 * HZ); + if (timeout =3D=3D 0) { + pr_err("timed out waiting for sync completion\n"); + ret =3D -ETIME; /* todo: what happens if the message arrives after aborting */ release_msg_context(msg_context); return ret; --=20 2.17.1