@@ -1124,7 +1124,10 @@ static long do_video_ioctl(struct file *file, unsigned int cmd, unsigned long ar
case VIDIOC_SUBDEV_G_ROUTING:
case VIDIOC_SUBDEV_S_ROUTING:
- err = get_v4l2_subdev_routing(&karg.subdev_routing, up);
+ err = alloc_userspace(sizeof(struct v4l2_subdev_routing),
+ 0, &up_native);
+ if (!err)
+ err = get_v4l2_subdev_routing(up_native, up);
compatible_arg = 0;
break;
@@ -1257,7 +1260,7 @@ static long do_video_ioctl(struct file *file, unsigned int cmd, unsigned long ar
break;
case VIDIOC_SUBDEV_G_ROUTING:
case VIDIOC_SUBDEV_S_ROUTING:
- err = put_v4l2_subdev_routing(&karg.subdev_routing, up);
+ err = put_v4l2_subdev_routing(up_native, up);
break;
}
if (err)
Implement compat IOCTL handling for VIDIOC_SUBDEV_G_ROUTING and VIDIOC_SUBDEV_S_ROUTING IOCTLs. Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> --- drivers/media/v4l2-core/v4l2-compat-ioctl32.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) Hi Sakari, With this fix on-top of your vc branch I get it work with v4.16-rc1, feel free to squash it into your branch where appropriate. I tested this with a ARM64 kernel and a ARM user-land with v4l2-ctl + my --{get,set}-routing patches for v4l-utils. // Niklas