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

Commit 8537da1b authored by Hardik Arya's avatar Hardik Arya
Browse files

diag: Do not open diag node for same client again



Same diag client is added again to diag client map
due to not checking client pid in current client map
table. This is resulting in having same client twice
in diag client map table. The patch fixes this issue
by checking diag client table before adding new client.

Change-Id: Iaf2e8324f0f7753193dc9f7a87cb12ae6c83f26b
Signed-off-by: default avatarHardik Arya <harya@codeaurora.org>
parent 68e4ea58
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -306,6 +306,14 @@ static int diagchar_open(struct inode *inode, struct file *file)
	if (driver) {
		mutex_lock(&driver->diagchar_mutex);

		for (i = 0; i < driver->num_clients; i++) {
			if (driver->client_map[i].pid == current->tgid) {
				pr_err_ratelimited("diag: Client already present current->tgid: %d\n",
					current->tgid);
				mutex_unlock(&driver->diagchar_mutex);
				return -EEXIST;
			}
		}
		for (i = 0; i < driver->num_clients; i++)
			if (driver->client_map[i].pid == 0)
				break;
@@ -3623,9 +3631,12 @@ static ssize_t diagchar_read(struct file *file, char __user *buf, size_t count,
	int proc = 0;

	mutex_lock(&driver->diagchar_mutex);
	for (i = 0; i < driver->num_clients; i++)
		if (driver->client_map[i].pid == current->tgid)
	for (i = 0; i < driver->num_clients; i++) {
		if (driver->client_map[i].pid == current->tgid) {
			index = i;
			break;
		}
	}
	mutex_unlock(&driver->diagchar_mutex);

	if (index == -1) {