Commit b74a8932 authored by Nicolas Saenz Julienne's avatar Nicolas Saenz Julienne Committed by Greg Kroah-Hartman

staging: vc04_services: bcm2835-audio: Use vchi_msg_hold()

vchi_msg_dequeue() provides the same functionality as vchi_msg_hold()
except it copies the message data as opposed to the later which provides
the data in place.

The copying is done on a local variable, so there is no need to keep the
message out the function's bounds, so use vchi_msg_hold() instead.
Signed-off-by: default avatarNicolas Saenz Julienne <nsaenzjulienne@suse.de>
Link: https://lore.kernel.org/r/20200629150945.10720-14-nsaenzjulienne@suse.deSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5a8e22e3
......@@ -94,31 +94,34 @@ static void audio_vchi_callback(void *param,
void *msg_handle)
{
struct bcm2835_audio_instance *instance = param;
struct vc_audio_msg m;
int msg_len;
struct vchi_held_msg handle;
struct vc_audio_msg *m;
unsigned size;
int status;
if (reason != VCHI_CALLBACK_MSG_AVAILABLE)
return;
status = vchi_msg_dequeue(instance->service,
&m, sizeof(m), &msg_len, VCHI_FLAGS_NONE);
status = vchi_msg_hold(instance->service, (void **)&m, &size,
VCHI_FLAGS_NONE, &handle);
if (status)
return;
if (m.type == VC_AUDIO_MSG_TYPE_RESULT) {
instance->result = m.result.success;
if (m->type == VC_AUDIO_MSG_TYPE_RESULT) {
instance->result = m->result.success;
complete(&instance->msg_avail_comp);
} else if (m.type == VC_AUDIO_MSG_TYPE_COMPLETE) {
if (m.complete.cookie1 != VC_AUDIO_WRITE_COOKIE1 ||
m.complete.cookie2 != VC_AUDIO_WRITE_COOKIE2)
} else if (m->type == VC_AUDIO_MSG_TYPE_COMPLETE) {
if (m->complete.cookie1 != VC_AUDIO_WRITE_COOKIE1 ||
m->complete.cookie2 != VC_AUDIO_WRITE_COOKIE2)
dev_err(instance->dev, "invalid cookie\n");
else
bcm2835_playback_fifo(instance->alsa_stream,
m.complete.count);
m->complete.count);
} else {
dev_err(instance->dev, "unexpected callback type=%d\n", m.type);
dev_err(instance->dev, "unexpected callback type=%d\n", m->type);
}
vchi_held_msg_release(&handle);
}
static int
......
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