staging: bcm2835-camera: fix timeout handling in wait_for_completion_timeout
wait_for_completion_timeout returns unsigned long not int so a variable of
proper type is introduced. Further the check for <= 0 is ambiguous and should
be == 0 here indicating timeout which is the only error case so no additional
check needed here.
Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
Fixes: 7b3ad5abf0
("staging: Import the BCM2835 MMAL-based V4L2 camera driver.")
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1ef5c96081
commit
b7afce51d9
@ -630,6 +630,7 @@ static int send_synchronous_mmal_msg(struct vchiq_mmal_instance *instance,
|
||||
{
|
||||
struct mmal_msg_context *msg_context;
|
||||
int ret;
|
||||
unsigned long timeout;
|
||||
|
||||
/* payload size must not cause message to exceed max size */
|
||||
if (payload_len >
|
||||
@ -668,11 +669,11 @@ static int send_synchronous_mmal_msg(struct vchiq_mmal_instance *instance,
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = wait_for_completion_timeout(&msg_context->u.sync.cmplt, 3 * HZ);
|
||||
if (ret <= 0) {
|
||||
pr_err("error %d waiting for sync completion\n", ret);
|
||||
if (ret == 0)
|
||||
ret = -ETIME;
|
||||
timeout = wait_for_completion_timeout(&msg_context->u.sync.cmplt,
|
||||
3 * HZ);
|
||||
if (timeout == 0) {
|
||||
pr_err("timed out waiting for sync completion\n");
|
||||
ret = -ETIME;
|
||||
/* todo: what happens if the message arrives after aborting */
|
||||
release_msg_context(msg_context);
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user