Commit 02d0aba6 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

ALSA: usb-audio: Use guard() for spin locks



Clean up the code using guard() for spin locks.

Merely code refactoring, and no behavior change.

Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent d5323227
Loading
Loading
Loading
Loading
+95 −103
Original line number Diff line number Diff line
@@ -1528,8 +1528,6 @@ static int prepare_playback_urb(struct snd_usb_substream *subs,
	int counts;
	unsigned int transfer_done, frame_limit, avail = 0;
	int i, stride, period_elapsed = 0;
	unsigned long flags;
	int err = 0;

	stride = ep->stride;

@@ -1537,7 +1535,7 @@ static int prepare_playback_urb(struct snd_usb_substream *subs,
	ctx->queued = 0;
	urb->number_of_packets = 0;

	spin_lock_irqsave(&subs->lock, flags);
	scoped_guard(spinlock_irqsave, &subs->lock) {
		frame_limit = subs->frame_limit + ep->max_urb_frames;
		transfer_done = subs->transfer_done;

@@ -1595,10 +1593,8 @@ static int prepare_playback_urb(struct snd_usb_substream *subs,
				break;
		}

	if (!frames) {
		err = -EAGAIN;
		goto unlock;
	}
		if (!frames)
			return -EAGAIN;

		bytes = frames * stride;
		subs->transfer_done = transfer_done;
@@ -1632,11 +1628,8 @@ static int prepare_playback_urb(struct snd_usb_substream *subs,
			subs->period_elapsed_pending = 1;
			period_elapsed = 0;
		}
	}

 unlock:
	spin_unlock_irqrestore(&subs->lock, flags);
	if (err < 0)
		return err;
	urb->transfer_buffer_length = bytes;
	if (period_elapsed) {
		if (in_stream_lock)
@@ -1654,11 +1647,10 @@ static int prepare_playback_urb(struct snd_usb_substream *subs,
static void retire_playback_urb(struct snd_usb_substream *subs,
			       struct urb *urb)
{
	unsigned long flags;
	struct snd_urb_ctx *ctx = urb->context;
	bool period_elapsed = false;

	spin_lock_irqsave(&subs->lock, flags);
	scoped_guard(spinlock_irqsave, &subs->lock) {
		if (ctx->queued) {
			if (subs->inflight_bytes >= ctx->queued)
				subs->inflight_bytes -= ctx->queued;
@@ -1671,7 +1663,7 @@ static void retire_playback_urb(struct snd_usb_substream *subs,
			period_elapsed = subs->period_elapsed_pending;
			subs->period_elapsed_pending = 0;
		}
	spin_unlock_irqrestore(&subs->lock, flags);
	}
	if (period_elapsed)
		snd_pcm_period_elapsed(subs->pcm_substream);
}