Hello Aneesh Kumar K.V,

This is a semi-automatic email about new static checker warnings.

The patch 0f4bc0932e51: "powerpc/mm/cxl: Add the fault handling cpu
to mm cpumask" from Jul 27, 2017, leads to the following Smatch
complaint:

    drivers/misc/cxl/fault.c:161 cxl_handle_mm_fault()
    warn: variable dereferenced before check 'mm' (see line 146)

drivers/misc/cxl/fault.c
   145           */
   146          cpumask_set_cpu(smp_processor_id(), mm_cpumask(mm));
                                                               ^^
The patch adds an unchecked dereference.

   147          if ((result = copro_handle_mm_fault(mm, dar, dsisr, &flt))) {
   148                  pr_devel("copro_handle_mm_fault failed: %#x\n", result);
   149                  return result;
   150          }
   151  
   152          if (!radix_enabled()) {
   153                  /*
   154                   * update_mmu_cache() will not have loaded the hash 
since current->trap
   155                   * is not a 0x400 or 0x300, so just call hash_page_mm() 
here.
   156                   */
   157                  access = _PAGE_PRESENT | _PAGE_READ;
   158                  if (dsisr & CXL_PSL_DSISR_An_S)
   159                          access |= _PAGE_WRITE;
   160  
   161                  if (!mm && (REGION_ID(dar) != USER_REGION_ID))
                             ^^
But the existing code is careful to check "mm" for NULL.  The
copro_handle_mm_fault() and hash_page_mm() both have checks built in.

   162                          access |= _PAGE_PRIVILEGED;
   163  

regards,
dan carpenter

Reply via email to