[PATCH] staging: vc04_services: preserve bcm2835_audio_write errors

Lucas Jeffrey posted 1 patch 2 months ago
drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c | 3 +++
1 file changed, 3 insertions(+)
[PATCH] staging: vc04_services: preserve bcm2835_audio_write errors
Posted by Lucas Jeffrey 2 months ago
When sending audio data in multiple packets, a successful later packet
could overwrite an earlier failure in status. This caused the function
to report success even if one packet was not queued.

Stop sending packets after the first failure to preserve the error.

Signed-off-by: Lucas Jeffrey <luquijeffrey@gmail.com>
---
 drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
index 3156cb8392f4..5ac23cfa7983 100644
--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
@@ -365,6 +365,9 @@ int bcm2835_audio_write(struct bcm2835_alsa_stream *alsa_stream,
 
 			status = vchiq_queue_kernel_message(vchiq_instance,
 							    instance->service_handle, src, bytes);
+			if (status)
+				break;
+
 			src += bytes;
 			count -= bytes;
 		}
-- 
2.43.0
Re: [PATCH] staging: vc04_services: preserve bcm2835_audio_write errors
Posted by Greg KH 1 month ago
On Mon, Aug 03, 2026 at 01:09:28AM -0300, Lucas Jeffrey wrote:
> When sending audio data in multiple packets, a successful later packet
> could overwrite an earlier failure in status. This caused the function
> to report success even if one packet was not queued.
> 
> Stop sending packets after the first failure to preserve the error.
> 
> Signed-off-by: Lucas Jeffrey <luquijeffrey@gmail.com>
> ---
>  drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
> index 3156cb8392f4..5ac23cfa7983 100644
> --- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
> +++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
> @@ -365,6 +365,9 @@ int bcm2835_audio_write(struct bcm2835_alsa_stream *alsa_stream,
>  
>  			status = vchiq_queue_kernel_message(vchiq_instance,
>  							    instance->service_handle, src, bytes);
> +			if (status)
> +				break;
> +
>  			src += bytes;
>  			count -= bytes;
>  		}
> -- 
> 2.43.0
> 
> 

Was this tested on the real hardware?

thanks,

greg k-h