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

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

Merge "msm: sps: Avoid pipe disconnect while IRQ is in progress and viceversa"

parents e24f8089 78e7deba
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -1090,6 +1090,7 @@ int sps_bam_pipe_disconnect(struct sps_bam *dev, u32 pipe_index)
{
{
	struct sps_pipe *pipe;
	struct sps_pipe *pipe;
	int result;
	int result;
	unsigned long flags;


	if (pipe_index >= dev->props.num_pipes) {
	if (pipe_index >= dev->props.num_pipes) {
		SPS_ERR(dev, "sps:Invalid BAM %pa pipe: %d\n", BAM_ID(dev),
		SPS_ERR(dev, "sps:Invalid BAM %pa pipe: %d\n", BAM_ID(dev),
@@ -1101,8 +1102,10 @@ int sps_bam_pipe_disconnect(struct sps_bam *dev, u32 pipe_index)
	pipe = dev->pipes[pipe_index];
	pipe = dev->pipes[pipe_index];
	if (BAM_PIPE_IS_ASSIGNED(pipe)) {
	if (BAM_PIPE_IS_ASSIGNED(pipe)) {
		if ((dev->pipe_active_mask & (1UL << pipe_index))) {
		if ((dev->pipe_active_mask & (1UL << pipe_index))) {
			spin_lock_irqsave(&dev->isr_lock, flags);
			list_del(&pipe->list);
			list_del(&pipe->list);
			dev->pipe_active_mask &= ~(1UL << pipe_index);
			dev->pipe_active_mask &= ~(1UL << pipe_index);
			spin_unlock_irqrestore(&dev->isr_lock, flags);
		}
		}
		dev->pipe_remote_mask &= ~(1UL << pipe_index);
		dev->pipe_remote_mask &= ~(1UL << pipe_index);
		if (pipe->connect.options & SPS_O_NO_DISABLE)
		if (pipe->connect.options & SPS_O_NO_DISABLE)