72 lines
2.4 KiB
Diff
72 lines
2.4 KiB
Diff
|
|
From 29080940b37ce7486a46ab5534383321319fe2c5 Mon Sep 17 00:00:00 2001
|
||
|
|
From: gubin <gubin_yewu@cmss.chinamobile.com>
|
||
|
|
Date: Sat, 22 Mar 2025 15:10:32 +0800
|
||
|
|
Subject: [PATCH] backends/cryptodev: Do not abort for invalid session ID
|
||
|
|
MIME-Version: 1.0
|
||
|
|
Content-Type: text/plain; charset=UTF-8
|
||
|
|
Content-Transfer-Encoding: 8bit
|
||
|
|
|
||
|
|
cherry-pick from eaf2bd29538d039df80bb4b1584de33a61312bc6
|
||
|
|
|
||
|
|
Instead of aborting when a session ID is invalid,
|
||
|
|
return VIRTIO_CRYPTO_INVSESS ("Invalid session id").
|
||
|
|
|
||
|
|
Reproduced using:
|
||
|
|
|
||
|
|
$ cat << EOF | qemu-system-i386 -display none \
|
||
|
|
-machine q35,accel=qtest -m 512M -nodefaults \
|
||
|
|
-object cryptodev-backend-builtin,id=cryptodev0 \
|
||
|
|
-device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \
|
||
|
|
-qtest stdio
|
||
|
|
outl 0xcf8 0x80000804
|
||
|
|
outw 0xcfc 0x06
|
||
|
|
outl 0xcf8 0x80000820
|
||
|
|
outl 0xcfc 0xe0008000
|
||
|
|
write 0x10800e 0x1 0x01
|
||
|
|
write 0xe0008016 0x1 0x01
|
||
|
|
write 0xe0008020 0x4 0x00801000
|
||
|
|
write 0xe0008028 0x4 0x00c01000
|
||
|
|
write 0xe000801c 0x1 0x01
|
||
|
|
write 0x110000 0x1 0x05
|
||
|
|
write 0x110001 0x1 0x04
|
||
|
|
write 0x108002 0x1 0x11
|
||
|
|
write 0x108008 0x1 0x48
|
||
|
|
write 0x10800c 0x1 0x01
|
||
|
|
write 0x108018 0x1 0x10
|
||
|
|
write 0x10801c 0x1 0x02
|
||
|
|
write 0x10c002 0x1 0x01
|
||
|
|
write 0xe000b005 0x1 0x00
|
||
|
|
EOF
|
||
|
|
Assertion failed: (session_id < MAX_NUM_SESSIONS && builtin->sessions[session_id]),
|
||
|
|
function cryptodev_builtin_close_session, file cryptodev-builtin.c, line 430.
|
||
|
|
|
||
|
|
Cc: qemu-stable@nongnu.org
|
||
|
|
Reported-by: Zheyu Ma <zheyuma97@gmail.com>
|
||
|
|
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2274
|
||
|
|
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
|
||
|
|
Reviewed-by: zhenwei pi <pizhenwei@bytedance.com>
|
||
|
|
Message-Id: <20240409094757.9127-1-philmd@linaro.org>
|
||
|
|
Signed-off-by: gubin <gubin_yewu@cmss.chinamobile.com>
|
||
|
|
---
|
||
|
|
backends/cryptodev-builtin.c | 4 +++-
|
||
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||
|
|
|
||
|
|
diff --git a/backends/cryptodev-builtin.c b/backends/cryptodev-builtin.c
|
||
|
|
index 0822f198d9..940104ee55 100644
|
||
|
|
--- a/backends/cryptodev-builtin.c
|
||
|
|
+++ b/backends/cryptodev-builtin.c
|
||
|
|
@@ -428,7 +428,9 @@ static int cryptodev_builtin_close_session(
|
||
|
|
CRYPTODEV_BACKEND_BUILTIN(backend);
|
||
|
|
CryptoDevBackendBuiltinSession *session;
|
||
|
|
|
||
|
|
- assert(session_id < MAX_NUM_SESSIONS && builtin->sessions[session_id]);
|
||
|
|
+ if (session_id >= MAX_NUM_SESSIONS || !builtin->sessions[session_id]) {
|
||
|
|
+ return -VIRTIO_CRYPTO_INVSESS;
|
||
|
|
+ }
|
||
|
|
|
||
|
|
session = builtin->sessions[session_id];
|
||
|
|
if (session->cipher) {
|
||
|
|
--
|
||
|
|
2.41.0.windows.1
|
||
|
|
|