From nobody Wed Sep 30 12:59:23 2026 Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E1BD1F3BAC for ; Sat, 8 Aug 2026 01:46:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786153563; cv=none; b=FQC85dq2v+YQQxNtMi9PGhe3QI21YLG/S1UkAd9Wp6UEkG/p6xl9jn7of5Wpk3+ihUu/NLgRcMNYLZcIuYq5mYr+Ogt7MAjlyhBpzuy+H92g5//Fo5ovkxIbqvpZCrRHd1vx5UnaTxDlUelhwA1x5B4yYw5Y6Y/L1KYqTdc00vQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786153563; c=relaxed/simple; bh=jiYwrHfPMJZupGhgemLkbnAXfR4F0oA1drlrs7PD6eU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=CaMqhIwgMiHcqs27UBve8IUfh0A04tMxfxgX+sY0RJh5DyoiR5ANgwWy+xR960f2xO9DyApPqmsgwfxFUT3EKnjc20jv19QRM54OVkrU7qZV1lGuk2Pg1/IvGnJ8rfJofczJtvAfc69V6p+mk+VXpzK6n5sxym9Q5g0QErzGEW8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fQFSBdRz; arc=none smtp.client-ip=209.85.216.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fQFSBdRz" Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-38101f85591so2378135a91.1 for ; Fri, 07 Aug 2026 18:46:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786153561; x=1786758361; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=1jzH3wz8al5H3PLnRo3rqNbon9VQ+SF4VfOzTEMOvxE=; b=fQFSBdRz45bgahmUZaOTFVnS9vRsJDseTt5dZSzEtEvog5Ek7CMBA0lvjMmGnLmlwy hhYJEYYJIugLtgB4dASuet5m0CS7bwgbMDmOW6yDayCy33vtYs7rK6Cl7neYTcHwrZEK N4n/pAfvDjY9mtdNl2i0J1ro0uWaVqt9+hHSs/k2LKY2AVgAuVwba3dt5SiBQPK3AVMM jHL+R/uzUHg0Iz1m6qd3hjUHQSmltyx7wbd5VxWSeEj99oZo10YzoisSCmgY0QI5WaCu 97Xm0v4hksI9pFBDetrGK0NZ5XlkoAEUi7xfN3R023VGdVTZ5EWokOLedAjtTx5/s/X1 aUfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786153561; x=1786758361; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=1jzH3wz8al5H3PLnRo3rqNbon9VQ+SF4VfOzTEMOvxE=; b=kg1pkdAU8sTSl3Mobvjjhi8cvtlv1CqS4OiZJKqhn+0+A1fBKo6EOjEYZSFk0c+CNN fsZkbutl1W3vc6T0Woq9aRMaLY4Jxl5gLFaJRVIl7OKphESklo+VTMiPIda0UWwev2NZ rSGVvVz5FqlW8M/KRHzFi+eNt90M37VoGfwaXmW5J1IQ0nSmJS1mSeP90fkH3naRM3J7 l3BwzA/gnA3UXFF3ls4lEEmPvV2ODvMUxrH4FoQYSiDAhaQ8v+3VVv1f8MT3h2P5TU41 xfEtGN8BihCwtWHlRalnZAXNUa7vJzY6Pet6uRY6IasVsaTLn/rptf1MXQVaVCyOn6n6 deKw== X-Forwarded-Encrypted: i=1; AHgh+Rr5dyx94+C5Xr3w4pzTuzM4T7RPvbEtem2L7V3JCXt+kyvOto/VTMR5H1VVBy3v39ssvC/gZBB1lyTPTi0=@vger.kernel.org X-Gm-Message-State: AOJu0Ywn7GZN+6Hzb173af+E+wmDbAXiAzQcyNSAMXj6/1mv9s7IEjt9 Xsly/y7rgWCUqeDtVWhzba/CKgsLL+VJbsN+3o8wS0Fa+UYGHRvQf+s+ X-Gm-Gg: AR+sD10wwTvYR87Dk3ZxCML51uZ5LQ0JjoGucWiuuAR7b42sMz8WJ+lj2+RBiia0U+s raC2fgPpG9b6olp0ON+VWgMzsRwVcxuT6gM9LZaUj9mUKl31RoSyLe9Acee6NijGgKe0rhyuO5/ ANUFbWEwu+Mu91SnGng12lix9yQqJNfCOFF+kUddLNpNQhdsw+AWtwVsbVKDAIjyH7x6eU6JjZJ idgGuEYirjJtL3or1FS0cXY2qycmvhKdTe7D0z3LZBcJg2u0QQc4t2tHRR1O5Za+zVDB/7jijro rEP2oYr+dSulX0b98mZLa03IH3Rdxnoh9Y5tbho8lKHkBehXNatBkybM250PTUov3T1Gk0yNmaT aNC1XBkNcu/8c2hRZgFmzaZLdTxAAMVvNvx+r4XoXjPB2/v31yxAKHIAxTg+vofswPTtjnbfjZX cifvXfmEH52SD+13f5JANHMn+yN61+vmTITIB1GyXV8P7AGaoppqzoiMOQFjdNHJwyQMn8VyFf2 LcJ4PDZ5NTgq6ayvg63nTpzbIF+o20m9lBrLv4HP0tX0QMU/wvo3w== X-Received: by 2002:a17:90b:3eca:b0:37f:9e21:91d6 with SMTP id 98e67ed59e1d1-392846ac637mr1213667a91.13.1786153561263; Fri, 07 Aug 2026 18:46:01 -0700 (PDT) Received: from nugod-NUC15CRHU5.tail9f095a.ts.net ([218.237.104.87]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-39085f5e33fsm6697806a91.14.2026.08.07.18.45.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Aug 2026 18:45:59 -0700 (PDT) From: HyeongJun An To: Takashi Iwai , Jaroslav Kysela Cc: linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, HyeongJun An , stable@vger.kernel.org Subject: [PATCH] ALSA: ump: Fix corrupted data bytes at MIDI 1.0 SysEx to UMP conversion Date: Sat, 8 Aug 2026 10:45:54 +0900 Message-ID: <20260808014554.3550153-1-sammiee5311@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The cvt_legacy_sysex_to_ump() initialises only the first word of the output packet and ORs the data bytes into it. The second word is left alone, and the conversion context is kept across calls, so it still carries the previous packet's bytes. Those stale bits corrupt the new data. Any SysEx longer than six data bytes is affected. A SysEx with the twelve data bytes 01..0c comes out as: 30160102 03040506 30260708 0b0e0f0e The second packet declares six data bytes and four of them are wrong, inside the declared length. The sibling cvt_legacy_cmd_to_ump() already clears the second word. Do the same here. Fixes: 0b5288f5fe63 ("ALSA: ump: Add legacy raw MIDI support") Cc: stable@vger.kernel.org Assisted-by: Claude:claude-opus-5 Signed-off-by: HyeongJun An --- sound/core/ump_convert.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sound/core/ump_convert.c b/sound/core/ump_convert.c index 0fe13d031656..85cc67de6330 100644 --- a/sound/core/ump_convert.c +++ b/sound/core/ump_convert.c @@ -258,6 +258,7 @@ static int cvt_legacy_sysex_to_ump(struct ump_cvt_to_um= p *cvt, else status =3D UMP_SYSEX_STATUS_CONTINUE; *data =3D ump_compose(UMP_MSG_TYPE_DATA, group, status, cvt->len); + data[1] =3D 0; offset =3D 8; for (i =3D 0; i < cvt->len; i++) { *data |=3D cvt->buf[i] << offset; --=20 2.43.0