Commit 967534cb authored by Dafna Hirschfeld's avatar Dafna Hirschfeld Committed by Mauro Carvalho Chehab
Browse files

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: default avatarDafna Hirschfeld <dafna.hirschfeld@collabora.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 7a040cf3
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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);
}
+7 −4
Original line number Diff line number Diff line
@@ -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;
+2 −2
Original line number Diff line number Diff line
@@ -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);
}
+2 −2
Original line number Diff line number Diff line
@@ -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;
+2 −2
Original line number Diff line number Diff line
@@ -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);
}