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

Commit 22fdca53 authored by Lee Jones's avatar Lee Jones
Browse files

Revert "ANDROID: dm-bow: Protect Ranges fetched and erased from the RB tree"



This reverts commit 5b194414.

Reason for revert: Needs rework - causes unforeseen deadlock.

Bug: 227141277
Signed-off-by: default avatarLee Jones <joneslee@google.com>
Change-Id: Idc442f6504de071eaf81a05f72b6db94dc16e333
parent cf4c1557
Loading
Loading
Loading
Loading
+4 −13
Original line number Original line Diff line number Diff line
@@ -236,7 +236,6 @@ static void set_type(struct bow_context *bc, struct bow_range **br, int type)


	(*br)->type = type;
	(*br)->type = type;


	mutex_lock(&bc->ranges_lock);
	if (next->type == type) {
	if (next->type == type) {
		if (type == TRIMMED)
		if (type == TRIMMED)
			list_del(&next->trimmed_list);
			list_del(&next->trimmed_list);
@@ -250,7 +249,6 @@ static void set_type(struct bow_context *bc, struct bow_range **br, int type)
		rb_erase(&(*br)->node, &bc->ranges);
		rb_erase(&(*br)->node, &bc->ranges);
		kfree(*br);
		kfree(*br);
	}
	}
	mutex_unlock(&bc->ranges_lock);


	*br = NULL;
	*br = NULL;
}
}
@@ -601,7 +599,6 @@ static void dm_bow_dtr(struct dm_target *ti)
	struct bow_context *bc = (struct bow_context *) ti->private;
	struct bow_context *bc = (struct bow_context *) ti->private;
	struct kobject *kobj;
	struct kobject *kobj;


	mutex_lock(&bc->ranges_lock);
	while (rb_first(&bc->ranges)) {
	while (rb_first(&bc->ranges)) {
		struct bow_range *br = container_of(rb_first(&bc->ranges),
		struct bow_range *br = container_of(rb_first(&bc->ranges),
						    struct bow_range, node);
						    struct bow_range, node);
@@ -609,8 +606,6 @@ static void dm_bow_dtr(struct dm_target *ti)
		rb_erase(&br->node, &bc->ranges);
		rb_erase(&br->node, &bc->ranges);
		kfree(br);
		kfree(br);
	}
	}
	mutex_unlock(&bc->ranges_lock);

	if (bc->workqueue)
	if (bc->workqueue)
		destroy_workqueue(bc->workqueue);
		destroy_workqueue(bc->workqueue);
	if (bc->bufio)
	if (bc->bufio)
@@ -1187,7 +1182,6 @@ static void dm_bow_tablestatus(struct dm_target *ti, char *result,
		return;
		return;
	}
	}


	mutex_lock(&bc->ranges_lock);
	for (i = rb_first(&bc->ranges); i; i = rb_next(i)) {
	for (i = rb_first(&bc->ranges); i; i = rb_next(i)) {
		struct bow_range *br = container_of(i, struct bow_range, node);
		struct bow_range *br = container_of(i, struct bow_range, node);


@@ -1195,11 +1189,11 @@ static void dm_bow_tablestatus(struct dm_target *ti, char *result,
				    readable_type[br->type],
				    readable_type[br->type],
				    (unsigned long long)br->sector);
				    (unsigned long long)br->sector);
		if (result >= end)
		if (result >= end)
			goto unlock;
			return;


		result += scnprintf(result, end - result, "\n");
		result += scnprintf(result, end - result, "\n");
		if (result >= end)
		if (result >= end)
			goto unlock;
			return;


		if (br->type == TRIMMED)
		if (br->type == TRIMMED)
			++trimmed_range_count;
			++trimmed_range_count;
@@ -1221,22 +1215,19 @@ static void dm_bow_tablestatus(struct dm_target *ti, char *result,
		if (!rb_next(i)) {
		if (!rb_next(i)) {
			scnprintf(result, end - result,
			scnprintf(result, end - result,
				  "\nERROR: Last range not of type TOP");
				  "\nERROR: Last range not of type TOP");
			goto unlock;
			return;
		}
		}


		if (br->sector > range_top(br)) {
		if (br->sector > range_top(br)) {
			scnprintf(result, end - result,
			scnprintf(result, end - result,
				  "\nERROR: sectors out of order");
				  "\nERROR: sectors out of order");
			goto unlock;
			return;
		}
		}
	}
	}


	if (trimmed_range_count != trimmed_list_length)
	if (trimmed_range_count != trimmed_list_length)
		scnprintf(result, end - result,
		scnprintf(result, end - result,
			  "\nERROR: not all trimmed ranges in trimmed list");
			  "\nERROR: not all trimmed ranges in trimmed list");

unlock:
	mutex_unlock(&bc->ranges_lock);
}
}


static void dm_bow_status(struct dm_target *ti, status_type_t type,
static void dm_bow_status(struct dm_target *ti, status_type_t type,