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

Commit b7cd2d9f authored by Tomas Winkler's avatar Tomas Winkler Committed by Greg Kroah-Hartman
Browse files

staging/mei: don't check if list is empty before looping



1. No need to check if a list is empty before list_for_each_ looping as
this is already checked by loop stopping conditional.

The side effect is reduced indentation depth
from:
	if (!list_empty)
		list_for_each()
to:
	list_for_each()

2. drop cb_ prefix from cl_pos, cl_next variables used in list_for_each
loops. The code is more compact and readable

Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent c8372094
Loading
Loading
Loading
Loading
+12 −19
Original line number Diff line number Diff line
@@ -48,20 +48,15 @@ void mei_io_list_init(struct mei_io_list *list)
 */
void mei_io_list_flush(struct mei_io_list *list, struct mei_cl *cl)
{
	struct mei_cl_cb *cb_pos = NULL;
	struct mei_cl_cb *cb_next = NULL;


	if (list_empty(&list->mei_cb.cb_list))
		return;
	struct mei_cl_cb *pos = NULL;
	struct mei_cl_cb *next = NULL;

	list_for_each_entry_safe(cb_pos, cb_next,
				 &list->mei_cb.cb_list, cb_list) {
		if (cb_pos) {
	list_for_each_entry_safe(pos, next, &list->mei_cb.cb_list, cb_list) {
		if (pos) {
			struct mei_cl *cl_tmp;
			cl_tmp = (struct mei_cl *)cb_pos->file_private;
			cl_tmp = (struct mei_cl *)pos->file_private;
			if (mei_cl_cmp_id(cl, cl_tmp))
				list_del(&cb_pos->cb_list);
				list_del(&pos->cb_list);
		}
	}
}
@@ -335,7 +330,6 @@ void mei_reset(struct mei_device *dev, int interrupts_enabled)
		}
	}
	/* remove all waiting requests */
	if (!list_empty(&dev->write_list.mei_cb.cb_list)) {
	list_for_each_entry_safe(cb_pos, cb_next,
			&dev->write_list.mei_cb.cb_list, cb_list) {
		if (cb_pos) {
@@ -345,7 +339,6 @@ void mei_reset(struct mei_device *dev, int interrupts_enabled)
		}
	}
}
}



+105 −122
Original line number Diff line number Diff line
@@ -412,9 +412,9 @@ static void mei_client_connect_response(struct mei_device *dev,
		dev->iamthif_state = MEI_IAMTHIF_IDLE;
		return;
	}
	if (!list_empty(&dev->ctrl_rd_list.mei_cb.cb_list)) {
	list_for_each_entry_safe(cb_pos, cb_next,
				&dev->ctrl_rd_list.mei_cb.cb_list, cb_list) {

		cl = (struct mei_cl *)cb_pos->file_private;
		if (!cl) {
			list_del(&cb_pos->cb_list);
@@ -430,7 +430,6 @@ static void mei_client_connect_response(struct mei_device *dev,
		}
	}
}
}

/**
 * mei_client_disconnect_response - disconnects from response irq routine
@@ -453,7 +452,6 @@ static void mei_client_disconnect_response(struct mei_device *dev,
			rs->host_addr,
			rs->status);

	if (!list_empty(&dev->ctrl_rd_list.mei_cb.cb_list)) {
	list_for_each_entry_safe(cb_pos, cb_next,
			&dev->ctrl_rd_list.mei_cb.cb_list, cb_list) {
		cl = (struct mei_cl *)cb_pos->file_private;
@@ -477,7 +475,6 @@ static void mei_client_disconnect_response(struct mei_device *dev,
		}
	}
}
}

/**
 * same_flow_addr - tells if they have the same address.
@@ -1222,7 +1219,7 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list,
{

	struct mei_cl *cl;
	struct mei_cl_cb *cb_pos = NULL, *cb_next = NULL;
	struct mei_cl_cb *pos = NULL, *next = NULL;
	struct mei_io_list *list;
	int ret;

@@ -1235,29 +1232,27 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list,
	dev_dbg(&dev->pdev->dev, "complete all waiting for write cb.\n");

	list = &dev->write_waiting_list;
	if (!list_empty(&list->mei_cb.cb_list)) {
		list_for_each_entry_safe(cb_pos, cb_next,
	list_for_each_entry_safe(pos, next,
			&list->mei_cb.cb_list, cb_list) {
			cl = (struct mei_cl *)cb_pos->file_private;
			if (cl) {
		cl = (struct mei_cl *)pos->file_private;
		if (cl == NULL)
			continue;

		cl->status = 0;
				list_del(&cb_pos->cb_list);
		list_del(&pos->cb_list);
		if (MEI_WRITING == cl->writing_state &&
				   (cb_pos->major_file_operations ==
						MEI_WRITE) &&
		   (pos->major_file_operations == MEI_WRITE) &&
		   (cl != &dev->iamthif_cl)) {
			dev_dbg(&dev->pdev->dev,
				"MEI WRITE COMPLETE\n");
					cl->writing_state =
							MEI_WRITE_COMPLETE;
					list_add_tail(&cb_pos->cb_list,
			cl->writing_state = MEI_WRITE_COMPLETE;
			list_add_tail(&pos->cb_list,
				&cmpl_list->mei_cb.cb_list);
		}
		if (cl == &dev->iamthif_cl) {
			dev_dbg(&dev->pdev->dev, "check iamthif flow control.\n");
			if (dev->iamthif_flow_control_pending) {
						ret =
						_mei_irq_thread_iamthif_read(
				ret = _mei_irq_thread_iamthif_read(
						dev, slots);
				if (ret)
					return ret;
@@ -1265,9 +1260,6 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list,
		}
	}

		}
	}

	if (dev->stop && !dev->wd_pending) {
		dev->wd_stopped = true;
		wake_up_interruptible(&dev->wait_stop_wd);
@@ -1312,24 +1304,24 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list,

	/* complete control write list CB */
	dev_dbg(&dev->pdev->dev, "complete control write list cb.\n");
	list_for_each_entry_safe(cb_pos, cb_next,
	list_for_each_entry_safe(pos, next,
				&dev->ctrl_wr_list.mei_cb.cb_list, cb_list) {
		cl = (struct mei_cl *) cb_pos->file_private;
		cl = (struct mei_cl *) pos->file_private;
		if (!cl) {
			list_del(&cb_pos->cb_list);
			list_del(&pos->cb_list);
			return -ENODEV;
		}
		switch (cb_pos->major_file_operations) {
		switch (pos->major_file_operations) {
		case MEI_CLOSE:
			/* send disconnect message */
			ret = _mei_irq_thread_close(dev, slots, cb_pos, cl, cmpl_list);
			ret = _mei_irq_thread_close(dev, slots, pos, cl, cmpl_list);
			if (ret)
				return ret;

			break;
		case MEI_READ:
			/* send flow control message */
			ret = _mei_irq_thread_read(dev, slots, cb_pos, cl, cmpl_list);
			ret = _mei_irq_thread_read(dev, slots, pos, cl, cmpl_list);
			if (ret)
				return ret;

@@ -1338,7 +1330,7 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list,
			/* connect message */
			if (!mei_other_client_is_connecting(dev, cl))
				continue;
			ret = _mei_irq_thread_ioctl(dev, slots, cb_pos, cl, cmpl_list);
			ret = _mei_irq_thread_ioctl(dev, slots, pos, cl, cmpl_list);
			if (ret)
				return ret;

@@ -1350,16 +1342,15 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list,

	}
	/* complete  write list CB */
	if (!list_empty(&dev->write_list.mei_cb.cb_list)) {
	dev_dbg(&dev->pdev->dev, "complete write list cb.\n");
		list_for_each_entry_safe(cb_pos, cb_next,
	list_for_each_entry_safe(pos, next,
			&dev->write_list.mei_cb.cb_list, cb_list) {
			cl = (struct mei_cl *)cb_pos->file_private;
		cl = (struct mei_cl *)pos->file_private;
		if (cl == NULL)
			continue;

			if (cl) {
		if (cl != &dev->iamthif_cl) {
					if (!mei_flow_ctrl_creds(dev,
						cl)) {
			if (!mei_flow_ctrl_creds(dev, cl)) {
				dev_dbg(&dev->pdev->dev,
					"No flow control"
				    " credentials for client"
@@ -1368,7 +1359,7 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list,
				continue;
			}
			ret = _mei_irq_thread_cmpl(dev, slots,
							    cb_pos,
					    pos,
					    cl, cmpl_list);
			if (ret)
				return ret;
@@ -1376,8 +1367,7 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list,
		} else if (cl == &dev->iamthif_cl) {
			/* IAMTHIF IOCTL */
			dev_dbg(&dev->pdev->dev, "complete amthi write cb.\n");
					if (!mei_flow_ctrl_creds(dev,
							cl)) {
			if (!mei_flow_ctrl_creds(dev, cl)) {
				dev_dbg(&dev->pdev->dev,
					"No flow control"
				    " credentials for amthi"
@@ -1387,17 +1377,15 @@ static int mei_irq_thread_write_handler(struct mei_io_list *cmpl_list,
			}
			ret = _mei_irq_thread_cmpl_iamthif(dev,
						slots,
								cb_pos,
						pos,
						cl,
						cmpl_list);
			if (ret)
				return ret;

		}
			}

	}
	}
	return 0;
}

@@ -1487,11 +1475,7 @@ void mei_timer(struct work_struct *work)
			amthi_complete_list = &dev->amthi_read_complete_list.
					mei_cb.cb_list;

			if (!list_empty(amthi_complete_list)) {

				list_for_each_entry_safe(cb_pos, cb_next,
							amthi_complete_list,
							cb_list) {
			list_for_each_entry_safe(cb_pos, cb_next, amthi_complete_list, cb_list) {

				cl_pos = cb_pos->file_object->private_data;

@@ -1499,7 +1483,6 @@ void mei_timer(struct work_struct *work)
				if (cl_pos == &dev->iamthif_cl)
					list_del(&cb_pos->cb_list);
			}
			}
			if (dev->iamthif_current_cb)
				mei_free_cb_private(dev->iamthif_current_cb);

+26 −30
Original line number Diff line number Diff line
@@ -228,17 +228,15 @@ struct mei_cl_cb *find_amthi_read_list_entry(
		struct file *file)
{
	struct mei_cl *cl_temp;
	struct mei_cl_cb *cb_pos = NULL;
	struct mei_cl_cb *cb_next = NULL;
	struct mei_cl_cb *pos = NULL;
	struct mei_cl_cb *next = NULL;

	if (!list_empty(&dev->amthi_read_complete_list.mei_cb.cb_list)) {
		list_for_each_entry_safe(cb_pos, cb_next,
	list_for_each_entry_safe(pos, next,
	    &dev->amthi_read_complete_list.mei_cb.cb_list, cb_list) {
			cl_temp = (struct mei_cl *)cb_pos->file_private;
		cl_temp = (struct mei_cl *)pos->file_private;
		if (cl_temp && cl_temp == &dev->iamthif_cl &&
				cb_pos->file_object == file)
				return cb_pos;
		}
			pos->file_object == file)
			return pos;
	}
	return NULL;
}
@@ -549,8 +547,8 @@ int amthi_write(struct mei_device *dev, struct mei_cl_cb *cb)
void mei_run_next_iamthif_cmd(struct mei_device *dev)
{
	struct mei_cl *cl_tmp;
	struct mei_cl_cb *cb_pos = NULL;
	struct mei_cl_cb *cb_next = NULL;
	struct mei_cl_cb *pos = NULL;
	struct mei_cl_cb *next = NULL;
	int status;

	if (!dev)
@@ -564,16 +562,15 @@ void mei_run_next_iamthif_cmd(struct mei_device *dev)
	dev->iamthif_timer = 0;
	dev->iamthif_file_object = NULL;

	if (!list_empty(&dev->amthi_cmd_list.mei_cb.cb_list)) {
	dev_dbg(&dev->pdev->dev, "complete amthi cmd_list cb.\n");

		list_for_each_entry_safe(cb_pos, cb_next,
	list_for_each_entry_safe(pos, next,
			&dev->amthi_cmd_list.mei_cb.cb_list, cb_list) {
			list_del(&cb_pos->cb_list);
			cl_tmp = (struct mei_cl *)cb_pos->file_private;
		list_del(&pos->cb_list);
		cl_tmp = (struct mei_cl *)pos->file_private;

		if (cl_tmp && cl_tmp == &dev->iamthif_cl) {
				status = amthi_write(dev, cb_pos);
			status = amthi_write(dev, pos);
			if (status) {
				dev_dbg(&dev->pdev->dev,
					"amthi write failed status = %d\n",
@@ -584,7 +581,6 @@ void mei_run_next_iamthif_cmd(struct mei_device *dev)
		}
	}
}
}

/**
 * mei_free_cb_private - free mei_cb_private related memory
+9 −12
Original line number Diff line number Diff line
@@ -198,20 +198,17 @@ static struct mei_cl_cb *find_read_list_entry(
		struct mei_device *dev,
		struct mei_cl *cl)
{
	struct mei_cl_cb *cb_pos = NULL;
	struct mei_cl_cb *cb_next = NULL;

	if (!list_empty(&dev->read_list.mei_cb.cb_list)) {
	struct mei_cl_cb *pos = NULL;
	struct mei_cl_cb *next = NULL;

	dev_dbg(&dev->pdev->dev, "remove read_list CB\n");
		list_for_each_entry_safe(cb_pos, cb_next,
	list_for_each_entry_safe(pos, next,
			&dev->read_list.mei_cb.cb_list, cb_list) {
		struct mei_cl *cl_temp;
			cl_temp = (struct mei_cl *)cb_pos->file_private;
		cl_temp = (struct mei_cl *)pos->file_private;

		if (mei_cl_cmp_id(cl, cl_temp))
				return cb_pos;
		}
			return pos;
	}
	return NULL;
}