Commit 798d2ad7 authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab

media: atomisp: add error checking to atomisp_create_pipes_stream()

The functions called by atomisp_create_pipes_stream() can fail,
add error checking for them.

Link: https://lore.kernel.org/linux-media/20220615205037.16549-35-hdegoede@redhat.comReviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 3bde235b
...@@ -240,7 +240,7 @@ int atomisp_css_input_configure_port(struct atomisp_sub_device *asd, ...@@ -240,7 +240,7 @@ int atomisp_css_input_configure_port(struct atomisp_sub_device *asd,
unsigned int metadata_width, unsigned int metadata_width,
unsigned int metadata_height); unsigned int metadata_height);
void atomisp_create_pipes_stream(struct atomisp_sub_device *asd); int atomisp_create_pipes_stream(struct atomisp_sub_device *asd);
void atomisp_destroy_pipes_stream_force(struct atomisp_sub_device *asd); void atomisp_destroy_pipes_stream_force(struct atomisp_sub_device *asd);
void atomisp_css_stop(struct atomisp_sub_device *asd, void atomisp_css_stop(struct atomisp_sub_device *asd,
......
...@@ -785,10 +785,24 @@ static int __create_pipes(struct atomisp_sub_device *asd) ...@@ -785,10 +785,24 @@ static int __create_pipes(struct atomisp_sub_device *asd)
return -EINVAL; return -EINVAL;
} }
void atomisp_create_pipes_stream(struct atomisp_sub_device *asd) int atomisp_create_pipes_stream(struct atomisp_sub_device *asd)
{ {
__create_pipes(asd); int ret;
__create_streams(asd);
ret = __create_pipes(asd);
if (ret) {
dev_err(asd->isp->dev, "create pipe failed %d.\n", ret);
return ret;
}
ret = __create_streams(asd);
if (ret) {
dev_warn(asd->isp->dev, "create stream failed %d.\n", ret);
__destroy_pipes(asd, true);
return ret;
}
return 0;
} }
int atomisp_css_update_stream(struct atomisp_sub_device *asd) int atomisp_css_update_stream(struct atomisp_sub_device *asd)
......
...@@ -2267,8 +2267,17 @@ int __atomisp_streamoff(struct file *file, void *fh, enum v4l2_buf_type type) ...@@ -2267,8 +2267,17 @@ int __atomisp_streamoff(struct file *file, void *fh, enum v4l2_buf_type type)
dev_err(isp->dev, "atomisp_reset"); dev_err(isp->dev, "atomisp_reset");
atomisp_reset(isp); atomisp_reset(isp);
for (i = 0; i < isp->num_of_streams; i++) { for (i = 0; i < isp->num_of_streams; i++) {
if (recreate_streams[i]) if (recreate_streams[i]) {
atomisp_create_pipes_stream(&isp->asd[i]); int ret2;
ret2 = atomisp_create_pipes_stream(&isp->asd[i]);
if (ret2) {
dev_err(isp->dev, "%s error re-creating streams: %d\n",
__func__, ret2);
if (!ret)
ret = ret2;
}
}
} }
isp->isp_timeout = false; isp->isp_timeout = false;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment