From patchwork Tue Apr 9 09:47:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= X-Patchwork-Id: 787193 Delivered-To: patch@linaro.org Received: by 2002:adf:fdd2:0:b0:346:15ad:a2a with SMTP id i18csp133290wrs; Tue, 9 Apr 2024 02:48:32 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUDBnQQrMOT/0kb4+IfGwIJQJrJ/YPtcM7MhFUtpgt04t0B7/t5jtEjSne5AKhUkiKZYOwfGSZ6rHj2Thp9YEoC X-Google-Smtp-Source: AGHT+IE7zrHbxn00UCciml27JsXoR0efxD5VWlK1AjpP92IDErSFe0CtY0yYVFvK5zgeBNgrCwC2 X-Received: by 2002:a0d:dd41:0:b0:615:15a2:5bf9 with SMTP id g62-20020a0ddd41000000b0061515a25bf9mr9218638ywe.20.1712656111782; Tue, 09 Apr 2024 02:48:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1712656111; cv=none; d=google.com; s=arc-20160816; b=VgAudwbB9rOIxP1H28EU+2Lz8poMsGe1UQopGIwtJln3HrVnKBPWAkq8Uuux49hKnh Ifo4SE7gKdXUjyHE5+K4zpXIoXMSan0lhGPtiwdyDcvQCApS4OAWDIk27tMrZZasaWtt OUDMsaDlxPAIXfJDRDRw7czHkYtucniNJj/UWRo4GdsqEedJf2CNOhk+PVafLl1gAkKg eqkZejEB4JRq98MEwxnWDWBe65FwIS9VD9R5WaslLfr+OYgyhZW5/u5+xq0YVw30+BAv TJzV59UXui0AopqHa7GNPdAO8U/Fj4elrF5paHo1dZGnW0x+hNcFfj+QEkS9FZhL9ZNN N1sg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from:dkim-signature; bh=3hDI87sq1FSJETxnPQkKo8rSPEGOq41R9YSzB3DSAZQ=; fh=GTe1QI4GtOmLqm8SMgyUegkeh5xW0U8dw/BhYF7WhM4=; b=FIz6uyPsJ0YKolnEkq2wnD8wj2Ef+0hGgQBPzMKUQQ4aX+CrImTigUse00eu7yiZ+N 56nRBOYXGddJAQVTr/4LwY1qbgprrvHQYJoTjgcmbFbIAwgDdpH6H7YFedKD7g10+8fO jidnDQaReO8pc7qR97nR9MSZkI+WQg/FrF9ceNPhW8msqh5UqZs6avvK8rzMx7heMTJt drc4HaENo1llpS9FXziuDNY+LmFtmaoZJYspCVCAHC093pjSRvEI0dGcOo/Bqx3YpMob Utq0XRayCZl8XyQqi6Psjqej8LrmvZXi0wvxuqp7J0ACG7+SGbfVwdptvWCvHuwVZAIp v2VA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BnLVPmLD; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id q18-20020a05622a031200b00434515daf31si10001391qtw.141.2024.04.09.02.48.31 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Apr 2024 02:48:31 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=BnLVPmLD; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ru85Q-0001E0-Px; Tue, 09 Apr 2024 05:48:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ru85H-0001Db-3N for qemu-devel@nongnu.org; Tue, 09 Apr 2024 05:48:08 -0400 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ru85F-0007nq-99 for qemu-devel@nongnu.org; Tue, 09 Apr 2024 05:48:06 -0400 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-a51e452a1ceso137917766b.0 for ; Tue, 09 Apr 2024 02:48:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1712656079; x=1713260879; darn=nongnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=3hDI87sq1FSJETxnPQkKo8rSPEGOq41R9YSzB3DSAZQ=; b=BnLVPmLDHimgc/PQYER4c6PLRbW3pKw6bFFKG6tZqTi3HIYUC4lOfbnjh8DXDUDmrq s2XxZYLakx05EL7Im+asGrddMl3IQFub0FWtvCZ9H50g739ppZXtnlpMvSkjAFP4zY6C XN3R6jtNf6pQsJZmBDuz8KgAot6Pda6rK8PqCPzB7IyXjArxf69c87JW2QRcjy6HhvQc UF7aGv7UfvJtT8w86nqCKS0mG4F9NtPC21Bp6iJ9Q595r68nNJvPxHphR5bZY3nJzWGp RnzRdUOmDxcZFl2VfElcDhLlDivd4r6rwvfRtngr9+uODBvoJW2CMZnYM7Zrl8S1T7MJ waUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712656079; x=1713260879; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=3hDI87sq1FSJETxnPQkKo8rSPEGOq41R9YSzB3DSAZQ=; b=cjpcVXNCyabJqmcs9MLVt6lqyEy16w8QtBopmQ18nvY1yFTLRyy8TX916cwltIzaK0 Yfr34qstdMNuLfLHlh34RsAwT1OYJsk3B5Vv4gbCrp/BIwGrji9Oi/Tw14M76ZuPBgNm /dj/Gdj9dse/ibEVyX55J7Z7VY0lvHJMbwmQqhechUsup/U5iqr74iaK2xJSWCtEL3/b Np6WItwlnv7xufZDZx+2eJKKQG+QwfppFhsuJh5z3sOgbLxHG/YlrEYjdVJeHV3KkGpJ 9+2O3m/VNLuXGsDzUzWYcuW+ApTtweHRBt7Jua1Bdcy6H+rZOlDx6RfCTL1dtIPyv01Q wCQA== X-Gm-Message-State: AOJu0YxERZ1ZV6O5gl/vYafpnGMUNAymyXTGQ+ipK6eFwwg8IvRveQvR x0GzG97Eootq7KbP2gC4wQTt+uDRkWJaV01qZXKIN6/AZuCWfMqqPM6W8wCUcbt7eHkeqLyivLu o X-Received: by 2002:a17:907:728e:b0:a51:d136:affb with SMTP id dt14-20020a170907728e00b00a51d136affbmr5357117ejc.40.1712656079596; Tue, 09 Apr 2024 02:47:59 -0700 (PDT) Received: from m1x-phil.lan ([176.176.160.134]) by smtp.gmail.com with ESMTPSA id g3-20020a170906394300b00a4e40e48f8dsm5443003eje.185.2024.04.09.02.47.58 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 09 Apr 2024 02:47:59 -0700 (PDT) From: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: Zhenwei Pi , "Gonglei (Arei)" , Alexander Bulekov , =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , Zheyu Ma Subject: [PATCH-for-9.0? v2] backends/cryptodev: Do not abort for invalid session ID Date: Tue, 9 Apr 2024 11:47:56 +0200 Message-ID: <20240409094757.9127-1-philmd@linaro.org> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::630; envelope-from=philmd@linaro.org; helo=mail-ej1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org 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. Reported-by: Zheyu Ma Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2274 Signed-off-by: Philippe Mathieu-Daudé Reviewed-by: zhenwei pi --- v2: Removed error_report() --- 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 39d0455280..a514bbb310 100644 --- a/backends/cryptodev-builtin.c +++ b/backends/cryptodev-builtin.c @@ -427,7 +427,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) {