ipq807x: Changes for fixing kw issues

Adding nullpointer condition checks before the pointer
is accessed or passed to a function as argument.

Change-Id: I6848c132076708f69fad00a75e42a1c2f33b6215
Signed-off-by: Nikhil Prakash V <nprakash@codeaurora.org>
This commit is contained in:
Nikhil Prakash V 2018-03-06 12:50:31 +05:30
parent 5f9bb09d0d
commit e47694ebe8
3 changed files with 28 additions and 22 deletions

View file

@ -111,7 +111,7 @@ int common_diskboot(cmd_tbl_t *cmdtp, const char *intf, int argc,
#if defined(CONFIG_FIT) #if defined(CONFIG_FIT)
/* This cannot be done earlier, /* This cannot be done earlier,
* we need complete FIT image in RAM first */ * we need complete FIT image in RAM first */
if (genimg_get_format((void *) addr) == IMAGE_FORMAT_FIT) { if (fit_hdr && genimg_get_format((void *)addr) == IMAGE_FORMAT_FIT) {
if (!fit_check_format(fit_hdr)) { if (!fit_check_format(fit_hdr)) {
bootstage_error(BOOTSTAGE_ID_IDE_FIT_READ); bootstage_error(BOOTSTAGE_ID_IDE_FIT_READ);
puts("** Bad FIT image format\n"); puts("** Bad FIT image format\n");

View file

@ -872,14 +872,14 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand,
#if defined(CONFIG_FIT) #if defined(CONFIG_FIT)
/* This cannot be done earlier, we need complete FIT image in RAM first */ /* This cannot be done earlier, we need complete FIT image in RAM first */
if (genimg_get_format ((void *)addr) == IMAGE_FORMAT_FIT) { if (fit_hdr && genimg_get_format((void *)addr) == IMAGE_FORMAT_FIT) {
if (!fit_check_format (fit_hdr)) { if (!fit_check_format(fit_hdr)) {
bootstage_error(BOOTSTAGE_ID_NAND_FIT_READ); bootstage_error(BOOTSTAGE_ID_NAND_FIT_READ);
puts ("** Bad FIT image format\n"); puts("** Bad FIT image format\n");
return 1; return 1;
} }
bootstage_mark(BOOTSTAGE_ID_NAND_FIT_READ_OK); bootstage_mark(BOOTSTAGE_ID_NAND_FIT_READ_OK);
fit_print_contents (fit_hdr); fit_print_contents(fit_hdr);
} }
#endif #endif

View file

@ -79,21 +79,24 @@ static struct adma_desc *sdhci_prepare_descriptors(void *data, uint32_t len)
uint32_t table_len = 0; uint32_t table_len = 0;
if (len <= SDHCI_ADMA_DESC_LINE_SZ) { if (len <= SDHCI_ADMA_DESC_LINE_SZ) {
list = (struct adma_desc *) memalign(CACHE_LINE_SIZE, sizeof(struct adma_desc)); list = (struct adma_desc *)memalign(CACHE_LINE_SIZE,
sizeof(struct adma_desc));
if (!list) { if (!list) {
printf("Error allocating memory\n"); printf("Error allocating memory\n");
assert(0); assert(0);
} } else {
list[0].addr = (uint32_t)data;
list[0].addr = (uint32_t)data; list[0].len = (len < SDHCI_ADMA_DESC_LINE_SZ) ? len :
list[0].len = (len < SDHCI_ADMA_DESC_LINE_SZ) ? len : (SDHCI_ADMA_DESC_LINE_SZ & 0xffff); (SDHCI_ADMA_DESC_LINE_SZ & 0xffff);
list[0].tran_att = SDHCI_ADMA_TRANS_VALID | SDHCI_ADMA_TRANS_DATA list[0].tran_att = SDHCI_ADMA_TRANS_VALID |
| SDHCI_ADMA_TRANS_END; SDHCI_ADMA_TRANS_DATA | SDHCI_ADMA_TRANS_END;
#if !defined(CONFIG_SYS_DCACHE_OFF) #if !defined(CONFIG_SYS_DCACHE_OFF)
flush_cache((unsigned long)list, sizeof(struct adma_desc)); flush_cache((unsigned long)list,
sizeof(struct adma_desc));
#endif #endif
}
} else { } else {
list_len = len / SDHCI_ADMA_DESC_LINE_SZ; list_len = len / SDHCI_ADMA_DESC_LINE_SZ;
remain = len - (list_len * SDHCI_ADMA_DESC_LINE_SZ); remain = len - (list_len * SDHCI_ADMA_DESC_LINE_SZ);
@ -108,26 +111,29 @@ static struct adma_desc *sdhci_prepare_descriptors(void *data, uint32_t len)
if (!list) { if (!list) {
printf("Allocating memory failed\n"); printf("Allocating memory failed\n");
assert(0); assert(0);
} } else {
memset((void *)list, 0, table_len);
memset((void *) list, 0, table_len); for (i = 0; i < (list_len - 1); i++) {
for (i = 0; i < (list_len - 1); i++) {
list[i].addr = (uint32_t)data; list[i].addr = (uint32_t)data;
list[i].len = (SDHCI_ADMA_DESC_LINE_SZ & 0xffff); list[i].len = (SDHCI_ADMA_DESC_LINE_SZ & 0xffff);
list[i].tran_att = SDHCI_ADMA_TRANS_VALID | SDHCI_ADMA_TRANS_DATA; list[i].tran_att = SDHCI_ADMA_TRANS_VALID |
SDHCI_ADMA_TRANS_DATA;
data += SDHCI_ADMA_DESC_LINE_SZ; data += SDHCI_ADMA_DESC_LINE_SZ;
len -= SDHCI_ADMA_DESC_LINE_SZ; len -= SDHCI_ADMA_DESC_LINE_SZ;
} }
list[list_len - 1].addr = (uint32_t)data; list[list_len - 1].addr = (uint32_t)data;
list[list_len - 1].len = (len < SDHCI_ADMA_DESC_LINE_SZ) ? len : (SDHCI_ADMA_DESC_LINE_SZ & 0xffff); list[list_len - 1].len = (len < SDHCI_ADMA_DESC_LINE_SZ)
list[list_len - 1].tran_att = SDHCI_ADMA_TRANS_VALID | SDHCI_ADMA_TRANS_DATA | ? len : (SDHCI_ADMA_DESC_LINE_SZ & 0xffff);
SDHCI_ADMA_TRANS_END; list[list_len - 1].tran_att = SDHCI_ADMA_TRANS_VALID |
SDHCI_ADMA_TRANS_DATA
| SDHCI_ADMA_TRANS_END;
#if !defined(CONFIG_SYS_DCACHE_OFF) #if !defined(CONFIG_SYS_DCACHE_OFF)
flush_cache((unsigned long)list, table_len); flush_cache((unsigned long)list, table_len);
#endif #endif
}
} }