This is an automated email from Gerrit.

Christopher Head ([email protected]) just uploaded a new patch set to Gerrit, 
which you can find at http://openocd.zylin.com/5782

-- gerrit

commit 0dd7a1455587b9d3ff527fa3cd248e16dbf5bf41
Author: Christopher Head <[email protected]>
Date:   Fri Jul 17 14:44:35 2020 -0700

    src/flash/nor/virtual: handle null pointers
    
    Either of protect and protect_check driver callbacks can be NULL. In
    virtual_protect, reuse flash_driver_protect which checks for that case
    and generates a nice error message and return code. In
    virtual_protect_check, there is no corresponding flash_driver_*
    function, so add the NULL check directly.
    
    Change-Id: Ia63d85ede640a8382cf5cad0760f5d1ffe4d7cfe
    Signed-off-by: Christopher Head <[email protected]>

diff --git a/src/flash/nor/virtual.c b/src/flash/nor/virtual.c
index c9e1942..de091f8 100644
--- a/src/flash/nor/virtual.c
+++ b/src/flash/nor/virtual.c
@@ -79,33 +79,27 @@ static int virtual_protect(struct flash_bank *bank, int 
set, unsigned int first,
                unsigned int last)
 {
        struct flash_bank *master_bank = virtual_get_master_bank(bank);
-       int retval;
 
        if (master_bank == NULL)
                return ERROR_FLASH_OPERATION_FAILED;
 
-       /* call master handler */
-       retval = master_bank->driver->protect(master_bank, set, first, last);
-       if (retval != ERROR_OK)
-               return retval;
-
-       return ERROR_OK;
+       return flash_driver_protect(master_bank, set, first, last);
 }
 
 static int virtual_protect_check(struct flash_bank *bank)
 {
        struct flash_bank *master_bank = virtual_get_master_bank(bank);
-       int retval;
 
        if (master_bank == NULL)
                return ERROR_FLASH_OPERATION_FAILED;
 
-       /* call master handler */
-       retval = master_bank->driver->protect_check(master_bank);
-       if (retval != ERROR_OK)
-               return retval;
+       if (master_bank->driver->protect_check == NULL) {
+               LOG_ERROR("Flash protection checking is not supported.");
+               return ERROR_FLASH_OPER_UNSUPPORTED;
+       }
 
-       return ERROR_OK;
+       /* call master handler */
+       return master_bank->driver->protect_check(master_bank);
 }
 
 static int virtual_erase(struct flash_bank *bank, unsigned int first,

-- 


_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to