Hi Badal,

kernel test robot noticed the following build warnings:

https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    
https://github.com/intel-lab-lkp/linux/commits/Badal-Nilawar/mei-bus-add-mei_cldev_mtu-interface/20250619-025825
base:   https://gitlab.freedesktop.org/drm/xe/kernel.git drm-xe-next
patch link:    
https://lore.kernel.org/r/20250618190007.2932322-10-badal.nilawar%40intel.com
patch subject: [PATCH v3 09/10] drm/xe/xe_late_bind_fw: Extract and print 
version info
config: i386-randconfig-141-20250623 
(https://download.01.org/0day-ci/archive/20250624/202506241449.wdiucfjp-...@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <l...@intel.com>
| Reported-by: Dan Carpenter <dan.carpen...@linaro.org>
| Closes: https://lore.kernel.org/r/202506241449.wdiucfjp-...@intel.com/

New smatch warnings:
drivers/gpu/drm/xe/xe_late_bind_fw.c:90 parse_cpd_header() error: uninitialized 
symbol 'offset'.
drivers/gpu/drm/xe/xe_late_bind_fw.c:155 parse_lb_layout() error: uninitialized 
symbol 'offset'.

Old smatch warnings:
drivers/gpu/drm/xe/xe_late_bind_fw.c:195 
xe_late_bind_wait_for_worker_completion() warn: inconsistent indenting

vim +/offset +90 drivers/gpu/drm/xe/xe_late_bind_fw.c

f9ea24fb9528adc Badal Nilawar 2025-06-19   49  static int 
parse_cpd_header(struct xe_late_bind *late_bind, u32 fw_id,
f9ea24fb9528adc Badal Nilawar 2025-06-19   50                       const void 
*data, size_t size, const char *manifest_entry)
f9ea24fb9528adc Badal Nilawar 2025-06-19   51  {
f9ea24fb9528adc Badal Nilawar 2025-06-19   52   struct xe_device *xe = 
late_bind_to_xe(late_bind);
f9ea24fb9528adc Badal Nilawar 2025-06-19   53   const struct gsc_cpd_header_v2 
*header = data;
f9ea24fb9528adc Badal Nilawar 2025-06-19   54   const struct 
gsc_manifest_header *manifest;
f9ea24fb9528adc Badal Nilawar 2025-06-19   55   const struct gsc_cpd_entry 
*entry;
f9ea24fb9528adc Badal Nilawar 2025-06-19   56   size_t min_size = 
sizeof(*header);
f9ea24fb9528adc Badal Nilawar 2025-06-19   57   struct xe_late_bind_fw *lb_fw;
f9ea24fb9528adc Badal Nilawar 2025-06-19   58   u32 offset;
                                                ^^^^^^^^^^^

f9ea24fb9528adc Badal Nilawar 2025-06-19   59   int i;
f9ea24fb9528adc Badal Nilawar 2025-06-19   60  
f9ea24fb9528adc Badal Nilawar 2025-06-19   61   if (fw_id >= MAX_FW_ID)
f9ea24fb9528adc Badal Nilawar 2025-06-19   62           return -EINVAL;
f9ea24fb9528adc Badal Nilawar 2025-06-19   63   lb_fw = 
&late_bind->late_bind_fw[fw_id];
f9ea24fb9528adc Badal Nilawar 2025-06-19   64  
f9ea24fb9528adc Badal Nilawar 2025-06-19   65   /* manifest_entry is mandatory 
*/
f9ea24fb9528adc Badal Nilawar 2025-06-19   66   xe_assert(xe, manifest_entry);
f9ea24fb9528adc Badal Nilawar 2025-06-19   67  
f9ea24fb9528adc Badal Nilawar 2025-06-19   68   if (size < min_size || 
header->header_marker != GSC_CPD_HEADER_MARKER)
f9ea24fb9528adc Badal Nilawar 2025-06-19   69           return -ENOENT;
f9ea24fb9528adc Badal Nilawar 2025-06-19   70  
f9ea24fb9528adc Badal Nilawar 2025-06-19   71   if (header->header_length < 
sizeof(struct gsc_cpd_header_v2)) {
f9ea24fb9528adc Badal Nilawar 2025-06-19   72           drm_err(&xe->drm, "%s 
late binding fw: Invalid CPD header length %u!\n",
f9ea24fb9528adc Badal Nilawar 2025-06-19   73                   
fw_id_to_name[lb_fw->id], header->header_length);
f9ea24fb9528adc Badal Nilawar 2025-06-19   74           return -EINVAL;
f9ea24fb9528adc Badal Nilawar 2025-06-19   75   }
f9ea24fb9528adc Badal Nilawar 2025-06-19   76  
f9ea24fb9528adc Badal Nilawar 2025-06-19   77   min_size = 
header->header_length + sizeof(struct gsc_cpd_entry) * header->num_of_entries;
f9ea24fb9528adc Badal Nilawar 2025-06-19   78   if (size < min_size) {
f9ea24fb9528adc Badal Nilawar 2025-06-19   79           drm_err(&xe->drm, "%s 
late binding fw: too small! %zu < %zu\n",
f9ea24fb9528adc Badal Nilawar 2025-06-19   80                   
fw_id_to_name[lb_fw->id], size, min_size);
f9ea24fb9528adc Badal Nilawar 2025-06-19   81           return -ENODATA;
f9ea24fb9528adc Badal Nilawar 2025-06-19   82   }
f9ea24fb9528adc Badal Nilawar 2025-06-19   83  
f9ea24fb9528adc Badal Nilawar 2025-06-19   84   /* Look for the manifest first 
*/
f9ea24fb9528adc Badal Nilawar 2025-06-19   85   entry = (void *)header + 
header->header_length;
f9ea24fb9528adc Badal Nilawar 2025-06-19   86   for (i = 0; i < 
header->num_of_entries; i++, entry++)
f9ea24fb9528adc Badal Nilawar 2025-06-19   87           if (strcmp(entry->name, 
manifest_entry) == 0)
f9ea24fb9528adc Badal Nilawar 2025-06-19   88                   offset = 
entry->offset & GSC_CPD_ENTRY_OFFSET_MASK;
                                                                ^^^^^^^^
Only initialized if found.

f9ea24fb9528adc Badal Nilawar 2025-06-19   89  
f9ea24fb9528adc Badal Nilawar 2025-06-19  @90   if (!offset) {
                                                     ^^^^^^
Uninitialized.

It's a good idea for developers to set CONFIG_INIT_STACK_ALL_PATTERN=y
in their testing.

f9ea24fb9528adc Badal Nilawar 2025-06-19   91           drm_err(&xe->drm, "%s 
late binding fw: Failed to find manifest_entry\n",
f9ea24fb9528adc Badal Nilawar 2025-06-19   92                   
fw_id_to_name[lb_fw->id]);
f9ea24fb9528adc Badal Nilawar 2025-06-19   93           return -ENODATA;
f9ea24fb9528adc Badal Nilawar 2025-06-19   94   }
f9ea24fb9528adc Badal Nilawar 2025-06-19   95  
f9ea24fb9528adc Badal Nilawar 2025-06-19   96   min_size = offset + 
sizeof(struct gsc_manifest_header);
f9ea24fb9528adc Badal Nilawar 2025-06-19   97   if (size < min_size) {
f9ea24fb9528adc Badal Nilawar 2025-06-19   98           drm_err(&xe->drm, "%s 
late binding fw: too small! %zu < %zu\n",
f9ea24fb9528adc Badal Nilawar 2025-06-19   99                   
fw_id_to_name[lb_fw->id], size, min_size);
f9ea24fb9528adc Badal Nilawar 2025-06-19  100           return -ENODATA;
f9ea24fb9528adc Badal Nilawar 2025-06-19  101   }
f9ea24fb9528adc Badal Nilawar 2025-06-19  102  
f9ea24fb9528adc Badal Nilawar 2025-06-19  103   manifest = data + offset;
f9ea24fb9528adc Badal Nilawar 2025-06-19  104  
f9ea24fb9528adc Badal Nilawar 2025-06-19  105   lb_fw->version.major = 
manifest->fw_version.major;
f9ea24fb9528adc Badal Nilawar 2025-06-19  106   lb_fw->version.minor = 
manifest->fw_version.minor;
f9ea24fb9528adc Badal Nilawar 2025-06-19  107   lb_fw->version.hotfix = 
manifest->fw_version.hotfix;
f9ea24fb9528adc Badal Nilawar 2025-06-19  108   lb_fw->version.build = 
manifest->fw_version.build;
f9ea24fb9528adc Badal Nilawar 2025-06-19  109  
f9ea24fb9528adc Badal Nilawar 2025-06-19  110   return 0;
f9ea24fb9528adc Badal Nilawar 2025-06-19  111  }
f9ea24fb9528adc Badal Nilawar 2025-06-19  112  
f9ea24fb9528adc Badal Nilawar 2025-06-19  113  /* Refer to the "Late Bind based 
Firmware Layout" documentation entry for details */
f9ea24fb9528adc Badal Nilawar 2025-06-19  114  static int 
parse_lb_layout(struct xe_late_bind *late_bind, u32 fw_id,
f9ea24fb9528adc Badal Nilawar 2025-06-19  115                      const void 
*data, size_t size, const char *fpt_entry)
f9ea24fb9528adc Badal Nilawar 2025-06-19  116  {
f9ea24fb9528adc Badal Nilawar 2025-06-19  117   struct xe_device *xe = 
late_bind_to_xe(late_bind);
f9ea24fb9528adc Badal Nilawar 2025-06-19  118   const struct csc_fpt_header 
*header = data;
f9ea24fb9528adc Badal Nilawar 2025-06-19  119   const struct csc_fpt_entry 
*entry;
f9ea24fb9528adc Badal Nilawar 2025-06-19  120   size_t min_size = 
sizeof(*header);
f9ea24fb9528adc Badal Nilawar 2025-06-19  121   struct xe_late_bind_fw *lb_fw;
f9ea24fb9528adc Badal Nilawar 2025-06-19  122   u32 offset;
f9ea24fb9528adc Badal Nilawar 2025-06-19  123   int i;
f9ea24fb9528adc Badal Nilawar 2025-06-19  124  
f9ea24fb9528adc Badal Nilawar 2025-06-19  125   if (fw_id >= MAX_FW_ID)
f9ea24fb9528adc Badal Nilawar 2025-06-19  126           return -EINVAL;
f9ea24fb9528adc Badal Nilawar 2025-06-19  127  
f9ea24fb9528adc Badal Nilawar 2025-06-19  128   lb_fw = 
&late_bind->late_bind_fw[fw_id];
f9ea24fb9528adc Badal Nilawar 2025-06-19  129  
f9ea24fb9528adc Badal Nilawar 2025-06-19  130   /* fpt_entry is mandatory */
f9ea24fb9528adc Badal Nilawar 2025-06-19  131   xe_assert(xe, fpt_entry);
f9ea24fb9528adc Badal Nilawar 2025-06-19  132  
f9ea24fb9528adc Badal Nilawar 2025-06-19  133   if (size < min_size || 
header->header_marker != CSC_FPT_HEADER_MARKER)
f9ea24fb9528adc Badal Nilawar 2025-06-19  134           return -ENOENT;
f9ea24fb9528adc Badal Nilawar 2025-06-19  135  
f9ea24fb9528adc Badal Nilawar 2025-06-19  136   if (header->header_length < 
sizeof(struct csc_fpt_header)) {
f9ea24fb9528adc Badal Nilawar 2025-06-19  137           drm_err(&xe->drm, "%s 
late binding fw: Invalid FPT header length %u!\n",
f9ea24fb9528adc Badal Nilawar 2025-06-19  138                   
fw_id_to_name[lb_fw->id], header->header_length);
f9ea24fb9528adc Badal Nilawar 2025-06-19  139           return -EINVAL;
f9ea24fb9528adc Badal Nilawar 2025-06-19  140   }
f9ea24fb9528adc Badal Nilawar 2025-06-19  141  
f9ea24fb9528adc Badal Nilawar 2025-06-19  142   min_size = 
header->header_length + sizeof(struct csc_fpt_entry) * header->num_of_entries;
f9ea24fb9528adc Badal Nilawar 2025-06-19  143   if (size < min_size) {
f9ea24fb9528adc Badal Nilawar 2025-06-19  144           drm_err(&xe->drm, "%s 
late binding fw: too small! %zu < %zu\n",
f9ea24fb9528adc Badal Nilawar 2025-06-19  145                   
fw_id_to_name[lb_fw->id], size, min_size);
f9ea24fb9528adc Badal Nilawar 2025-06-19  146           return -ENODATA;
f9ea24fb9528adc Badal Nilawar 2025-06-19  147   }
f9ea24fb9528adc Badal Nilawar 2025-06-19  148  
f9ea24fb9528adc Badal Nilawar 2025-06-19  149   /* Look for the manifest first 
*/
f9ea24fb9528adc Badal Nilawar 2025-06-19  150   entry = (void *)header + 
header->header_length;
f9ea24fb9528adc Badal Nilawar 2025-06-19  151   for (i = 0; i < 
header->num_of_entries; i++, entry++)
f9ea24fb9528adc Badal Nilawar 2025-06-19  152           if (strcmp(entry->name, 
fpt_entry) == 0)
f9ea24fb9528adc Badal Nilawar 2025-06-19  153                   offset = 
entry->offset;
f9ea24fb9528adc Badal Nilawar 2025-06-19  154  
f9ea24fb9528adc Badal Nilawar 2025-06-19 @155   if (!offset) {

Same.

f9ea24fb9528adc Badal Nilawar 2025-06-19  156           drm_err(&xe->drm, "%s 
late binding fw: Failed to find fpt_entry\n",
f9ea24fb9528adc Badal Nilawar 2025-06-19  157                   
fw_id_to_name[lb_fw->id]);
f9ea24fb9528adc Badal Nilawar 2025-06-19  158           return -ENODATA;
f9ea24fb9528adc Badal Nilawar 2025-06-19  159   }
f9ea24fb9528adc Badal Nilawar 2025-06-19  160  
f9ea24fb9528adc Badal Nilawar 2025-06-19  161   min_size = offset + 
sizeof(struct gsc_cpd_header_v2);
f9ea24fb9528adc Badal Nilawar 2025-06-19  162   if (size < min_size) {
f9ea24fb9528adc Badal Nilawar 2025-06-19  163           drm_err(&xe->drm, "%s 
late binding fw: too small! %zu < %zu\n",
f9ea24fb9528adc Badal Nilawar 2025-06-19  164                   
fw_id_to_name[lb_fw->id], size, min_size);
f9ea24fb9528adc Badal Nilawar 2025-06-19  165           return -ENODATA;
f9ea24fb9528adc Badal Nilawar 2025-06-19  166   }
f9ea24fb9528adc Badal Nilawar 2025-06-19  167  
f9ea24fb9528adc Badal Nilawar 2025-06-19  168   return 
parse_cpd_header(late_bind, fw_id, data + offset, size - offset, "LTES.man");
f9ea24fb9528adc Badal Nilawar 2025-06-19  169  }

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

Reply via email to