Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6ed90e36 authored by Christian Gromm's avatar Christian Gromm Committed by Greg Kroah-Hartman
Browse files

staging: most: remove tainted flag



This patch removes the atomic tainted flag. It is needed to get rid of
logical overhead.

Signed-off-by: default avatarChristian Gromm <christian.gromm@microchip.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a0fceb1f
Loading
Loading
Loading
Loading
+1 −32
Original line number Diff line number Diff line
@@ -74,7 +74,6 @@ struct most_c_obj {

struct most_inst_obj {
	int dev_id;
	atomic_t tainted;
	struct most_interface *iface;
	struct list_head channel_list;
	struct most_c_obj *channel[MAX_CHANNELS];
@@ -1299,18 +1298,10 @@ static int arm_mbo_chain(struct most_c_obj *c, int dir,
 */
int most_submit_mbo(struct mbo *mbo)
{
	struct most_c_obj *c;
	struct most_inst_obj *i;

	if (unlikely((!mbo) || (!mbo->context))) {
		pr_err("Bad MBO or missing channel reference\n");
		return -EINVAL;
	}
	c = mbo->context;
	i = c->inst;

	if (unlikely(atomic_read(&i->tainted)))
		return -ENODEV;

	nq_hdm_mbo(mbo);
	return 0;
@@ -1436,17 +1427,8 @@ EXPORT_SYMBOL_GPL(most_get_mbo);
 */
void most_put_mbo(struct mbo *mbo)
{
	struct most_c_obj *c;
	struct most_inst_obj *i;

	c = mbo->context;
	i = c->inst;
	struct most_c_obj *c = mbo->context;

	if (unlikely(atomic_read(&i->tainted))) {
		mbo->status = MBO_E_CLOSE;
		trash_mbo(mbo);
		return;
	}
	if (c->cfg.direction == MOST_CH_TX) {
		arm_mbo(mbo);
		return;
@@ -1602,14 +1584,6 @@ int most_stop_channel(struct most_interface *iface, int id,
	c->hdm_enqueue_task = NULL;
	mutex_unlock(&c->stop_task_mutex);

	mutex_lock(&deregister_mutex);
	if (atomic_read(&c->inst->tainted)) {
		mutex_unlock(&deregister_mutex);
		mutex_unlock(&c->start_mutex);
		return -ENODEV;
	}
	mutex_unlock(&deregister_mutex);

	if (iface->mod && modref) {
		module_put(iface->mod);
		modref--;
@@ -1750,7 +1724,6 @@ struct kobject *most_register_interface(struct most_interface *iface)
	INIT_LIST_HEAD(&inst->channel_list);
	inst->iface = iface;
	inst->dev_id = id;
	atomic_set(&inst->tainted, 0);
	list_add_tail(&inst->list, &instance_list);

	for (i = 0; i < iface->num_channels; i++) {
@@ -1835,10 +1808,6 @@ void most_deregister_interface(struct most_interface *iface)
		c->aim1.ptr = NULL;
	}

	mutex_lock(&deregister_mutex);
	atomic_set(&i->tainted, 1);
	mutex_unlock(&deregister_mutex);

	while (modref) {
		if (iface->mod && modref)
			module_put(iface->mod);