Hello Alan Cox, The patch a49d25364dfb: "staging/atomisp: Add support for the Intel IPU v2" from Feb 17, 2017, leads to the following static checker warning: drivers/staging/media/atomisp/platform/intel-mid/atomisp_gmin_platform.c:676 gmin_get_config_var() warn: impossible condition '(*out_len > (~0)) => (0-u64max > u64max)' drivers/staging/media/atomisp/platform/intel-mid/atomisp_gmin_platform.c 620 /* Retrieves a device-specific configuration variable. The dev 621 * argument should be a device with an ACPI companion, as all 622 * configuration is based on firmware ID. */ 623 int gmin_get_config_var(struct device *dev, const char *var, char *out, size_t *out_len) out_len is a size_t which is always a ulong. 624 { 625 char var8[CFG_VAR_NAME_MAX]; 626 efi_char16_t var16[CFG_VAR_NAME_MAX]; 627 struct efivar_entry *ev; 628 u32 efiattr_dummy; 629 int i, j, ret; 630 unsigned long efilen; 631 632 if (dev && ACPI_COMPANION(dev)) 633 dev = &ACPI_COMPANION(dev)->dev; 634 635 if (dev) 636 ret = snprintf(var8, sizeof(var8), "%s_%s", dev_name(dev), var); 637 else 638 ret = snprintf(var8, sizeof(var8), "gmin_%s", var); 639 640 if (ret < 0 || ret >= sizeof(var8)-1) 641 return -EINVAL; 642 643 /* First check a hard-coded list of board-specific variables. 644 * Some device firmwares lack the ability to set EFI variables at 645 * runtime. */ 646 for (i = 0; i < ARRAY_SIZE(hard_vars); i++) { 647 if (dmi_match(DMI_BOARD_NAME, hard_vars[i].dmi_board_name)) { 648 for (j = 0; hard_vars[i].vars[j].name; j++) { 649 size_t vl; 650 const struct gmin_cfg_var *gv; 651 652 gv = &hard_vars[i].vars[j]; 653 vl = strlen(gv->val); 654 655 if (strcmp(var8, gv->name)) 656 continue; 657 if (vl > *out_len-1) 658 return -ENOSPC; 659 660 memcpy(out, gv->val, min(*out_len, vl+1)); 661 out[*out_len-1] = 0; 662 *out_len = vl; 663 664 return 0; 665 } 666 } 667 } 668 669 /* Our variable names are ASCII by construction, but EFI names 670 * are wide chars. Convert and zero-pad. */ 671 memset(var16, 0, sizeof(var16)); 672 for (i=0; var8[i] && i < sizeof(var8); i++) 673 var16[i] = var8[i]; 674 675 /* To avoid owerflows when calling the efivar API */ 676 if (*out_len > ULONG_MAX) ^^^^^^^^^^^^^^^^^^^^ This is impossible. Was UINT_MAX intended? 677 return -EINVAL; 678 regards, dan carpenter