[libcamera-devel] [PATCH] utils: ipc: Fix deserialization of multiple fd parameters
Paul Elder
paul.elder at ideasonboard.com
Tue Dec 12 09:47:45 CET 2023
On Mon, Dec 11, 2023 at 01:45:20PM +0000, Kieran Bingham wrote:
> Quoting Paul Elder via libcamera-devel (2023-12-11 10:56:38)
> > There was a bug where the code generated for deserialization of function
> > parameters would fail if there were multiple file descriptor parameters.
>
> Why? It's hard to decifer that code change. Probably especially as
> there's very little context in the patch.
I suppose more clearly it's "the deserialization code wouldn't be
generated for the last file descriptor parameter".
>
> Was it previously not expecting FileDescriptors in the last entry?
It was an optimization to get rid of unused code iirc. Evidently I
didn't test it with multiple fd parameters.
>
> > Fix this.
>
> by ... processing the fds on each iteration?
Yes :) As opposed to skipping the last one.
Paul
>
> >
> > Bug: https://bugs.libcamera.org/show_bug.cgi?id=205
> > Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> > ---
> > utils/ipc/generators/libcamera_templates/proxy_functions.tmpl | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl b/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl
> > index 2be65d432..b5797b149 100644
> > --- a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl
> > +++ b/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl
> > @@ -186,7 +186,7 @@ IPADataSerializer<{{param|name}}>::deserialize(
> > {% for param in params|with_fds %}
> > {%- if loop.first %}
> > const size_t {{param.mojom_name}}FdStart = 0;
> > -{%- elif not loop.last %}
> > +{%- else %}
> > const size_t {{param.mojom_name}}FdStart = {{loop.previtem.mojom_name}}FdStart + {{loop.previtem.mojom_name}}FdsSize;
> > {%- endif %}
> > {%- endfor %}
> > --
> > 2.39.2
> >
More information about the libcamera-devel
mailing list