if (dev->image) {
dprintk("allocating buffers again: %ld %ld\n",
dev->buffer_size * dev->buffers_number, dev->imagesize);
/* FIXME: prevent double allocation more intelligently! */
if (dev->buffer_size * dev->buffers_number == dev->imagesize)
return 0;
/* if there is only one writer, no problem should occur */
if (dev->open_count.counter == 1)
free_buffers(dev);
else
return -EINVAL;
}
I guess, v4l2-ctl makes counter == 1, and then the producer increases it to 2.
So, EINVAL is returned.
Step 2: Describe your environment
v4l2loopback
version: 0x0006020dkernel version: Linux MagicBookPro 6.2.0-26-generic #26~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Jul 13 16:27:29 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
Distribution (+version): _____
Step 3: Describe the problem:
Steps to reproduce:
sudo modprobe -r v4l2loopback && sudo modprobe v4l2loopback video_nr=10,11 max_buffers=8
Observed Results:
Relevant Code:
I guess, v4l2-ctl makes counter == 1, and then the producer increases it to 2. So, EINVAL is returned.