summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDafna Hirschfeld <dafna.hirschfeld@collabora.com>2020-03-28 08:52:52 +0100
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>2020-04-14 12:02:46 +0200
commit967534cb49cd389b101848fa0c99dd8a1e961fbb (patch)
treef6c744f09e85d5adff0a78ae4a3945631483f17d
parent7a040cf303438c567fceb987f10cfd058619f2c9 (diff)
downloadlinux-967534cb49cd389b101848fa0c99dd8a1e961fbb.tar.gz
linux-967534cb49cd389b101848fa0c99dd8a1e961fbb.zip
media: vimc: keep the error value when adding an entity fails
Currently when the 'add' callback of an entity fails, a NULL is returned. This hides the error code of the failure and always returns -EINVAL. Replace return NULL with return ERR_PTR(ret) to improve debugging. Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
-rw-r--r--drivers/media/test_drivers/vimc/vimc-capture.c4
-rw-r--r--drivers/media/test_drivers/vimc/vimc-core.c11
-rw-r--r--drivers/media/test_drivers/vimc/vimc-debayer.c4
-rw-r--r--drivers/media/test_drivers/vimc/vimc-scaler.c4
-rw-r--r--drivers/media/test_drivers/vimc/vimc-sensor.c4
5 files changed, 15 insertions, 12 deletions
diff --git a/drivers/media/test_drivers/vimc/vimc-capture.c b/drivers/media/test_drivers/vimc/vimc-capture.c
index 23e740c1c5c0..8bafbf90cbf5 100644
--- a/drivers/media/test_drivers/vimc/vimc-capture.c
+++ b/drivers/media/test_drivers/vimc/vimc-capture.c
@@ -395,7 +395,7 @@ struct vimc_ent_device *vimc_cap_add(struct vimc_device *vimc,
/* Allocate the vimc_cap_device struct */
vcap = kzalloc(sizeof(*vcap), GFP_KERNEL);
if (!vcap)
- return NULL;
+ return ERR_PTR(-ENOMEM);
/* Initialize the media entity */
vcap->vdev.entity.name = vcfg_name;
@@ -476,5 +476,5 @@ err_clean_m_ent:
err_free_vcap:
kfree(vcap);
- return NULL;
+ return ERR_PTR(ret);
}
diff --git a/drivers/media/test_drivers/vimc/vimc-core.c b/drivers/media/test_drivers/vimc/vimc-core.c
index dab01cbc31d2..edac998f58d5 100644
--- a/drivers/media/test_drivers/vimc/vimc-core.c
+++ b/drivers/media/test_drivers/vimc/vimc-core.c
@@ -187,12 +187,15 @@ static int vimc_add_subdevs(struct vimc_device *vimc)
vimc->pipe_cfg->ents[i].name);
vimc->ent_devs[i] = vimc->pipe_cfg->ents[i].add(vimc,
vimc->pipe_cfg->ents[i].name);
- if (!vimc->ent_devs[i]) {
- dev_err(vimc->mdev.dev, "add new entity for %s\n",
- vimc->pipe_cfg->ents[i].name);
+ if (IS_ERR(vimc->ent_devs[i])) {
+ int err = PTR_ERR(vimc->ent_devs[i]);
+
+ dev_err(vimc->mdev.dev, "adding entity %s failed (%d)\n",
+ vimc->pipe_cfg->ents[i].name, err);
+ vimc->ent_devs[i] = NULL;
vimc_unregister_subdevs(vimc);
vimc_release_subdevs(vimc);
- return -EINVAL;
+ return err;
}
}
return 0;
diff --git a/drivers/media/test_drivers/vimc/vimc-debayer.c b/drivers/media/test_drivers/vimc/vimc-debayer.c
index baf6bf9f65b5..d591b6a6bcf0 100644
--- a/drivers/media/test_drivers/vimc/vimc-debayer.c
+++ b/drivers/media/test_drivers/vimc/vimc-debayer.c
@@ -532,7 +532,7 @@ struct vimc_ent_device *vimc_deb_add(struct vimc_device *vimc,
/* Allocate the vdeb struct */
vdeb = kzalloc(sizeof(*vdeb), GFP_KERNEL);
if (!vdeb)
- return NULL;
+ return ERR_PTR(-ENOMEM);
/* Create controls: */
v4l2_ctrl_handler_init(&vdeb->hdl, 2);
@@ -577,5 +577,5 @@ err_free_hdl:
err_free_vdeb:
kfree(vdeb);
- return NULL;
+ return ERR_PTR(ret);
}
diff --git a/drivers/media/test_drivers/vimc/vimc-scaler.c b/drivers/media/test_drivers/vimc/vimc-scaler.c
index 7521439747c5..6ea05dcebc31 100644
--- a/drivers/media/test_drivers/vimc/vimc-scaler.c
+++ b/drivers/media/test_drivers/vimc/vimc-scaler.c
@@ -483,7 +483,7 @@ struct vimc_ent_device *vimc_sca_add(struct vimc_device *vimc,
/* Allocate the vsca struct */
vsca = kzalloc(sizeof(*vsca), GFP_KERNEL);
if (!vsca)
- return NULL;
+ return ERR_PTR(-ENOMEM);
/* Initialize ved and sd */
vsca->pads[0].flags = MEDIA_PAD_FL_SINK;
@@ -495,7 +495,7 @@ struct vimc_ent_device *vimc_sca_add(struct vimc_device *vimc,
vsca->pads, &vimc_sca_ops);
if (ret) {
kfree(vsca);
- return NULL;
+ return ERR_PTR(ret);
}
vsca->ved.process_frame = vimc_sca_process_frame;
diff --git a/drivers/media/test_drivers/vimc/vimc-sensor.c b/drivers/media/test_drivers/vimc/vimc-sensor.c
index 92daee58209e..24ce5b70b97e 100644
--- a/drivers/media/test_drivers/vimc/vimc-sensor.c
+++ b/drivers/media/test_drivers/vimc/vimc-sensor.c
@@ -317,7 +317,7 @@ struct vimc_ent_device *vimc_sen_add(struct vimc_device *vimc,
/* Allocate the vsen struct */
vsen = kzalloc(sizeof(*vsen), GFP_KERNEL);
if (!vsen)
- return NULL;
+ return ERR_PTR(-ENOMEM);
v4l2_ctrl_handler_init(&vsen->hdl, 4);
@@ -372,5 +372,5 @@ err_free_hdl:
err_free_vsen:
kfree(vsen);
- return NULL;
+ return ERR_PTR(ret);
}