[PATCH] loads: Block writes into LMB reserved areas of U-Boot

Marek Vasut marex at denx.de
Fri Oct 15 16:23:27 CEST 2021


On 10/14/21 5:10 PM, Simon Glass wrote:
[...]
>> @@ -137,6 +138,7 @@ static int do_load_serial(struct cmd_tbl *cmdtp, int flag, int argc,
>>
>>   static ulong load_serial(long offset)
>>   {
>> +       struct lmb lmb;
>>          char    record[SREC_MAXRECLEN + 1];     /* buffer for one S-Record      */
>>          char    binbuf[SREC_MAXBINLEN];         /* buffer for binary data       */
>>          int     binlen;                         /* no. of data bytes in S-Rec.  */
>> @@ -147,6 +149,9 @@ static ulong load_serial(long offset)
>>          ulong   start_addr = ~0;
>>          ulong   end_addr   =  0;
>>          int     line_count =  0;
>> +       long ret;
>> +
>> +       lmb_init_and_reserve(&lmb, gd->bd, (void *)gd->fdt_blob);
>>
>>          while (read_record(record, SREC_MAXRECLEN + 1) >= 0) {
>>                  type = srec_decode(record, &binlen, &addr, binbuf);
>> @@ -172,7 +177,14 @@ static ulong load_serial(long offset)
>>                      } else
>>   #endif
>>                      {
>> +                       ret = lmb_reserve(&lmb, store_addr, binlen);
>> +                       if (ret) {
>> +                               printf("\nCannot overwrite reserved area (%08lx..%08lx)\n",
>> +                                       store_addr, store_addr + binlen);
>> +                               return ret;
>> +                       }
>>                          memcpy((char *)(store_addr), binbuf, binlen);
>> +                       lmb_free(&lmb, store_addr, binlen);
>>                      }
>>                      if ((store_addr) < start_addr)
>>                          start_addr = store_addr;
>> --
>> 2.33.0
>>
> 
> Reviewed-by: Simon Glass <sjg at chromium.org>
> 
> This code looks OK but I don't know what lmb_reserve() and lmb_free()
> do. Can you add comments to the header file?

Not here, the entire LMB stuff needs (better) documentation, that's 
where (all) such clarification should go.


More information about the U-Boot mailing list