[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 09/11] hw/sd/sdcard: Correctly display the command name in
From: |
Peter Maydell |
Subject: |
Re: [PATCH v3 09/11] hw/sd/sdcard: Correctly display the command name in trace events |
Date: |
Mon, 15 Jun 2020 15:20:24 +0100 |
On Fri, 5 Jun 2020 at 11:25, Philippe Mathieu-Daudé <philmd@redhat.com> wrote:
>
> From: Philippe Mathieu-Daudé <f4bug@amsat.org>
>
> Some ACMD were incorrectly displayed. Fix by remembering if we
> are processing a ACMD (with current_cmd_is_acmd) and add the
> sd_current_cmd_name() helper, which display to correct name
> regardless it is a CMD or ACMD.
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> hw/sd/sd.c | 17 ++++++++++++++---
> 1 file changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/hw/sd/sd.c b/hw/sd/sd.c
> index 952be36399..fad34ab184 100644
> --- a/hw/sd/sd.c
> +++ b/hw/sd/sd.c
> @@ -114,6 +114,7 @@ struct SDState {
> uint8_t pwd[16];
> uint32_t pwd_len;
> uint8_t function_group[6];
> + bool current_cmd_is_acmd;
This is extra state, so strictly speaking it needs to be
migrated (though the only thing we would get wrong is a
possible wrong trace message after a migration load).
> uint8_t current_cmd;
> /* True if we will handle the next command as an ACMD. Note that this
> does
> * *not* track the APP_CMD status bit!
> @@ -1687,6 +1688,8 @@ int sd_do_command(SDState *sd, SDRequest *req,
> req->cmd);
> req->cmd &= 0x3f;
> }
> + sd->current_cmd = req->cmd;
> + sd->current_cmd_is_acmd = sd->expecting_acmd;
I'm not 100% sure about moving the update of sd->current_cmd
down here -- if it's an illegal command that seems wrong.
> if (sd->card_status & CARD_IS_LOCKED) {
> if (!cmd_valid_while_locked(sd, req->cmd)) {
> @@ -1714,7 +1717,6 @@ int sd_do_command(SDState *sd, SDRequest *req,
> /* Valid command, we can update the 'state before command' bits.
> * (Do this now so they appear in r1 responses.)
> */
> - sd->current_cmd = req->cmd;
> sd->card_status &= ~CURRENT_STATE;
> sd->card_status |= (last_state << 9);
> }
> @@ -1775,6 +1777,15 @@ send_response:
> return rsplen;
> }
thanks
-- PMM
- [PATCH v3 04/11] hw/sd/sdcard: Restrict Class 6 commands to SCSD cards, (continued)
- [PATCH v3 04/11] hw/sd/sdcard: Restrict Class 6 commands to SCSD cards, Philippe Mathieu-Daudé, 2020/06/05
- [PATCH v3 05/11] hw/sd/sdcard: Update the SDState documentation, Philippe Mathieu-Daudé, 2020/06/05
- [PATCH v3 06/11] hw/sd/sdcard: Simplify cmd_valid_while_locked(), Philippe Mathieu-Daudé, 2020/06/05
- [PATCH v3 07/11] hw/sd/sdcard: Constify sd_crc*()'s message argument, Philippe Mathieu-Daudé, 2020/06/05
- [PATCH v3 08/11] hw/sd/sdcard: Make iolen unsigned, Philippe Mathieu-Daudé, 2020/06/05
- [PATCH v3 09/11] hw/sd/sdcard: Correctly display the command name in trace events, Philippe Mathieu-Daudé, 2020/06/05
- Re: [PATCH v3 09/11] hw/sd/sdcard: Correctly display the command name in trace events,
Peter Maydell <=
- [PATCH v3 10/11] hw/sd/sdcard: Display offset in read/write_data() trace events, Philippe Mathieu-Daudé, 2020/06/05
- [PATCH v3 11/11] hw/sd/sdcard: Simplify realize() a bit, Philippe Mathieu-Daudé, 2020/06/05
- Re: [PATCH v3 00/11] hw/sd/sdcard: Fix CVE-2020-13253 & cleanups, Philippe Mathieu-Daudé, 2020/06/08
- Re: [PATCH v3 00/11] hw/sd/sdcard: Fix CVE-2020-13253 & cleanups, Philippe Mathieu-Daudé, 2020/06/15