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

Commit 6c26a58d authored by Sreelakshmi Gownipalli's avatar Sreelakshmi Gownipalli Committed by Gerrit - the friendly Code Review server
Browse files

diag: Increment data ready only if it is first update



Increment data ready only if it is not incremented earlier.

Change-Id: Ia61e638bcf18e17dfe4bef15fc8ed4168b4c1891
Signed-off-by: default avatarSreelakshmi Gownipalli <sgownipa@codeaurora.org>
parent f97b2c4e
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -209,8 +209,10 @@ int diag_md_write(int id, unsigned char *buf, int len, int ctx)
			continue;
			continue;


		found = 1;
		found = 1;
		if (!(driver->data_ready[i] & USER_SPACE_DATA_TYPE)) {
			driver->data_ready[i] |= USER_SPACE_DATA_TYPE;
			driver->data_ready[i] |= USER_SPACE_DATA_TYPE;
			atomic_inc(&driver->data_ready_notif[i]);
			atomic_inc(&driver->data_ready_notif[i]);
		}
		pr_debug("diag: wake up logging process\n");
		pr_debug("diag: wake up logging process\n");
		wake_up_interruptible(&driver->wait_q);
		wake_up_interruptible(&driver->wait_q);
	}
	}
+4 −3
Original line number Original line Diff line number Diff line
@@ -1835,9 +1835,10 @@ static int diag_ioctl_lsm_deinit(void)
		mutex_unlock(&driver->diagchar_mutex);
		mutex_unlock(&driver->diagchar_mutex);
		return -EINVAL;
		return -EINVAL;
	}
	}

	if (!(driver->data_ready[i] & DEINIT_TYPE)) {
		driver->data_ready[i] |= DEINIT_TYPE;
		driver->data_ready[i] |= DEINIT_TYPE;
		atomic_inc(&driver->data_ready_notif[i]);
		atomic_inc(&driver->data_ready_notif[i]);
	}
	mutex_unlock(&driver->diagchar_mutex);
	mutex_unlock(&driver->diagchar_mutex);
	wake_up_interruptible(&driver->wait_q);
	wake_up_interruptible(&driver->wait_q);


+10 −5
Original line number Original line Diff line number Diff line
@@ -457,7 +457,8 @@ void diag_update_userspace_clients(unsigned int type)


	mutex_lock(&driver->diagchar_mutex);
	mutex_lock(&driver->diagchar_mutex);
	for (i = 0; i < driver->num_clients; i++)
	for (i = 0; i < driver->num_clients; i++)
		if (driver->client_map[i].pid != 0) {
		if (driver->client_map[i].pid != 0 &&
			!(driver->data_ready[i] & type)) {
			driver->data_ready[i] |= type;
			driver->data_ready[i] |= type;
			atomic_inc(&driver->data_ready_notif[i]);
			atomic_inc(&driver->data_ready_notif[i]);
		}
		}
@@ -477,9 +478,11 @@ void diag_update_md_clients(unsigned int type)
				if (driver->client_map[j].pid != 0 &&
				if (driver->client_map[j].pid != 0 &&
					driver->client_map[j].pid ==
					driver->client_map[j].pid ==
					driver->md_session_map[i]->pid) {
					driver->md_session_map[i]->pid) {
					if (!(driver->data_ready[i] & type)) {
						driver->data_ready[j] |= type;
						driver->data_ready[j] |= type;
						atomic_inc(
						atomic_inc(
						&driver->data_ready_notif[j]);
						&driver->data_ready_notif[j]);
					}
					break;
					break;
				}
				}
			}
			}
@@ -495,8 +498,10 @@ void diag_update_sleeping_process(int process_id, int data_type)
	mutex_lock(&driver->diagchar_mutex);
	mutex_lock(&driver->diagchar_mutex);
	for (i = 0; i < driver->num_clients; i++)
	for (i = 0; i < driver->num_clients; i++)
		if (driver->client_map[i].pid == process_id) {
		if (driver->client_map[i].pid == process_id) {
			if (!(driver->data_ready[i] & data_type)) {
				driver->data_ready[i] |= data_type;
				driver->data_ready[i] |= data_type;
				atomic_inc(&driver->data_ready_notif[i]);
				atomic_inc(&driver->data_ready_notif[i]);
			}
			break;
			break;
		}
		}
	wake_up_interruptible(&driver->wait_q);
	wake_up_interruptible(&driver->wait_q);