[PATCH] ALSA: seq_oss: return full count for successful SEQ_FULLSIZE writes

Cássio Gabriel posted 1 patch 1 week, 2 days ago
sound/core/seq/oss/seq_oss_rw.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[PATCH] ALSA: seq_oss: return full count for successful SEQ_FULLSIZE writes
Posted by Cássio Gabriel 1 week, 2 days ago
snd_seq_oss_write() currently returns the raw load_patch() callback
result for SEQ_FULLSIZE events.

That callback is documented as returning 0 on success and -errno on
failure, but snd_seq_oss_write() is the file write path and should
report the number of user bytes consumed on success. Some in-tree
backends also return backend-specific positive values, which can still
be shorter than the original write size.

Return the full byte count for successful SEQ_FULLSIZE writes.
Preserve negative errors and convert any nonnegative completion to the
original count.

Cc: stable@vger.kernel.org
Signed-off-by: Cássio Gabriel <cassiogabrielcontato@gmail.com>
---
 sound/core/seq/oss/seq_oss_rw.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/sound/core/seq/oss/seq_oss_rw.c b/sound/core/seq/oss/seq_oss_rw.c
index 8a142fd54a19..307ef98c44c7 100644
--- a/sound/core/seq/oss/seq_oss_rw.c
+++ b/sound/core/seq/oss/seq_oss_rw.c
@@ -101,9 +101,9 @@ snd_seq_oss_write(struct seq_oss_devinfo *dp, const char __user *buf, int count,
 				break;
 			}
 			fmt = (*(unsigned short *)rec.c) & 0xffff;
-			/* FIXME the return value isn't correct */
-			return snd_seq_oss_synth_load_patch(dp, rec.s.dev,
-							    fmt, buf, 0, count);
+			err = snd_seq_oss_synth_load_patch(dp, rec.s.dev,
+							   fmt, buf, 0, count);
+			return err < 0 ? err : count;
 		}
 		if (ev_is_long(&rec)) {
 			/* extended code */

---
base-commit: b3c48fa1fb397b490101785ddd87caf2e5513a66
change-id: 20260324-alsa-seq-oss-fullsize-write-return-0d1203bffe45

Best regards,
-- 
Cássio Gabriel <cassiogabrielcontato@gmail.com>

Re: [PATCH] ALSA: seq_oss: return full count for successful SEQ_FULLSIZE writes
Posted by Takashi Iwai 6 days, 23 hours ago
On Tue, 24 Mar 2026 20:59:41 +0100,
Cássio Gabriel wrote:
> 
> snd_seq_oss_write() currently returns the raw load_patch() callback
> result for SEQ_FULLSIZE events.
> 
> That callback is documented as returning 0 on success and -errno on
> failure, but snd_seq_oss_write() is the file write path and should
> report the number of user bytes consumed on success. Some in-tree
> backends also return backend-specific positive values, which can still
> be shorter than the original write size.
> 
> Return the full byte count for successful SEQ_FULLSIZE writes.
> Preserve negative errors and convert any nonnegative completion to the
> original count.
> 
> Cc: stable@vger.kernel.org
> Signed-off-by: Cássio Gabriel <cassiogabrielcontato@gmail.com>

Applied to for-next branch now.  Thanks.


Takashi