brcm2708: organize kernel patches
[openwrt/openwrt.git] / target / linux / brcm2708 / patches-4.19 / 950-0319-staging-mmal-vchiq-Always-return-the-param-size-from.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0319-staging-mmal-vchiq-Always-return-the-param-size-from.patch b/target/linux/brcm2708/patches-4.19/950-0319-staging-mmal-vchiq-Always-return-the-param-size-from.patch
new file mode 100644 (file)
index 0000000..121f855
--- /dev/null
@@ -0,0 +1,38 @@
+From 0c0e55d9b04868733f30c348df7400fa5e6d30e2 Mon Sep 17 00:00:00 2001
+From: Dave Stevenson <dave.stevenson@raspberrypi.org>
+Date: Wed, 13 Feb 2019 12:36:56 +0000
+Subject: [PATCH] staging: mmal-vchiq: Always return the param size
+ from param_get
+
+mmal-vchiq is a reimplementation of the userland library for MMAL.
+When getting a parameter, the client provides the storage and
+the size of the storage. The VPU then returns the size of the
+parameter that it wished to return, and as much as possible of
+that parameter is returned to the client.
+
+The implementation previously only returned the size provided
+by the VPU should it exceed the buffer size. So for parameters
+such as the supported encodings list the client had no idea
+how much of the provided storage had been populated.
+
+Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
+---
+ drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
++++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
+@@ -1413,11 +1413,12 @@ static int port_parameter_get(struct vch
+                */
+               memcpy(value, &rmsg->u.port_parameter_get_reply.value,
+                      *value_size);
+-              *value_size = rmsg->u.port_parameter_get_reply.size;
+       } else {
+               memcpy(value, &rmsg->u.port_parameter_get_reply.value,
+                      rmsg->u.port_parameter_get_reply.size);
+       }
++      /* Always report the size of the returned parameter to the caller */
++      *value_size = rmsg->u.port_parameter_get_reply.size;
+       pr_debug("%s:result:%d component:0x%x port:%d parameter:%d\n", __func__,
+                ret, port->component->handle, port->handle, parameter_id);