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

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

Merge "diag: Increment data ready only if it is first update"

parents ba38fd5c 6c26a58d
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -209,8 +209,10 @@ int diag_md_write(int id, unsigned char *buf, int len, int ctx)
			continue;

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

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

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

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