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

Commit 7e2bf007 authored by Xiaoyu Ye's avatar Xiaoyu Ye Committed by Gerrit - the friendly Code Review server
Browse files

asoc: fix error handling logic to avoid potential deadlock



IOCTL command "SNDRV_LSM_EVENT_STATUS_V3_32" in msm_lsm_ioctl_compat
has an incorrect error handling logic which can cause mutex deadlock.
Change this logic to avoid potential mutex deadlock.

Change-Id: I19b3509b5d40cff555536e4615132ea8c477d451
Signed-off-by: default avatarXiaoyu Ye <benyxy@codeaurora.org>
parent 40bf8e89
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -1368,7 +1368,8 @@ static int msm_lsm_ioctl_compat(struct snd_pcm_substream *substream,
		if (copy_from_user(&userarg32, arg, sizeof(userarg32))) {
			dev_err(rtd->dev, "%s: err copyuser ioctl %s\n",
				__func__, "SNDRV_LSM_EVENT_STATUS_V3_32");
			return -EFAULT;
			err = -EINVAL;
			goto done;
		}

		if (userarg32.payload_size >
@@ -1376,7 +1377,8 @@ static int msm_lsm_ioctl_compat(struct snd_pcm_substream *substream,
			pr_err("%s: payload_size %d is invalid, max allowed = %d\n",
				__func__, userarg32.payload_size,
				LISTEN_MAX_STATUS_PAYLOAD_SIZE);
			return -EINVAL;
			err = -EINVAL;
			goto done;
		}

		size = sizeof(*user) + userarg32.payload_size;
@@ -1385,7 +1387,8 @@ static int msm_lsm_ioctl_compat(struct snd_pcm_substream *substream,
			dev_err(rtd->dev,
				"%s: Allocation failed event status size %d\n",
				__func__, size);
			return -EFAULT;
			err = -ENOMEM;
			goto done;
		}
		cmd = SNDRV_LSM_EVENT_STATUS_V3;
		user->payload_size = userarg32.payload_size;