Hi Takashi,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on sound/for-next] [also build test WARNING on v4.17-rc1 next-20180420] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Takashi-Sakamoto/ALSA-dice-improve-... base: https://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git for-next reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF=-D__CHECK_ENDIAN__
sparse warnings: (new ones prefixed by >>)
sound/firewire/dice/dice-transaction.c:334:21: sparse: restricted __be32 degrades to integer
sound/firewire/dice/dice-transaction.c:336:21: sparse: restricted __be32 degrades to integer
vim +334 sound/firewire/dice/dice-transaction.c
264 265 static int get_subaddrs(struct snd_dice *dice) 266 { 267 static const int min_values[10] = { 268 10, 0x60 / 4, 269 10, 0x18 / 4, 270 10, 0x18 / 4, 271 0, 0, 272 0, 0, 273 }; 274 __be32 *pointers; 275 __be32 version; 276 u32 data; 277 unsigned int i; 278 int err; 279 280 pointers = kmalloc_array(ARRAY_SIZE(min_values), sizeof(__be32), 281 GFP_KERNEL); 282 if (pointers == NULL) 283 return -ENOMEM; 284 285 /* 286 * Check that the sub address spaces exist and are located inside the 287 * private address space. The minimum values are chosen so that all 288 * minimally required registers are included. 289 */ 290 err = snd_fw_transaction(dice->unit, TCODE_READ_BLOCK_REQUEST, 291 DICE_PRIVATE_SPACE, pointers, 292 sizeof(__be32) * ARRAY_SIZE(min_values), 0); 293 if (err < 0) 294 goto end; 295 296 for (i = 0; i < ARRAY_SIZE(min_values); ++i) { 297 data = be32_to_cpu(pointers[i]); 298 if (data < min_values[i] || data >= 0x40000) { 299 err = -ENODEV; 300 goto end; 301 } 302 } 303 304 if (be32_to_cpu(pointers[1]) > 0x18) { 305 /* 306 * Check that the implemented DICE driver specification major 307 * version number matches. 308 */ 309 err = snd_fw_transaction(dice->unit, TCODE_READ_QUADLET_REQUEST, 310 DICE_PRIVATE_SPACE + 311 be32_to_cpu(pointers[0]) * 4 + GLOBAL_VERSION, 312 &version, sizeof(version), 0); 313 if (err < 0) 314 goto end; 315 316 if ((version & cpu_to_be32(0xff000000)) != 317 cpu_to_be32(0x01000000)) { 318 dev_err(&dice->unit->device, 319 "unknown DICE version: 0x%08x\n", 320 be32_to_cpu(version)); 321 err = -ENODEV; 322 goto end; 323 } 324 325 /* Set up later. */ 326 dice->clock_caps = 1; 327 } 328 329 dice->global_offset = be32_to_cpu(pointers[0]) * 4; 330 dice->tx_offset = be32_to_cpu(pointers[2]) * 4; 331 dice->rx_offset = be32_to_cpu(pointers[4]) * 4; 332 333 /* Old firmware doesn't support these fields. */
334 if (pointers[7] > 0)
335 dice->sync_offset = be32_to_cpu(pointers[6]) * 4; 336 if (pointers[9] > 0) 337 dice->rsrv_offset = be32_to_cpu(pointers[8]) * 4; 338 end: 339 kfree(pointers); 340 return err; 341 } 342
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation