Hi Sasha,
I have no specific objections against the backporting of this and other atomisp related patches.
But in general the atomisp driver is not yet in a state where it is ready to be used by normal users. Progress is being made but atm I don't really expect normal users to have it enabled / in active use.
As such I'm also not sure if there is much value in backporting atomisp changes to the stable series.
I don't know if you have a way to opt out certain drivers / file-paths from stable series backporting, but if you do you may want to consider opting out everything under:
drivers/staging/media/atomisp/
As said above I don't think doing the backports offers much (if any) value to end users and I assume it does take you some time, so opting this path out might be better.
Also given the fragile state of atomisp support atm it is hard to say for me if partially backporting some of the changes won't break the driver.
Regards,
Hans
On 11/1/22 12:27, Sasha Levin wrote:
From: Hans de Goede hdegoede@redhat.com
[ Upstream commit adea153b4f6537f367fe77abada263fde8a1f7b6 ]
On sets actually store the set (closest) format inside ov2680_device.dev, so that it also properly gets returned by get_fmt.
This fixes the following problem:
- App does an VIDIOC_SET_FMT 640x480, calling ov2680_set_fmt()
- Internal buffers (atomisp_create_pipes_stream()) get allocated at 640x480 size by atomisp_set_fmt()
- ov2680_get_fmt() gets called later on and returns 1600x1200 since ov2680_device.dev was not updated. So things get configured to stream at 1600x1200, but the internal buffers created during atomisp_create_pipes_stream() do not get updated in size
- streaming starts, internal buffers overflow and the entire machine freezes eventually due to memory being corrupted
Reviewed-by: Andy Shevchenko andy.shevchenko@gmail.com Signed-off-by: Hans de Goede hdegoede@redhat.com Signed-off-by: Mauro Carvalho Chehab mchehab@kernel.org Signed-off-by: Sasha Levin sashal@kernel.org
drivers/staging/media/atomisp/i2c/atomisp-ov2680.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c index 4ba99c660681..ab52e35266bb 100644 --- a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c +++ b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c @@ -894,11 +894,7 @@ static int ov2680_set_fmt(struct v4l2_subdev *sd, if (v_flag) ov2680_v_flip(sd, v_flag);
- /*
* ret = startup(sd);
* if (ret)
* dev_err(&client->dev, "ov2680 startup err\n");
*/
- dev->res = res;
err: mutex_unlock(&dev->input_lock); return ret;