Skip to content

v4l2loopback-dc is incompatible with Linux 6.15+ #291

Closed

Description

@Jamim

Describe the bug
Due to removal of some functions in Linux 6.15, v4l2loopback-dc build fails.

Expected behavior
v4l2loopback-dc builds successfully with Linux kernel 6.15+.

Additional context
I use Gentoo Linux, so here is my emerge droidcam log:
droidcam-2.1.3:20250529-070836.log

Activity

  1. amfern commented on May 31, 2025

    @amfern
    Contributor

    this suppose to address it #292

  2. Jamim commented on May 31, 2025

    @Jamim
    Author

    Hello @amfern,

    Thanks for your effort! 🙇🏼
    Unfortunately, it looks like that PR fixes only one of missing functions.

    click to see all the errors

    v4l2loopback-dc.c: In function ‘buffer_written’:
    v4l2loopback-dc.c:1514:3: error: implicit declaration of function ‘del_timer_sync’ [-Wimplicit-function-declaration]
     1514 |   del_timer_sync(&dev->sustain_timer);
          |   ^~~~~~~~~~~~~~
    v4l2loopback-dc.c: At top level:
    v4l2loopback-dc.c:2347:4: error: ‘const struct v4l2_ioctl_ops’ has no member named ‘vidioc_queryctrl’; did you mean ‘vidioc_querycap’?
     2347 |   .vidioc_queryctrl         = &vidioc_queryctrl,
          |    ^~~~~~~~~~~~~~~~
          |    vidioc_querycap
    v4l2loopback-dc.c:2347:31: error: initialization of ‘int (*)(struct file *, void *, struct v4l2_dv_timings *)’ from incompatible pointer type ‘int (*)(struct fi
    le *, void *, struct v4l2_queryctrl *)’ [-Wincompatible-pointer-types]
     2347 |   .vidioc_queryctrl         = &vidioc_queryctrl,
          |                               ^
    v4l2loopback-dc.c:2347:31: note: (near initialization for ‘v4l2_loopback_ioctl_ops.vidioc_s_dv_timings’)
    v4l2loopback-dc.c:1151:1: note: ‘vidioc_queryctrl’ declared here
     1151 | vidioc_queryctrl(struct file *file, void *fh,
          | ^~~~~~~~~~~~~~~~
    v4l2loopback-dc.c:2348:4: error: ‘const struct v4l2_ioctl_ops’ has no member named ‘vidioc_g_ctrl’; did you mean ‘vidioc_g_std’?
     2348 |   .vidioc_g_ctrl            = &vidioc_g_ctrl,
          |    ^~~~~~~~~~~~~
          |    vidioc_g_std
    v4l2loopback-dc.c:2348:31: error: initialization of ‘int (*)(struct file *, void *, struct v4l2_dv_timings *)’ from incompatible pointer type ‘int (*)(struct file *, void *, struct v4l2_control *)’ [-Wincompatible-pointer-types]
     2348 |   .vidioc_g_ctrl            = &vidioc_g_ctrl,
          |                               ^
    v4l2loopback-dc.c:2348:31: note: (near initialization for ‘v4l2_loopback_ioctl_ops.vidioc_g_dv_timings’)
    v4l2loopback-dc.c:1200:1: note: ‘vidioc_g_ctrl’ declared here
     1200 | vidioc_g_ctrl(struct file *file, void *fh,
          | ^~~~~~~~~~~~~
    v4l2loopback-dc.c:2349:4: error: ‘const struct v4l2_ioctl_ops’ has no member named ‘vidioc_s_ctrl’; did you mean ‘vidioc_s_std’?
     2349 |   .vidioc_s_ctrl            = &vidioc_s_ctrl,
          |    ^~~~~~~~~~~~~
          |    vidioc_s_std
    v4l2loopback-dc.c:2349:31: error: initialization of ‘int (*)(struct file *, void *, struct v4l2_dv_timings *)’ from incompatible pointer type ‘int (*)(struct file *, void *, struct v4l2_control *)’ [-Wincompatible-pointer-types]
     2349 |   .vidioc_s_ctrl            = &vidioc_s_ctrl,
          |                               ^
    v4l2loopback-dc.c:2349:31: note: (near initialization for ‘v4l2_loopback_ioctl_ops.vidioc_query_dv_timings’)
    v4l2loopback-dc.c:1227:1: note: ‘vidioc_s_ctrl’ declared here
     1227 | vidioc_s_ctrl(struct file *file, void *fh,
          | ^~~~~~~~~~~~~

  3. amfern commented on May 31, 2025

    @amfern
    Contributor

    Hi @Jamim

    I updated the PR and tested that the driver works on arch distro, can you check again?

  4. Jamim commented on Jun 1, 2025

    @Jamim
    Author

    Hi @Jamim

    I updated the PR and tested that the driver works on test distro, can you check again?

    Now it builds and works fine on Linux 6.15 🎉
    Thank you, @amfern!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions