Hi Christoph, I love your patch! Perhaps something to improve:
[auto build test WARNING on linus/master] [also build test WARNING on v5.0-rc4 next-20190205] [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/Christoph-Hellwig/dell_rbu-stop-abusing-the-DMA-API/20190201-133154 smatch warnings: drivers/platform/x86/dell_rbu.c:454 img_update_realloc() warn: inconsistent returns 'spin_lock:&rbu_data.lock'. Locked on: line 420 Unlocked on: line 442 # https://github.com/0day-ci/linux/commit/d91efe52c9d0b3ae582a91593333ca5973f0e81e git remote add linux-review https://github.com/0day-ci/linux git remote update linux-review git checkout d91efe52c9d0b3ae582a91593333ca5973f0e81e vim +454 drivers/platform/x86/dell_rbu.c 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 392 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 393 /* 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 394 * img_update_realloc: This function allocates the contiguous pages to 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 395 * accommodate the requested size of data. The memory address and size 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 396 * values are stored globally and on every call to this function the new 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 397 * size is checked to see if more data is required than the existing size. 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 398 * If true the previous memory is freed and new allocation is done to 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 399 * accommodate the new size. If the incoming size is less then than the 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 400 * already allocated size, then that memory is reused. This function is 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 401 * called with lock held and returns with lock held. 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 402 */ dda8577f drivers/firmware/dell_rbu.c Andrew Morton 2005-09-16 403 static int img_update_realloc(unsigned long size) 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 404 { 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 405 unsigned char *image_update_buffer = NULL; 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 406 unsigned long img_buf_phys_addr; 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 407 int ordernum; 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 408 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 409 /* 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 410 * check if the buffer of sufficient size has been 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 411 * already allocated 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 412 */ 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 413 if (rbu_data.image_update_buffer_size >= size) { 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 414 /* 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 415 * check for corruption 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 416 */ 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 417 if ((size != 0) && (rbu_data.image_update_buffer == NULL)) { 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 418 printk(KERN_ERR "dell_rbu:%s: corruption " eecd5853 drivers/firmware/dell_rbu.c Harvey Harrison 2008-04-29 419 "check failed\n", __func__); 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 420 return -EINVAL; 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 421 } 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 422 /* 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 423 * we have a valid pre-allocated buffer with 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 424 * sufficient size 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 425 */ 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 426 return 0; 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 427 } 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 428 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 429 /* 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 430 * free any previously allocated buffer 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 431 */ 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 432 img_update_free(); 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 433 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 434 spin_unlock(&rbu_data.lock); ^^^^^^^^^^^^^^^^^^^^^^^^^^^ 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 435 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 436 ordernum = get_order(size); 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 437 image_update_buffer = d91efe52 drivers/platform/x86/dell_rbu.c Christoph Hellwig 2019-01-29 438 (unsigned char *)__get_free_pages(GFP_DMA32, ordernum); d91efe52 drivers/platform/x86/dell_rbu.c Christoph Hellwig 2019-01-29 439 if (!image_update_buffer) { d91efe52 drivers/platform/x86/dell_rbu.c Christoph Hellwig 2019-01-29 440 pr_debug("Not enough memory for image update:" d91efe52 drivers/platform/x86/dell_rbu.c Christoph Hellwig 2019-01-29 441 "size = %ld\n", size); d91efe52 drivers/platform/x86/dell_rbu.c Christoph Hellwig 2019-01-29 442 return -ENOMEM; ^^^^^^^^^^^^^^ 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 443 } 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 444 d91efe52 drivers/platform/x86/dell_rbu.c Christoph Hellwig 2019-01-29 445 img_buf_phys_addr = (unsigned long)virt_to_phys(image_update_buffer); d91efe52 drivers/platform/x86/dell_rbu.c Christoph Hellwig 2019-01-29 446 if (WARN_ON_ONCE(img_buf_phys_addr > BIOS_SCAN_LIMIT)) d91efe52 drivers/platform/x86/dell_rbu.c Christoph Hellwig 2019-01-29 447 return -EINVAL; /* can't happen per defintion */ ^^^^^^^^^^^^^^ 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 448 d91efe52 drivers/platform/x86/dell_rbu.c Christoph Hellwig 2019-01-29 449 spin_lock(&rbu_data.lock); 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 450 rbu_data.image_update_buffer = image_update_buffer; 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 451 rbu_data.image_update_buffer_size = size; d91efe52 drivers/platform/x86/dell_rbu.c Christoph Hellwig 2019-01-29 452 rbu_data.bios_image_size = rbu_data.image_update_buffer_size; 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 453 rbu_data.image_update_ordernum = ordernum; d91efe52 drivers/platform/x86/dell_rbu.c Christoph Hellwig 2019-01-29 @454 return 0; 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 455 } 6c54c28e drivers/firmware/dell_rbu.c Abhay Salunke 2005-09-06 456 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation _______________________________________________ kbuild mailing list kbuild@lists.01.org https://lists.01.org/mailman/listinfo/kbuild