Hi Michal,

>> 
>>> +        if ( shm_id_match )
>>>        {
>>> -            if ( strncmp(shm_id, shmem_extra[i].shm_id,
>>> -                         MAX_SHM_ID_LENGTH) == 0  )
>>> +            /*
>>> +             * Regions have same shm_id (cases):
>>> +             * 1) physical host address is supplied:
>>> +             *    - OK:   paddr is equal and size is equal (same region)
>>> +             *    - Fail: paddr doesn't match or size doesn't match (there
>>> +             *            cannot exists two shmem regions with same shm_id)
>>> +             * 2) physical host address is NOT supplied:
>>> +             *    - OK:   size is equal (same region)
>>> +             *    - Fail: size is not equal (same shm_id must identify 
>>> only one
>>> +             *            region, there can't be two different regions 
>>> with same
>>> +             *            shm_id)
>>> +             */
>>> +            bool start_match = paddr_assigned ? (paddr == 
>>> mem->bank[i].start) :
>>> +                                                true;
>>> +
>>> +            if ( start_match && size == mem->bank[i].size )
>>>                break;
>>>            else
>>>            {
>>> -                printk("fdt: xen,shm-id %s does not match for all the 
>>> nodes using the same region.\n",
>>> +                printk("fdt: different shared memory region could not 
>>> share the same shm ID %s\n",
>>>                       shm_id);
>>>                return -EINVAL;
>>>            }
>>>        }
>>> -        else if ( strncmp(shm_id, shmem_extra[i].shm_id,
>>> -                          MAX_SHM_ID_LENGTH) != 0 )
>>> -            continue;
>>>        else
>>>        {
>> There is no need for this else and entire block given that the block within 
>> if either calls break or return
> 
> There was a MISRA discussion about else at the end of if ... else if ... 
> (R15.7) and I don’t remember
> the outcome

Sorry I was misreading the code here, sure I’ll remove the else.

Cheers,
Luca

Reply via email to