[bug report] soc: qcom: smem: Expose DDR data from SMEM
Dan Carpenter <[email protected]>
| Newsgroups | org.kernel.vger.linux-arm-msm |
|---|---|
| Message-ID | <[email protected]> |
Hello Konrad Dybcio,
Commit 1d234eeafc56 ("soc: qcom: smem: Expose DDR data from SMEM")
from Jul 27, 2026 (linux-next), leads to the following Smatch static
checker warning:
drivers/soc/qcom/smem_dramc.c:341 smem_dram_infer_struct_version()
warn: duplicate check 'size == 264 + 6 * 40 + 44 + 68' (previous on line 326)
drivers/soc/qcom/smem_dramc.c
291 static int smem_dram_infer_struct_version(size_t size)
292 {
293 /* Some early versions provided less bytes of less useful data */
294 if (size < sizeof(struct ddr_details_v3))
295 return -EINVAL;
296
297 if (size == sizeof(struct ddr_details_v3))
298 return INFO_V3;
299
300 if (size == sizeof(struct ddr_details_v3_14freqs))
301 return INFO_V3_WITH_14_FREQS;
302
303 if (size == sizeof(struct ddr_details_v4))
304 return INFO_V4;
305
306 if (size == sizeof(struct ddr_details_v5) +
307 4 * sizeof(struct ddr_region_v5))
308 return INFO_V5;
309
310 if (size == sizeof(struct ddr_details_v5) +
311 4 * sizeof(struct ddr_region_v5) +
312 sizeof(struct ddr_xbl2quantum_smem_data) +
313 sizeof(struct shub_freq_plan_entry))
314 return INFO_V5;
315
316 if (size == sizeof(struct ddr_details_v5) +
317 6 * sizeof(struct ddr_region_v5))
318 return INFO_V5_WITH_6_REGIONS;
319
320 if (size == sizeof(struct ddr_details_v5) +
321 6 * sizeof(struct ddr_region_v5) +
322 sizeof(struct ddr_xbl2quantum_smem_data) +
323 sizeof(struct shub_freq_plan_entry))
324 return INFO_V5_WITH_6_REGIONS;
325
326 if (size == sizeof(struct ddr_details_v5) +
327 6 * sizeof(struct ddr_region_v5) +
328 sizeof(struct ddr_misc_info_v6) +
329 sizeof(struct shub_freq_plan_entry))
330 return INFO_V6;
^^^^^^^^^^^^^^^
331
332 if (size == sizeof(struct ddr_details_v7) +
333 4 * sizeof(struct ddr_region_v5) +
334 sizeof(struct ddr_misc_info_v6) +
335 sizeof(struct shub_freq_plan_entry))
336 return INFO_V7;
337
338 if (size == sizeof(struct ddr_details_v7) +
339 6 * sizeof(struct ddr_region_v5) +
340 sizeof(struct ddr_misc_info_v6) +
--> 341 sizeof(struct shub_freq_plan_entry))
342 return INFO_V7_WITH_6_REGIONS;
This is dead code. These sizes are the same. was _v7 intended
instead of ddr_region_v5?
343
344 return INFO_UNKNOWN;
345 }
This email is a free service from the Smatch-CI project [smatch.sf.net].
regards,
dan carpenter