Hi,

Please find the latest report on new defect(s) introduced to coreboot found 
with Coverity Scan.

12 new defect(s) introduced to coreboot found with Coverity Scan.
2 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent 
build analyzed by Coverity Scan.

New defect(s) Reported-by: Coverity Scan
Showing 12 of 12 defect(s)


** CID 1458079:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
/src/soc/intel/alderlake/crashlog.c: 68 in pmc_cl_discovery()


________________________________________________________________________________________________________
*** CID 1458079:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
/src/soc/intel/alderlake/crashlog.c: 68 in pmc_cl_discovery()
62      tmp_bar_addr = SPI_BASE_ADDRESS;
63      pci_write_config32(PCH_DEV_SRAM, PCI_BASE_ADDRESS_0, tmp_bar_addr);
64      pci_or_config16(PCH_DEV_SRAM, PCI_COMMAND, PCI_COMMAND_MEMORY);
65     
66      if (discovery_buf.bits.discov_mechanism == 1) {
67              /* discovery mode */
>>>     CID 1458079:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
>>>     "discovery_buf.bits.base_offset & (2147483648UL /* 1UL << 31 */)" is 
>>> always 0 regardless of the values of its operands. This occurs as the 
>>> logical operand of "if".
68              if (discovery_buf.bits.base_offset & BIT(31)) {
69                      printk(BIOS_DEBUG, "PCH discovery to be used is 
disabled.\n");
70                      m_pmc_crashLog_present = false;
71                      m_pmc_crashLog_size = 0;
72                      return false;
73              }

** CID 1458078:  Null pointer dereferences  (FORWARD_NULL)


________________________________________________________________________________________________________
*** CID 1458078:  Null pointer dereferences  (FORWARD_NULL)
/src/soc/intel/alderlake/crashlog.c: 45 in pmc_cl_discovery()
39     
40      cmd_reg = pmc_make_ipc_cmd(PMC_IPC_CMD_CRASHLOG,
41                              PMC_IPC_CMD_ID_CRASHLOG_DISCOVERY,
42                              PMC_IPC_CMD_SIZE_SHIFT);
43      printk(BIOS_DEBUG, "cmd_reg from pmc_make_ipc_cmd %d\n", cmd_reg);
44     
>>>     CID 1458078:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing null pointer "req" to "pmc_send_ipc_cmd", which dereferences it.
45      r = pmc_send_ipc_cmd(cmd_reg, req, res);
46     
47      if (r < 0) {
48              printk(BIOS_ERR, "pmc_send_ipc_cmd failed in %s\n", __func__);
49              return false;
50      }

** CID 1458077:  Null pointer dereferences  (FORWARD_NULL)


________________________________________________________________________________________________________
*** CID 1458077:  Null pointer dereferences  (FORWARD_NULL)
/src/soc/intel/alderlake/crashlog.c: 45 in pmc_cl_discovery()
39     
40      cmd_reg = pmc_make_ipc_cmd(PMC_IPC_CMD_CRASHLOG,
41                              PMC_IPC_CMD_ID_CRASHLOG_DISCOVERY,
42                              PMC_IPC_CMD_SIZE_SHIFT);
43      printk(BIOS_DEBUG, "cmd_reg from pmc_make_ipc_cmd %d\n", cmd_reg);
44     
>>>     CID 1458077:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing null pointer "res" to "pmc_send_ipc_cmd", which dereferences it.
45      r = pmc_send_ipc_cmd(cmd_reg, req, res);
46     
47      if (r < 0) {
48              printk(BIOS_ERR, "pmc_send_ipc_cmd failed in %s\n", __func__);
49              return false;
50      }

** CID 1458076:  Null pointer dereferences  (FORWARD_NULL)


________________________________________________________________________________________________________
*** CID 1458076:  Null pointer dereferences  (FORWARD_NULL)
/src/soc/intel/common/block/crashlog/crashlog.c: 256 in 
cl_pmc_en_gen_on_all_reboot()
250             int r;
251     
252             cmd_reg = pmc_make_ipc_cmd(PMC_IPC_CMD_CRASHLOG,
253                                     PMC_IPC_CMD_ID_CRASHLOG_ON_RESET,
254                                     PMC_IPC_CMD_SIZE_SHIFT);
255     
>>>     CID 1458076:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing null pointer "req" to "pmc_send_ipc_cmd", which dereferences it.
256             r = pmc_send_ipc_cmd(cmd_reg, req, res);
257     
258             if (r < 0) {
259                     printk(BIOS_ERR, "pmc_send_ipc_cmd failed in %s\n", 
__func__);
260                     return 0;
261             }

** CID 1458075:  Null pointer dereferences  (FORWARD_NULL)


________________________________________________________________________________________________________
*** CID 1458075:  Null pointer dereferences  (FORWARD_NULL)
/src/soc/intel/common/block/crashlog/crashlog.c: 206 in 
cl_pmc_re_arm_after_reset()
200             int r;
201     
202             cmd_reg = pmc_make_ipc_cmd(PMC_IPC_CMD_CRASHLOG,
203                                     PMC_IPC_CMD_ID_CRASHLOG_RE_ARM_ON_RESET,
204                                     PMC_IPC_CMD_SIZE_SHIFT);
205     
>>>     CID 1458075:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing null pointer "req" to "pmc_send_ipc_cmd", which dereferences it.
206             r = pmc_send_ipc_cmd(cmd_reg, req, res);
207     
208             if (r < 0) {
209                     printk(BIOS_ERR, "pmc_send_ipc_cmd failed in %s\n", 
__func__);
210                     return 0;
211             }

** CID 1458074:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
/src/soc/intel/alderlake/crashlog.c: 144 in cpu_cl_get_capability()


________________________________________________________________________________________________________
*** CID 1458074:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
/src/soc/intel/alderlake/crashlog.c: 144 in cpu_cl_get_capability()
138     
139             /* walk through the entries until crashLog entry */
140             cl_devsc_cap->devsc_data.data_32[1] = 
pci_read_config32(SA_DEV_TMT, TEL_DVSEV_ID);
141             int new_offset = 0;
142             while (cl_devsc_cap->devsc_data.fields.devsc_id != 
CRASHLOG_DVSEC_ID) {
143                     if (cl_devsc_cap->cap_data.fields.next_cap_offset == 0
>>>     CID 1458074:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
>>>     "cl_devsc_cap->cap_data.fields.next_cap_offset == 65535" is always 
>>> false regardless of the values of its operands. This occurs as the logical 
>>> second operand of "||".
144                          || cl_devsc_cap->cap_data.fields.next_cap_offset 
== 0xFFFF) {
145                             printk(BIOS_DEBUG, "Read invalid pcie_cap_id 
value: 0x%x\n",
146                                    
cl_devsc_cap->cap_data.fields.pcie_cap_id);
147                             return false;
148                     }
149                     new_offset = 
cl_devsc_cap->cap_data.fields.next_cap_offset;

** CID 1458073:  Null pointer dereferences  (FORWARD_NULL)


________________________________________________________________________________________________________
*** CID 1458073:  Null pointer dereferences  (FORWARD_NULL)
/src/soc/intel/common/block/crashlog/crashlog.c: 206 in 
cl_pmc_re_arm_after_reset()
200             int r;
201     
202             cmd_reg = pmc_make_ipc_cmd(PMC_IPC_CMD_CRASHLOG,
203                                     PMC_IPC_CMD_ID_CRASHLOG_RE_ARM_ON_RESET,
204                                     PMC_IPC_CMD_SIZE_SHIFT);
205     
>>>     CID 1458073:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing null pointer "res" to "pmc_send_ipc_cmd", which dereferences it.
206             r = pmc_send_ipc_cmd(cmd_reg, req, res);
207     
208             if (r < 0) {
209                     printk(BIOS_ERR, "pmc_send_ipc_cmd failed in %s\n", 
__func__);
210                     return 0;
211             }

** CID 1458072:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
/src/soc/intel/common/block/crashlog/crashlog.c: 342 in cl_get_pmc_sram_data()


________________________________________________________________________________________________________
*** CID 1458072:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
/src/soc/intel/common/block/crashlog/crashlog.c: 342 in cl_get_pmc_sram_data()
336                     printk(BIOS_DEBUG, "PCH crashlog feature not 
supported.\n");
337                     goto pmc_send_re_arm_after_reset;
338             }
339     
340             /* Get the size of data to copy */
341             if (discovery_buf.bits.discov_mechanism == 1) {
>>>     CID 1458072:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
>>>     "discovery_buf.bits.base_offset & (2147483648UL /* 1UL << 31 */)" is 
>>> always 0 regardless of the values of its operands. This occurs as the 
>>> logical operand of "if".
342                     if (discovery_buf.bits.base_offset & BIT(31)) {
343                             printk(BIOS_DEBUG, "PCH discovery to be used is 
disabled.\n");
344                             goto pmc_send_re_arm_after_reset;
345                     }
346                     printk(BIOS_DEBUG, "PMC crashLog size in discovery mode 
: 0x%X\n",
347                            pmc_crashLog_size);

** CID 1458071:  Null pointer dereferences  (FORWARD_NULL)


________________________________________________________________________________________________________
*** CID 1458071:  Null pointer dereferences  (FORWARD_NULL)
/src/soc/intel/common/block/crashlog/crashlog.c: 229 in cl_pmc_clear()
223             int r;
224     
225             cmd_reg = pmc_make_ipc_cmd(PMC_IPC_CMD_CRASHLOG,
226                                     PMC_IPC_CMD_ID_CRASHLOG_ERASE,
227                                     PMC_IPC_CMD_SIZE_SHIFT);
228     
>>>     CID 1458071:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing null pointer "res" to "pmc_send_ipc_cmd", which dereferences it.
229             r = pmc_send_ipc_cmd(cmd_reg, req, res);
230     
231             if (r < 0) {
232                     printk(BIOS_ERR, "pmc_send_ipc_cmd failed in %s\n", 
__func__);
233                     return 0;
234             }

** CID 1458070:  Null pointer dereferences  (FORWARD_NULL)


________________________________________________________________________________________________________
*** CID 1458070:  Null pointer dereferences  (FORWARD_NULL)
/src/soc/intel/common/block/crashlog/crashlog.c: 256 in 
cl_pmc_en_gen_on_all_reboot()
250             int r;
251     
252             cmd_reg = pmc_make_ipc_cmd(PMC_IPC_CMD_CRASHLOG,
253                                     PMC_IPC_CMD_ID_CRASHLOG_ON_RESET,
254                                     PMC_IPC_CMD_SIZE_SHIFT);
255     
>>>     CID 1458070:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing null pointer "res" to "pmc_send_ipc_cmd", which dereferences it.
256             r = pmc_send_ipc_cmd(cmd_reg, req, res);
257     
258             if (r < 0) {
259                     printk(BIOS_ERR, "pmc_send_ipc_cmd failed in %s\n", 
__func__);
260                     return 0;
261             }

** CID 1458069:    (OVERRUN)
/src/soc/intel/common/block/crashlog/crashlog.c: 168 in 
pmc_cl_gen_descriptor_table()
/src/soc/intel/common/block/crashlog/crashlog.c: 170 in 
pmc_cl_gen_descriptor_table()
/src/soc/intel/common/block/crashlog/crashlog.c: 169 in 
pmc_cl_gen_descriptor_table()


________________________________________________________________________________________________________
*** CID 1458069:    (OVERRUN)
/src/soc/intel/common/block/crashlog/crashlog.c: 168 in 
pmc_cl_gen_descriptor_table()
162             int total_data_size = 0;
163             descriptor_table->numb_regions = read32((u32 *)desc_table_addr);
164             printk(BIOS_DEBUG, "CL PMC desc table: numb of regions is 0x%x 
at addr 0x%x\n",
165                    descriptor_table->numb_regions, desc_table_addr);
166             for (int i = 0; i < descriptor_table->numb_regions; i++) {
167                     desc_table_addr += 4;
>>>     CID 1458069:    (OVERRUN)
>>>     Overrunning array "descriptor_table->regions" of 256 4-byte elements at 
>>> element index 256 (byte offset 1027) using index "i" (which evaluates to 
>>> 256).
168                     descriptor_table->regions[i].data = read32((u32 
*)(desc_table_addr));
169                     total_data_size += 
descriptor_table->regions[i].bits.size * sizeof(u32);
170                     printk(BIOS_DEBUG, "CL PMC desc table: region 0x%x has 
size 0x%x at offset 0x%x\n",
171                             i, descriptor_table->regions[i].bits.size,
172                             descriptor_table->regions[i].bits.offset);
173                     if (i > 255) {
/src/soc/intel/common/block/crashlog/crashlog.c: 170 in 
pmc_cl_gen_descriptor_table()
164             printk(BIOS_DEBUG, "CL PMC desc table: numb of regions is 0x%x 
at addr 0x%x\n",
165                    descriptor_table->numb_regions, desc_table_addr);
166             for (int i = 0; i < descriptor_table->numb_regions; i++) {
167                     desc_table_addr += 4;
168                     descriptor_table->regions[i].data = read32((u32 
*)(desc_table_addr));
169                     total_data_size += 
descriptor_table->regions[i].bits.size * sizeof(u32);
>>>     CID 1458069:    (OVERRUN)
>>>     Overrunning array "descriptor_table->regions" of 256 4-byte elements at 
>>> element index 256 (byte offset 1027) using index "i" (which evaluates to 
>>> 256).
170                     printk(BIOS_DEBUG, "CL PMC desc table: region 0x%x has 
size 0x%x at offset 0x%x\n",
171                             i, descriptor_table->regions[i].bits.size,
172                             descriptor_table->regions[i].bits.offset);
173                     if (i > 255) {
174                             printk(BIOS_ERR, "More than 255 regions in PMC 
crashLog descriptor table");
175                             break;
/src/soc/intel/common/block/crashlog/crashlog.c: 169 in 
pmc_cl_gen_descriptor_table()
163             descriptor_table->numb_regions = read32((u32 *)desc_table_addr);
164             printk(BIOS_DEBUG, "CL PMC desc table: numb of regions is 0x%x 
at addr 0x%x\n",
165                    descriptor_table->numb_regions, desc_table_addr);
166             for (int i = 0; i < descriptor_table->numb_regions; i++) {
167                     desc_table_addr += 4;
168                     descriptor_table->regions[i].data = read32((u32 
*)(desc_table_addr));
>>>     CID 1458069:    (OVERRUN)
>>>     Overrunning array "descriptor_table->regions" of 256 4-byte elements at 
>>> element index 256 (byte offset 1027) using index "i" (which evaluates to 
>>> 256).
169                     total_data_size += 
descriptor_table->regions[i].bits.size * sizeof(u32);
170                     printk(BIOS_DEBUG, "CL PMC desc table: region 0x%x has 
size 0x%x at offset 0x%x\n",
171                             i, descriptor_table->regions[i].bits.size,
172                             descriptor_table->regions[i].bits.offset);
173                     if (i > 255) {
174                             printk(BIOS_ERR, "More than 255 regions in PMC 
crashLog descriptor table");

** CID 1458068:  Null pointer dereferences  (FORWARD_NULL)


________________________________________________________________________________________________________
*** CID 1458068:  Null pointer dereferences  (FORWARD_NULL)
/src/soc/intel/common/block/crashlog/crashlog.c: 229 in cl_pmc_clear()
223             int r;
224     
225             cmd_reg = pmc_make_ipc_cmd(PMC_IPC_CMD_CRASHLOG,
226                                     PMC_IPC_CMD_ID_CRASHLOG_ERASE,
227                                     PMC_IPC_CMD_SIZE_SHIFT);
228     
>>>     CID 1458068:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing null pointer "req" to "pmc_send_ipc_cmd", which dereferences it.
229             r = pmc_send_ipc_cmd(cmd_reg, req, res);
230     
231             if (r < 0) {
232                     printk(BIOS_ERR, "pmc_send_ipc_cmd failed in %s\n", 
__func__);
233                     return 0;
234             }


________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, 
https://u15810271.ct.sendgrid.net/ls/click?upn=HRESupC-2F2Czv4BOaCWWCy7my0P0qcxCbhZ31OYv50yq2SfQfrHt3Prsn4qSLrYIrajINpiFX8l0vrlNSf8iCrS27qY0Cr0DkycwNUgGZJj8-3D_gWM_L-2FDzr14mnrsJO5b1wX1hp9b1MAQygl7x-2B74RAaH2cn3b5MLJbdyxb7xCO1-2FBqxZQQgbioMiw5PQvt1VWBmxITEjB2dqCKhUCh2l2EGn6y9ZsbVG03Ue0BDW8yS4N87WuhjgId52eOFijVTZTTtXHycZmgNY0gUkpV2pkBlVe6NRlPNSskLdWbgAW6XgjZo6TQUctEmPbsZSej7PkSs0bsUXG2Ki9KlmIZuFGQcXmETU-3D

_______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-le...@coreboot.org

Reply via email to