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

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

Merge "qseecom: fix an error related to app name comparision"

parents 3fec3dfe b45a2950
Loading
Loading
Loading
Loading
+22 −20
Original line number Diff line number Diff line
/*Qualcomm Secure Execution Environment Communicator (QSEECOM) driver
 *
 * Copyright (c) 2012-2015, The Linux Foundation. All rights reserved.
 * Copyright (c) 2012-2016, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -1765,9 +1765,7 @@ static int __qseecom_check_app_exists(struct qseecom_check_app_ireq req)
	spin_lock_irqsave(&qseecom.registered_app_list_lock, flags);
	list_for_each_entry(entry,
			&qseecom.registered_app_list_head, list) {
		if (!memcmp(entry->app_name,
				req.app_name,
				strlen(req.app_name))) {
		if (!strcmp(entry->app_name, req.app_name)) {
			found_app = true;
			break;
		}
@@ -1987,6 +1985,16 @@ static int qseecom_load_app(struct qseecom_dev_handle *data, void __user *argp)
		entry->app_id = app_id;
		entry->ref_cnt = 1;
		entry->app_arch = load_img_req.app_arch;
		/*
		* keymaster app may be first loaded as "keymaste" by qseecomd,
		* and then used as "keymaster" on some targets. To avoid app
		* name checking error, register "keymaster" into app_list and
		* thread private data.
		*/
		if (!strcmp(load_img_req.img_name, "keymaste"))
			strlcpy(entry->app_name, "keymaster",
					MAX_APP_NAME_SIZE);
		else
			strlcpy(entry->app_name, load_img_req.img_name,
					MAX_APP_NAME_SIZE);
		entry->app_blocked = false;
@@ -2006,6 +2014,9 @@ static int qseecom_load_app(struct qseecom_dev_handle *data, void __user *argp)
	}
	data->client.app_id = app_id;
	data->client.app_arch = load_img_req.app_arch;
	if (!strcmp(load_img_req.img_name, "keymaste"))
		strlcpy(data->client.app_name, "keymaster", MAX_APP_NAME_SIZE);
	else
		strlcpy(data->client.app_name, load_img_req.img_name,
					MAX_APP_NAME_SIZE);
	load_img_req.app_id = app_id;
@@ -2078,9 +2089,8 @@ static int qseecom_unload_app(struct qseecom_dev_handle *data,
		list_for_each_entry(ptr_app, &qseecom.registered_app_list_head,
									list) {
			if (ptr_app->app_id == data->client.app_id) {
				if (!memcmp((void *)ptr_app->app_name,
					(void *)data->client.app_name,
					strlen(data->client.app_name))) {
				if (!strcmp((void *)ptr_app->app_name,
					(void *)data->client.app_name)) {
					found_app = true;
					if (app_crash || ptr_app->ref_cnt == 1)
						unload = true;
@@ -2606,7 +2616,6 @@ static int __qseecom_send_cmd(struct qseecom_dev_handle *data,
	unsigned long flags;
	struct qseecom_registered_app_list *ptr_app;
	bool found_app = false;
	int name_len = 0;
	void *cmd_buf = NULL;
	size_t cmd_len;

@@ -2615,11 +2624,8 @@ static int __qseecom_send_cmd(struct qseecom_dev_handle *data,
	spin_lock_irqsave(&qseecom.registered_app_list_lock, flags);
	list_for_each_entry(ptr_app, &qseecom.registered_app_list_head,
							list) {
		name_len = min(strlen(data->client.app_name),
				strlen(ptr_app->app_name));
		if ((ptr_app->app_id == data->client.app_id) &&
			 (!memcmp(ptr_app->app_name,
				data->client.app_name, name_len))) {
			 (!strcmp(ptr_app->app_name, data->client.app_name))) {
			found_app = true;
			break;
		}
@@ -5811,9 +5817,7 @@ static int __qseecom_qteec_issue_cmd(struct qseecom_dev_handle *data,
	list_for_each_entry(ptr_app, &qseecom.registered_app_list_head,
							list) {
		if ((ptr_app->app_id == data->client.app_id) &&
			 (!memcmp(ptr_app->app_name,
				data->client.app_name,
				strlen(ptr_app->app_name)))) {
			 (!strcmp(ptr_app->app_name, data->client.app_name))) {
			found_app = true;
			break;
		}
@@ -5982,9 +5986,7 @@ static int qseecom_qteec_invoke_modfd_cmd(struct qseecom_dev_handle *data,
	list_for_each_entry(ptr_app, &qseecom.registered_app_list_head,
							list) {
		if ((ptr_app->app_id == data->client.app_id) &&
			 (!memcmp(ptr_app->app_name,
				data->client.app_name,
				strlen(ptr_app->app_name)))) {
			 (!strcmp(ptr_app->app_name, data->client.app_name))) {
			found_app = true;
			break;
		}