git: 8007a78bfe1f - main - sound: Make chn_reset() control flow clearer

From: Christos Margiolis <christos_at_FreeBSD.org>
Date: Tue, 07 Apr 2026 15:44:55 UTC
The branch main has been updated by christos:

URL: https://cgit.FreeBSD.org/src/commit/?id=8007a78bfe1f41b7055f8677f8ac9ae4cc2fbc7c

commit 8007a78bfe1f41b7055f8677f8ac9ae4cc2fbc7c
Author:     Christos Margiolis <christos@FreeBSD.org>
AuthorDate: 2026-04-07 15:44:39 +0000
Commit:     Christos Margiolis <christos@FreeBSD.org>
CommitDate: 2026-04-07 15:44:39 +0000

    sound: Make chn_reset() control flow clearer
    
    I think this is cleaner than playing around with return values.
    
    Sponsored by:   The FreeBSD Foundation
    MFC after:      1 week
    Reviewed by:    markj
    Differential Revision:  https://reviews.freebsd.org/D56264
---
 sys/dev/sound/pcm/channel.c | 33 ++++++++++++++++++---------------
 1 file changed, 18 insertions(+), 15 deletions(-)

diff --git a/sys/dev/sound/pcm/channel.c b/sys/dev/sound/pcm/channel.c
index 0b940fe4e843..c1e0d8d3bc52 100644
--- a/sys/dev/sound/pcm/channel.c
+++ b/sys/dev/sound/pcm/channel.c
@@ -1059,7 +1059,7 @@ snd_afmt2str(uint32_t afmt, char *buf, size_t len)
 int
 chn_reset(struct pcm_channel *c, uint32_t fmt, uint32_t spd)
 {
-	int r;
+	int err;
 
 	CHN_LOCKASSERT(c);
 	c->feedcount = 0;
@@ -1071,23 +1071,26 @@ chn_reset(struct pcm_channel *c, uint32_t fmt, uint32_t spd)
 	c->flags |= (pcm_getflags(c->dev) & SD_F_BITPERFECT) ?
 	    CHN_F_BITPERFECT : 0;
 
-	r = CHANNEL_RESET(c->methods, c->devinfo);
-	if (r == 0 && fmt != 0 && spd != 0) {
-		r = chn_setparam(c, fmt, spd);
+	if ((err = CHANNEL_RESET(c->methods, c->devinfo)))
+		return (err);
+
+	if (fmt != 0 && spd != 0) {
+		if ((err = chn_setparam(c, fmt, spd)))
+			return (err);
 		fmt = 0;
 		spd = 0;
 	}
-	if (r == 0 && fmt != 0)
-		r = chn_setformat(c, fmt);
-	if (r == 0 && spd != 0)
-		r = chn_setspeed(c, spd);
-	if (r == 0)
-		r = chn_setlatency(c, chn_latency);
-	if (r == 0) {
-		chn_resetbuf(c);
-		r = CHANNEL_RESETDONE(c->methods, c->devinfo);
-	}
-	return r;
+	if (fmt != 0 && (err = chn_setformat(c, fmt)))
+		return (err);
+	if (spd != 0 && (err = chn_setspeed(c, spd)))
+		return (err);
+
+	if ((err = chn_setlatency(c, chn_latency)))
+		return (err);
+
+	chn_resetbuf(c);
+
+	return (CHANNEL_RESETDONE(c->methods, c->devinfo));
 }
 
 static struct unrhdr *