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

Commit ee5e8d81 authored by Szymon Janc's avatar Szymon Janc Committed by Samuel Ortiz
Browse files

NFC: Fix missing mutex unlock in pn533_send_cmd_frame_async



If command allocation failed cmd_lock was not released and deadlock
would occur.

Signed-off-by: default avatarSzymon Janc <szymon.janc@tieto.com>
Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
parent fe235b58
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -716,7 +716,7 @@ static int pn533_send_cmd_frame_async(struct pn533 *dev,
					void *arg, gfp_t flags)
{
	struct pn533_cmd *cmd;
	int rc;
	int rc = 0;

	nfc_dev_dbg(&dev->interface->dev, "%s", __func__);

@@ -729,16 +729,16 @@ static int pn533_send_cmd_frame_async(struct pn533 *dev,
		if (!rc)
			dev->cmd_pending = 1;

		mutex_unlock(&dev->cmd_lock);

		return rc;
		goto unlock;
	}

	nfc_dev_dbg(&dev->interface->dev, "%s Queueing command", __func__);

	cmd = kzalloc(sizeof(struct pn533_cmd), flags);
	if (!cmd)
		return -ENOMEM;
	if (!cmd) {
		rc = -ENOMEM;
		goto unlock;
	}

	INIT_LIST_HEAD(&cmd->queue);
	cmd->out_frame = out_frame;
@@ -750,9 +750,10 @@ static int pn533_send_cmd_frame_async(struct pn533 *dev,

	list_add_tail(&cmd->queue, &dev->cmd_queue);

unlock:
	mutex_unlock(&dev->cmd_lock);

	return 0;
	return rc;
}

struct pn533_sync_cmd_response {