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

Commit c9ebd8b2 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "diag: Update mask pointers after reallocation"

parents 7c0a471a 76cb203a
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -922,11 +922,13 @@ static int diag_cmd_set_all_msg_mask(unsigned char *src_buf, int src_len,
	mask_info->status = (req->rt_mask) ? DIAG_CTRL_MASK_ALL_ENABLED :
					   DIAG_CTRL_MASK_ALL_DISABLED;
	for (i = 0; i < driver->msg_mask_tbl_count; i++, mask++) {
		if (mask && mask->ptr) {
			mutex_lock(&mask->lock);
			memset(mask->ptr, req->rt_mask,
			       mask->range * sizeof(uint32_t));
			mutex_unlock(&mask->lock);
		}
	}
	mutex_unlock(&driver->msg_mask_lock);
	mutex_unlock(&mask_info->lock);
	mutex_unlock(&driver->md_session_lock);
@@ -1337,6 +1339,8 @@ static int diag_cmd_set_log_mask(unsigned char *src_buf, int src_len,

	mutex_lock(&mask_info->lock);
	for (i = 0; i < MAX_EQUIP_ID && !status; i++, mask++) {
		if (!mask || !mask->ptr)
			continue;
		if (mask->equip_id != req->equip_id)
			continue;
		mutex_lock(&mask->lock);
@@ -1464,10 +1468,12 @@ static int diag_cmd_disable_log_mask(unsigned char *src_buf, int src_len,
		return -EINVAL;
	}
	for (i = 0; i < MAX_EQUIP_ID; i++, mask++) {
		if (mask && mask->ptr) {
			mutex_lock(&mask->lock);
			memset(mask->ptr, 0, mask->range);
			mutex_unlock(&mask->lock);
		}
	}
	mask_info->status = DIAG_CTRL_MASK_ALL_DISABLED;
	mutex_unlock(&driver->md_session_lock);
	if (diag_check_update(APPS_DATA, pid))
+20 −4
Original line number Diff line number Diff line
@@ -528,9 +528,8 @@ static void process_last_event_report(uint8_t *buf, uint32_t len,
	header = (struct diag_ctrl_last_event_report *)ptr;
	event_size = ((header->event_last_id / 8) + 1);
	if (event_size >= driver->event_mask_size) {
		DIAG_LOG(DIAG_DEBUG_CONTROL,
			"diag: In %s, receiving event mask size more that Apps can handle\n",
			 __func__);
		DIAG_LOG(DIAG_DEBUG_MASKS,
		"diag: receiving event mask size more that Apps can handle\n");
		temp = krealloc(driver->event_mask->ptr, event_size,
				GFP_KERNEL);
		if (!temp) {
@@ -669,6 +668,10 @@ static void process_ssid_range_report(uint8_t *buf, uint32_t len,
		mask_ptr = (struct diag_msg_mask_t *)msg_mask.ptr;
		found = 0;
		for (j = 0; j < driver->msg_mask_tbl_count; j++, mask_ptr++) {
			if (!mask_ptr || !ssid_range) {
				found = 1;
				break;
			}
			if (mask_ptr->ssid_first != ssid_range->ssid_first)
				continue;
			mutex_lock(&mask_ptr->lock);
@@ -687,6 +690,8 @@ static void process_ssid_range_report(uint8_t *buf, uint32_t len,

		new_size = (driver->msg_mask_tbl_count + 1) *
			   sizeof(struct diag_msg_mask_t);
		DIAG_LOG(DIAG_DEBUG_MASKS,
			"diag: receiving msg mask size more that Apps can handle\n");
		temp = krealloc(msg_mask.ptr, new_size, GFP_KERNEL);
		if (!temp) {
			pr_err("diag: In %s, Unable to add new ssid table to msg mask, ssid first: %d, last: %d\n",
@@ -695,6 +700,7 @@ static void process_ssid_range_report(uint8_t *buf, uint32_t len,
			continue;
		}
		msg_mask.ptr = temp;
		mask_ptr = (struct diag_msg_mask_t *)msg_mask.ptr;
		err = diag_create_msg_mask_table_entry(mask_ptr, ssid_range);
		if (err) {
			pr_err("diag: In %s, Unable to create a new msg mask table entry, first: %d last: %d err: %d\n",
@@ -741,6 +747,10 @@ static void diag_build_time_mask_update(uint8_t *buf,
	num_items = range->ssid_last - range->ssid_first + 1;

	for (i = 0; i < driver->bt_msg_mask_tbl_count; i++, build_mask++) {
		if (!build_mask) {
			found = 1;
			break;
		}
		if (build_mask->ssid_first != range->ssid_first)
			continue;
		found = 1;
@@ -751,7 +761,8 @@ static void diag_build_time_mask_update(uint8_t *buf,
			       __func__);
		}
		dest_ptr = build_mask->ptr;
		for (j = 0; j < build_mask->range; j++, mask_ptr++, dest_ptr++)
		for (j = 0; (j < build_mask->range) && mask_ptr && dest_ptr;
			j++, mask_ptr++, dest_ptr++)
			*(uint32_t *)dest_ptr |= *mask_ptr;
		mutex_unlock(&build_mask->lock);
		break;
@@ -759,8 +770,12 @@ static void diag_build_time_mask_update(uint8_t *buf,

	if (found)
		goto end;

	new_size = (driver->bt_msg_mask_tbl_count + 1) *
		   sizeof(struct diag_msg_mask_t);
	DIAG_LOG(DIAG_DEBUG_MASKS,
		"diag: receiving build time mask size more that Apps can handle\n");

	temp = krealloc(driver->build_time_mask->ptr, new_size, GFP_KERNEL);
	if (!temp) {
		pr_err("diag: In %s, unable to create a new entry for build time mask\n",
@@ -768,6 +783,7 @@ static void diag_build_time_mask_update(uint8_t *buf,
		goto end;
	}
	driver->build_time_mask->ptr = temp;
	build_mask = (struct diag_msg_mask_t *)driver->build_time_mask->ptr;
	err = diag_create_msg_mask_table_entry(build_mask, range);
	if (err) {
		pr_err("diag: In %s, Unable to create a new msg mask table entry, err: %d\n",