On Tue, Sep 26, 2023 at 12:32:02AM +0300, Laurent Pinchart wrote: > Hi Sakari, > > Thank you for the patch. > > On Fri, Sep 22, 2023 at 05:22:37PM +0300, Sakari Ailus wrote: > > On VIDIOC_SUBDEV_[GS]_ROUTING, only return as many routes back to the user > > as there's room. Do not consider it an error if more routes existed. > > Simply inform the user there are more routes. > > > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > > --- > > .../userspace-api/media/v4l/vidioc-subdev-g-routing.rst | 4 ---- > > drivers/media/v4l2-core/v4l2-subdev.c | 8 ++------ > > 2 files changed, 2 insertions(+), 10 deletions(-) > > > > diff --git a/Documentation/userspace-api/media/v4l/vidioc-subdev-g-routing.rst b/Documentation/userspace-api/media/v4l/vidioc-subdev-g-routing.rst > > index ced53ea5f23c..99d3c15fd759 100644 > > --- a/Documentation/userspace-api/media/v4l/vidioc-subdev-g-routing.rst > > +++ b/Documentation/userspace-api/media/v4l/vidioc-subdev-g-routing.rst > > @@ -145,10 +145,6 @@ On success 0 is returned, on error -1 and the ``errno`` variable is set > > appropriately. The generic error codes are described at the > > :ref:`Generic Error Codes <gen-errors>` chapter. > > > > -ENOSPC > > - The application provided ``num_routes`` is not big enough to contain > > - all the available routes the subdevice exposes. > > - > > EINVAL > > The sink or source pad identifiers reference a non-existing pad, or reference > > pads of different types (ie. the sink_pad identifiers refers to a source pad). > > diff --git a/drivers/media/v4l2-core/v4l2-subdev.c b/drivers/media/v4l2-core/v4l2-subdev.c > > index 1bcc96cde6da..7871ec8a66d1 100644 > > --- a/drivers/media/v4l2-core/v4l2-subdev.c > > +++ b/drivers/media/v4l2-core/v4l2-subdev.c > > @@ -956,14 +956,10 @@ static long subdev_do_ioctl(struct file *file, unsigned int cmd, void *arg, > > > > krouting = &state->routing; > > > > - if (routing->len_routes < krouting->num_routes) { > > - routing->num_routes = krouting->num_routes; > > - return -ENOSPC; > > - } > > - > > memcpy((struct v4l2_subdev_route *)(uintptr_t)routing->routes, > > krouting->routes, > > - krouting->num_routes * sizeof(*krouting->routes)); > > + min(krouting->num_routes, krouting->len_routes) * > > This should be > > min(krouting->num_routes, routing->len_routes) * Thanks. I'll address this in v5. > > > + sizeof(*krouting->routes)); > > routing->num_routes = krouting->num_routes; > > > > return 0; -- Sakari Ailus