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

Commit 6cdcfeac authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "qseecom: don't unregister listener when data->released is true"

parents 659573fa f4ad83b6
Loading
Loading
Loading
Loading
+8 −3
Original line number Original line Diff line number Diff line
@@ -1514,8 +1514,6 @@ static int qseecom_register_listener(struct qseecom_dev_handle *data,
			rcvd_lstnr.sb_size))
			rcvd_lstnr.sb_size))
		return -EFAULT;
		return -EFAULT;


	data->listener.id = rcvd_lstnr.listener_id;

	ptr_svc = __qseecom_find_svc(rcvd_lstnr.listener_id);
	ptr_svc = __qseecom_find_svc(rcvd_lstnr.listener_id);
	if (ptr_svc) {
	if (ptr_svc) {
		if (!ptr_svc->unregister_pending) {
		if (!ptr_svc->unregister_pending) {
@@ -1573,6 +1571,7 @@ static int qseecom_register_listener(struct qseecom_dev_handle *data,
	new_entry->listener_in_use = false;
	new_entry->listener_in_use = false;
	list_add_tail(&new_entry->list, &qseecom.registered_listener_list_head);
	list_add_tail(&new_entry->list, &qseecom.registered_listener_list_head);


	data->listener.id = rcvd_lstnr.listener_id;
	pr_debug("Service %d is registered\n", rcvd_lstnr.listener_id);
	pr_debug("Service %d is registered\n", rcvd_lstnr.listener_id);
	return ret;
	return ret;
}
}
@@ -1637,6 +1636,11 @@ static int qseecom_unregister_listener(struct qseecom_dev_handle *data)
	struct qseecom_registered_listener_list *ptr_svc = NULL;
	struct qseecom_registered_listener_list *ptr_svc = NULL;
	struct qseecom_unregister_pending_list *entry = NULL;
	struct qseecom_unregister_pending_list *entry = NULL;


	if (data->released) {
		pr_err("Don't unregister lsnr %d\n", data->listener.id);
		return -EINVAL;
	}

	ptr_svc = __qseecom_find_svc(data->listener.id);
	ptr_svc = __qseecom_find_svc(data->listener.id);
	if (!ptr_svc) {
	if (!ptr_svc) {
		pr_err("Unregiser invalid listener ID %d\n", data->listener.id);
		pr_err("Unregiser invalid listener ID %d\n", data->listener.id);
@@ -8289,9 +8293,10 @@ static int qseecom_release(struct inode *inode, struct file *file)
		switch (data->type) {
		switch (data->type) {
		case QSEECOM_LISTENER_SERVICE:
		case QSEECOM_LISTENER_SERVICE:
			pr_debug("release lsnr svc %d\n", data->listener.id);
			pr_debug("release lsnr svc %d\n", data->listener.id);
			free_private_data = false;
			mutex_lock(&listener_access_lock);
			mutex_lock(&listener_access_lock);
			ret = qseecom_unregister_listener(data);
			ret = qseecom_unregister_listener(data);
			if (!ret)
				free_private_data = false;
			data->listener.release_called = true;
			data->listener.release_called = true;
			mutex_unlock(&listener_access_lock);
			mutex_unlock(&listener_access_lock);
			__wakeup_unregister_listener_kthread();
			__wakeup_unregister_listener_kthread();