Commit 50b2677c authored by Dan Carpenter's avatar Dan Carpenter Committed by Greg Kroah-Hartman

staging: vchiq: Fix refcounting bug in buffer_from_host()

If we fail to queue the buffer then it can never be dequeued.  This can
lead to a forever loop in stop_streaming() when we wait for everything
to finish.

Fixes: 70ec64cc ("staging: bcm2835-camera: Ensure all buffers are returned on disable")
Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/20200722130651.GC220681@mwandaSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 908e757d
...@@ -441,6 +441,8 @@ buffer_from_host(struct vchiq_mmal_instance *instance, ...@@ -441,6 +441,8 @@ buffer_from_host(struct vchiq_mmal_instance *instance,
ret = vchiq_queue_kernel_message(instance->service_handle, &m, ret = vchiq_queue_kernel_message(instance->service_handle, &m,
sizeof(struct mmal_msg_header) + sizeof(struct mmal_msg_header) +
sizeof(m.u.buffer_from_host)); sizeof(m.u.buffer_from_host));
if (ret)
atomic_dec(&port->buffers_with_vpu);
vchiq_release_service(instance->service_handle); vchiq_release_service(instance->service_handle);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment