This is an automated email from Gerrit.

"Andreas Bolsch <hyphen0br...@gmail.com>" just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/7345

-- gerrit

commit 0f1416f601a718a0ddf4f708cbaab0d247325b89
Author: Andreas Bolsch <hyphen0br...@gmail.com>
Date:   Sat Nov 12 16:29:18 2022 +0100

    Fix for segfault and some clang reported problems in stmqspi
    
    Change-Id: Id003adb574085cdd603cc13aeb6f2efec73593f1
    Signed-off-by: Andreas Bolsch <hyphen0br...@gmail.com>

diff --git a/src/flash/nor/stmqspi.c b/src/flash/nor/stmqspi.c
index e5df3b9e08..77ea4c40d8 100644
--- a/src/flash/nor/stmqspi.c
+++ b/src/flash/nor/stmqspi.c
@@ -616,8 +616,6 @@ COMMAND_HANDLER(stmqspi_handle_set)
 
        LOG_DEBUG("%s", __func__);
 
-       dual = (stmqspi_info->saved_cr & BIT(SPI_DUAL_FLASH)) ? 1 : 0;
-
        /* chip_erase_cmd, sectorsize and erase_cmd are optional */
        if ((CMD_ARGC < 7) || (CMD_ARGC > 10))
                return ERROR_COMMAND_SYNTAX_ERROR;
@@ -628,8 +626,9 @@ COMMAND_HANDLER(stmqspi_handle_set)
 
        target = bank->target;
        stmqspi_info = bank->driver_priv;
+       dual = (stmqspi_info->saved_cr & BIT(SPI_DUAL_FLASH)) ? 1 : 0;
 
-       /* invalidate all old info */
+       /* invalidate all flash device info */
        if (stmqspi_info->probed)
                free(bank->sectors);
        bank->size = 0;
@@ -721,10 +720,8 @@ COMMAND_HANDLER(stmqspi_handle_set)
 
        uint32_t dcr;
        retval = target_read_u32(target, io_base + SPI_DCR, &dcr);
-
        if (retval != ERROR_OK)
                return retval;
-
        fsize = (dcr >> SPI_FSIZE_POS) & (BIT(SPI_FSIZE_LEN) - 1);
 
        LOG_DEBUG("FSIZE = 0x%04x", fsize);
@@ -2080,16 +2077,17 @@ static int stmqspi_probe(struct flash_bank *bank)
        bool octal_dtr;
        int retval;
 
-       if (stmqspi_info->probed) {
-               bank->size = 0;
-               bank->num_sectors = 0;
+       /* invalidate all flash device info */
+       if (stmqspi_info->probed)
                free(bank->sectors);
-               bank->sectors = NULL;
-               memset(&stmqspi_info->dev, 0, sizeof(stmqspi_info->dev));
-               stmqspi_info->sfdp_dummy1 = 0;
-               stmqspi_info->sfdp_dummy2 = 0;
-               stmqspi_info->probed = false;
-       }
+       bank->size = 0;
+       bank->num_sectors = 0;
+       bank->sectors = NULL;
+       stmqspi_info->sfdp_dummy1 = 0;
+       stmqspi_info->sfdp_dummy2 = 0;
+       stmqspi_info->probed = false;
+       memset(&stmqspi_info->dev, 0, sizeof(stmqspi_info->dev));
+       stmqspi_info->dev.name = "unknown";
 
        /* Abort any previous operation */
        retval = stmqspi_abort(bank);
@@ -2104,8 +2102,8 @@ static int stmqspi_probe(struct flash_bank *bank)
        /* check whether QSPI_ABR is writeable and readback returns the value 
written */
        retval = target_write_u32(target, io_base + QSPI_ABR, magic);
        if (retval == ERROR_OK) {
-               retval = target_read_u32(target, io_base + QSPI_ABR, &data);
-               retval = target_write_u32(target, io_base + QSPI_ABR, 0);
+               (void)target_read_u32(target, io_base + QSPI_ABR, &data);
+               (void)target_write_u32(target, io_base + QSPI_ABR, 0);
        }
 
        if (data == magic) {

-- 

Reply via email to