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

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

Merge "ASoC: msm: lock read/write when add/free audio ion memory"

parents 47f20cee b0008d30
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -570,6 +570,8 @@ int audio_aio_release(struct inode *inode, struct file *file)
	struct q6audio_aio *audio = file->private_data;
	pr_debug("%s[%pK]\n", __func__, audio);
	mutex_lock(&audio->lock);
	mutex_lock(&audio->read_lock);
	mutex_lock(&audio->write_lock);
	audio->wflush = 1;
	if (audio->wakelock_voted &&
		(audio->audio_ws_mgr != NULL) &&
@@ -595,6 +597,8 @@ int audio_aio_release(struct inode *inode, struct file *file)
	wake_up(&audio->event_wait);
	audio_aio_reset_event_queue(audio);
	q6asm_audio_client_free(audio->ac);
	mutex_unlock(&audio->write_lock);
	mutex_unlock(&audio->read_lock);
	mutex_unlock(&audio->lock);
	mutex_destroy(&audio->lock);
	mutex_destroy(&audio->read_lock);
@@ -1743,7 +1747,11 @@ static long audio_aio_ioctl(struct file *file, unsigned int cmd,
				__func__);
			rc = -EFAULT;
		} else {
			mutex_lock(&audio->read_lock);
			mutex_lock(&audio->write_lock);
			rc = audio_aio_ion_add(audio, &info);
			mutex_unlock(&audio->write_lock);
			mutex_unlock(&audio->read_lock);
		}
		mutex_unlock(&audio->lock);
		break;
@@ -1758,7 +1766,11 @@ static long audio_aio_ioctl(struct file *file, unsigned int cmd,
				__func__);
			rc = -EFAULT;
		} else {
			mutex_lock(&audio->read_lock);
			mutex_lock(&audio->write_lock);
			rc = audio_aio_ion_remove(audio, &info);
			mutex_unlock(&audio->write_lock);
			mutex_unlock(&audio->read_lock);
		}
		mutex_unlock(&audio->lock);
		break;
@@ -2062,7 +2074,11 @@ static long audio_aio_compat_ioctl(struct file *file, unsigned int cmd,
		} else {
			info.fd = info_32.fd;
			info.vaddr = compat_ptr(info_32.vaddr);
			mutex_lock(&audio->read_lock);
			mutex_lock(&audio->write_lock);
			rc = audio_aio_ion_add(audio, &info);
			mutex_unlock(&audio->write_lock);
			mutex_unlock(&audio->read_lock);
		}
		mutex_unlock(&audio->lock);
		break;
@@ -2079,7 +2095,11 @@ static long audio_aio_compat_ioctl(struct file *file, unsigned int cmd,
		} else {
			info.fd = info_32.fd;
			info.vaddr = compat_ptr(info_32.vaddr);
			mutex_lock(&audio->read_lock);
			mutex_lock(&audio->write_lock);
			rc = audio_aio_ion_remove(audio, &info);
			mutex_unlock(&audio->write_lock);
			mutex_unlock(&audio->read_lock);
		}
		mutex_unlock(&audio->lock);
		break;