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

Commit 512c5231 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 ec5a4844 92d75382
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -198,8 +198,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
@@ -1852,9 +1852,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
@@ -463,7 +463,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]);
		}
@@ -482,9 +483,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;
				}
			}
@@ -499,8 +502,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);