openeuler !302!305 e1000-fail-early-for-evil-descriptor.patch e1000-fix-tx-re-entrancy-problem.patch hw-sd-sdcard-Restrict-Class-6-commands-to-SCSD-cards.patch hw-sd-sdcard-Simplify-realize-a-bit.patch hw-sd-sdcard-Do-not-allow-invalid-SD-card-sizes.patch hw-sd-sdcard-Update-coding-style-to-make-checkpatch..patch hw-sd-sdcard-Do-not-switch-to-ReceivingData-if-addre.patch scsi-qemu-pr-helper-Fix-out-of-bounds-access-to-trnp.patch curses-Fixes-curses-compiling-errors.patch net-dump.c-Suppress-spurious-compiler-warning.patch tests-Replace-deprecated-ASN1-code.patch
49 lines
1.5 KiB
Diff
49 lines
1.5 KiB
Diff
From 3fb16cbd24233829b3696e06abb12db317d68aac Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= <f4bug@amsat.org>
|
|
Date: Wed, 3 Jun 2020 19:59:16 +0200
|
|
Subject: [PATCH 3/7] hw/sd/sdcard: Restrict Class 6 commands to SCSD cards
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Only SCSD cards support Class 6 (Block Oriented Write Protection)
|
|
commands.
|
|
|
|
"SD Specifications Part 1 Physical Layer Simplified Spec. v3.01"
|
|
|
|
4.3.14 Command Functional Difference in Card Capacity Types
|
|
|
|
* Write Protected Group
|
|
|
|
SDHC and SDXC do not support write-protected groups. Issuing
|
|
CMD28, CMD29 and CMD30 generates the ILLEGAL_COMMAND error.
|
|
|
|
Cc: qemu-stable@nongnu.org
|
|
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
|
|
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
|
|
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
|
|
Message-Id: <20200630133912.9428-7-f4bug@amsat.org>
|
|
---
|
|
hw/sd/sd.c | 5 +++++
|
|
1 file changed, 5 insertions(+)
|
|
|
|
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
|
|
index 917195a65b..ed3eae930b 100644
|
|
--- a/hw/sd/sd.c
|
|
+++ b/hw/sd/sd.c
|
|
@@ -905,6 +905,11 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req)
|
|
sd->multi_blk_cnt = 0;
|
|
}
|
|
|
|
+ if (sd_cmd_class[req.cmd] == 6 && FIELD_EX32(sd->ocr, OCR, CARD_CAPACITY)) {
|
|
+ /* Only Standard Capacity cards support class 6 commands */
|
|
+ return sd_illegal;
|
|
+ }
|
|
+
|
|
switch (req.cmd) {
|
|
/* Basic commands (Class 0 and Class 1) */
|
|
case 0: /* CMD0: GO_IDLE_STATE */
|
|
--
|
|
2.17.1
|
|
|