[coreboot] New Defects reported by Coverity Scan for coreboot

scan-admin at coverity.com scan-admin at coverity.com
Tue Mar 7 13:24:28 CET 2017


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.
1 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 1371825:  Uninitialized variables  (UNINIT)
/src/mainboard/intel/kblrvp/romstage.c: 58 in mainboard_memory_init_params()


________________________________________________________________________________________________________
*** CID 1371825:  Uninitialized variables  (UNINIT)
/src/mainboard/intel/kblrvp/romstage.c: 58 in mainboard_memory_init_params()
52     	} else {  /* for CONFIG_BOARD_INTEL_KBLRVP7 */
53     		struct spd_block blk;
54     
55     		mem_cfg->DqPinsInterleaved = 1;
56     		get_spd_smbus(&blk);
57     		mem_cfg->MemorySpdDataLen = blk.len;
>>>     CID 1371825:  Uninitialized variables  (UNINIT)
>>>     Using uninitialized element of array "blk.spd_array".
58     		mem_cfg->MemorySpdPtr00 = (u32)blk.spd_array[0];
59     	}
60     	mem_cfg->MemorySpdPtr10 = mem_cfg->MemorySpdPtr00;

** CID 1371824:  Control flow issues  (NO_EFFECT)
/src/lib/spd_bin.c: 160 in get_spd_smbus()


________________________________________________________________________________________________________
*** CID 1371824:  Control flow issues  (NO_EFFECT)
/src/lib/spd_bin.c: 160 in get_spd_smbus()
154     
155     void get_spd_smbus(struct spd_block *blk)
156     {
157     	u8 i;
158     	unsigned char *spd_data_ptr = car_get_var_ptr(&spd_data);
159     
>>>     CID 1371824:  Control flow issues  (NO_EFFECT)
>>>     This less-than-zero comparison of an unsigned value is never true. "i < 0".
160     	for (i = 0 ; i < CONFIG_DIMM_MAX; i++) {
161     		get_spd(spd_data_ptr + i * CONFIG_DIMM_SPD_SIZE,
162     			0xA0 + (i << 1));
163     		blk->spd_array[i] = spd_data_ptr + i * CONFIG_DIMM_SPD_SIZE;
164     	}
165     

** CID 1371823:  Control flow issues  (NO_EFFECT)
/src/lib/spd_bin.c: 104 in update_spd_len()


________________________________________________________________________________________________________
*** CID 1371823:  Control flow issues  (NO_EFFECT)
/src/lib/spd_bin.c: 104 in update_spd_len()
98     	}
99     }
100     
101     static void update_spd_len(struct spd_block *blk)
102     {
103     	u8 i, j = 0;
>>>     CID 1371823:  Control flow issues  (NO_EFFECT)
>>>     This less-than-zero comparison of an unsigned value is never true. "i < 0".
104     	for (i = 0 ; i < CONFIG_DIMM_MAX; i++)
105     		if (blk->spd_array[i] != NULL)
106     			j |= blk->spd_array[i][SPD_DRAM_TYPE];
107     
108     	/* If spd used is DDR4, then its length is 512 byte. */
109     	if (j == SPD_DRAM_DDR4)

** CID 1371822:  Control flow issues  (NO_EFFECT)
/src/lib/spd_bin.c: 30 in dump_spd_info()


________________________________________________________________________________________________________
*** CID 1371822:  Control flow issues  (NO_EFFECT)
/src/lib/spd_bin.c: 30 in dump_spd_info()
24     static u8 spd_data[CONFIG_DIMM_MAX * CONFIG_DIMM_SPD_SIZE] CAR_GLOBAL;
25     
26     void dump_spd_info(struct spd_block *blk)
27     {
28     	u8 i;
29     
>>>     CID 1371822:  Control flow issues  (NO_EFFECT)
>>>     This less-than-zero comparison of an unsigned value is never true. "i < 0".
30     	for (i = 0; i < CONFIG_DIMM_MAX; i++)
31     		if (blk->spd_array[i] != NULL && blk->spd_array[i][0] != 0) {
32     			printk(BIOS_DEBUG, "SPD @ 0x%02X\n", 0xA0|(i << 1));
33     			print_spd_info(blk->spd_array[i]);
34     		}
35     }

** CID 1371821:  Control flow issues  (DEADCODE)
/src/lib/spd_bin.c: 105 in update_spd_len()


________________________________________________________________________________________________________
*** CID 1371821:  Control flow issues  (DEADCODE)
/src/lib/spd_bin.c: 105 in update_spd_len()
99     }
100     
101     static void update_spd_len(struct spd_block *blk)
102     {
103     	u8 i, j = 0;
104     	for (i = 0 ; i < CONFIG_DIMM_MAX; i++)
>>>     CID 1371821:  Control flow issues  (DEADCODE)
>>>     Execution cannot reach this statement: "if (blk->spd_array[i] != NU...".
105     		if (blk->spd_array[i] != NULL)
106     			j |= blk->spd_array[i][SPD_DRAM_TYPE];
107     
108     	/* If spd used is DDR4, then its length is 512 byte. */
109     	if (j == SPD_DRAM_DDR4)
110     		blk->len = SPD_PAGE_LEN_DDR4;

** CID 1371820:  Control flow issues  (DEADCODE)
/src/lib/spd_bin.c: 161 in get_spd_smbus()


________________________________________________________________________________________________________
*** CID 1371820:  Control flow issues  (DEADCODE)
/src/lib/spd_bin.c: 161 in get_spd_smbus()
155     void get_spd_smbus(struct spd_block *blk)
156     {
157     	u8 i;
158     	unsigned char *spd_data_ptr = car_get_var_ptr(&spd_data);
159     
160     	for (i = 0 ; i < CONFIG_DIMM_MAX; i++) {
>>>     CID 1371820:  Control flow issues  (DEADCODE)
>>>     Execution cannot reach this statement: "get_spd(spd_data_ptr + i * ...".
161     		get_spd(spd_data_ptr + i * CONFIG_DIMM_SPD_SIZE,
162     			0xA0 + (i << 1));
163     		blk->spd_array[i] = spd_data_ptr + i * CONFIG_DIMM_SPD_SIZE;
164     	}
165     
166     	update_spd_len(blk);

** CID 1371819:  Control flow issues  (DEADCODE)
/src/lib/spd_bin.c: 110 in update_spd_len()


________________________________________________________________________________________________________
*** CID 1371819:  Control flow issues  (DEADCODE)
/src/lib/spd_bin.c: 110 in update_spd_len()
104     	for (i = 0 ; i < CONFIG_DIMM_MAX; i++)
105     		if (blk->spd_array[i] != NULL)
106     			j |= blk->spd_array[i][SPD_DRAM_TYPE];
107     
108     	/* If spd used is DDR4, then its length is 512 byte. */
109     	if (j == SPD_DRAM_DDR4)
>>>     CID 1371819:  Control flow issues  (DEADCODE)
>>>     Execution cannot reach this statement: "blk->len = 512;".
110     		blk->len = SPD_PAGE_LEN_DDR4;
111     	else
112     		blk->len = SPD_PAGE_LEN;
113     }
114     
115     int get_spd_cbfs_rdev(struct region_device *spd_rdev, u8 spd_index)

** CID 1371818:  Control flow issues  (DEADCODE)
/src/lib/spd_bin.c: 31 in dump_spd_info()


________________________________________________________________________________________________________
*** CID 1371818:  Control flow issues  (DEADCODE)
/src/lib/spd_bin.c: 31 in dump_spd_info()
25     
26     void dump_spd_info(struct spd_block *blk)
27     {
28     	u8 i;
29     
30     	for (i = 0; i < CONFIG_DIMM_MAX; i++)
>>>     CID 1371818:  Control flow issues  (DEADCODE)
>>>     Execution cannot reach this statement: "if (blk->spd_array[i] != NU...".
31     		if (blk->spd_array[i] != NULL && blk->spd_array[i][0] != 0) {
32     			printk(BIOS_DEBUG, "SPD @ 0x%02X\n", 0xA0|(i << 1));
33     			print_spd_info(blk->spd_array[i]);
34     		}
35     }
36     

** CID 1371817:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
/src/lib/spd_bin.c: 104 in update_spd_len()


________________________________________________________________________________________________________
*** CID 1371817:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
/src/lib/spd_bin.c: 104 in update_spd_len()
98     	}
99     }
100     
101     static void update_spd_len(struct spd_block *blk)
102     {
103     	u8 i, j = 0;
>>>     CID 1371817:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
>>>     "i < 0" is always false regardless of the values of its operands. This occurs as the logical operand of "for".
104     	for (i = 0 ; i < CONFIG_DIMM_MAX; i++)
105     		if (blk->spd_array[i] != NULL)
106     			j |= blk->spd_array[i][SPD_DRAM_TYPE];
107     
108     	/* If spd used is DDR4, then its length is 512 byte. */
109     	if (j == SPD_DRAM_DDR4)

** CID 1371816:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
/src/lib/spd_bin.c: 160 in get_spd_smbus()


________________________________________________________________________________________________________
*** CID 1371816:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
/src/lib/spd_bin.c: 160 in get_spd_smbus()
154     
155     void get_spd_smbus(struct spd_block *blk)
156     {
157     	u8 i;
158     	unsigned char *spd_data_ptr = car_get_var_ptr(&spd_data);
159     
>>>     CID 1371816:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
>>>     "i < 0" is always false regardless of the values of its operands. This occurs as the logical operand of "for".
160     	for (i = 0 ; i < CONFIG_DIMM_MAX; i++) {
161     		get_spd(spd_data_ptr + i * CONFIG_DIMM_SPD_SIZE,
162     			0xA0 + (i << 1));
163     		blk->spd_array[i] = spd_data_ptr + i * CONFIG_DIMM_SPD_SIZE;
164     	}
165     

** CID 1371815:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
/src/lib/spd_bin.c: 30 in dump_spd_info()


________________________________________________________________________________________________________
*** CID 1371815:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
/src/lib/spd_bin.c: 30 in dump_spd_info()
24     static u8 spd_data[CONFIG_DIMM_MAX * CONFIG_DIMM_SPD_SIZE] CAR_GLOBAL;
25     
26     void dump_spd_info(struct spd_block *blk)
27     {
28     	u8 i;
29     
>>>     CID 1371815:  Integer handling issues  (CONSTANT_EXPRESSION_RESULT)
>>>     "i < 0" is always false regardless of the values of its operands. This occurs as the logical operand of "for".
30     	for (i = 0; i < CONFIG_DIMM_MAX; i++)
31     		if (blk->spd_array[i] != NULL && blk->spd_array[i][0] != 0) {
32     			printk(BIOS_DEBUG, "SPD @ 0x%02X\n", 0xA0|(i << 1));
33     			print_spd_info(blk->spd_array[i]);
34     		}
35     }

** CID 1371814:  Memory - illegal accesses  (BUFFER_SIZE_WARNING)
/src/soc/intel/common/smbios.c: 31 in dimm_info_fill()


________________________________________________________________________________________________________
*** CID 1371814:  Memory - illegal accesses  (BUFFER_SIZE_WARNING)
/src/soc/intel/common/smbios.c: 31 in dimm_info_fill()
25     {
26     	dimm->dimm_size = dimm_capacity;
27     	dimm->ddr_type = ddr_type;
28     	dimm->ddr_frequency = frequency;
29     	dimm->channel_num = channel_id;
30     	dimm->dimm_num = dimm_id;
>>>     CID 1371814:  Memory - illegal accesses  (BUFFER_SIZE_WARNING)
>>>     Calling strncpy with a maximum size argument of 19 bytes on destination array "dimm->module_part_number" of size 19 bytes might leave the destination string unterminated.
31     	strncpy((char *)dimm->module_part_number,
32     			module_part_num,
33     			sizeof(dimm->module_part_number));
34     	switch (data_width) {
35     	case 8:
36     		dimm->bus_width = MEMORY_BUS_WIDTH_8;


________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRbLuoVetFLSjdonCi1EjfHRqWGQvojmmkYaBE-2BPJiTQvQ-3D-3D_q4bX76XMySz3BXBlWr5fXXJ4cvAsgEXEqC7dBPM7O5bQ628PfrOPmna3sbO51pO2xPctEShvrwCkBSSMVdvtg7qGH2br6TGccmTHZV3nYrlSEdLtwMgdnauTv-2Fu5Qm4LHDnYmgZPYbR3dE6dP9ZaGUalg4ozwoP8gP5WQnIQcvbcucsDsilcvvr4MerpJdvfLBrr7PKJJAYpyYRMea2zpvZi39QjZpUo6ncW9dYE9Vw-3D

To manage Coverity Scan email notifications for "coreboot at coreboot.org", click https://u2389337.ct.sendgrid.net/wf/click?upn=08onrYu34A-2BWcWUl-2F-2BfV0V05UPxvVjWch-2Bd2MGckcRbVDbis712qZDP-2FA8y06Nq4e-2BpBzwOa5gzBZa9dWpDbzfofODnVj1enK2UkK0-2BgCCqyeem8IVKvTxSaOFkteZFcnohwvb2rnYNjswGryEWCURnUk6WHU42sbOmtOjD-2Bx5c-3D_q4bX76XMySz3BXBlWr5fXXJ4cvAsgEXEqC7dBPM7O5bQ628PfrOPmna3sbO51pO2C-2BaG0xvvh-2BduyG9h6BsXv0GQUPxIoGIH4muLDuFKSN-2BHEFFj8ObXxoCIGGcER8yPtXLcFC78NKwU1s0xvSVuht-2FI72uBLkpv0CsNdZ23EjLKu9GCml-2By0yqIsqWEvAkjFy57wWTRlHZakvvJahK8dxai85bewrSSKk7DEZ5YMR4-3D




More information about the coreboot mailing list