mirror of
https://github.com/apache/nuttx.git
synced 2026-08-18 19:50:47 +08:00
dev_mem: Fix range and pos of region
Test: fastboot oem filedump /dev/mem 0 748544 fastboot get_staged mem1.txt fastboot oem memdump 0x44000000 0xb6c00 fastboot get_staged mem2.txt diff mem1.txt mem2.txt Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
This commit is contained in:
@@ -101,11 +101,12 @@ static ssize_t devmem_read(FAR struct file *filep, FAR char *buffer,
|
||||
}
|
||||
|
||||
start = MAX(src, region[i].start);
|
||||
end = MIN(src + buflen, region[i].end);
|
||||
end = MIN(start + buflen, region[i].end);
|
||||
len = end - start;
|
||||
if (len > 0 && (region[i].flags & PROT_READ))
|
||||
{
|
||||
memcpy(buffer, (FAR const void *)start, len);
|
||||
filep->f_pos = end;
|
||||
return len;
|
||||
}
|
||||
}
|
||||
@@ -137,11 +138,12 @@ static ssize_t devmem_write(FAR struct file *filep, FAR const char *buffer,
|
||||
}
|
||||
|
||||
start = MAX(dest, region[i].start);
|
||||
end = MIN(dest + buflen, region[i].end);
|
||||
end = MIN(start + buflen, region[i].end);
|
||||
len = end - start;
|
||||
if (len > 0 && (region[i].flags & PROT_WRITE))
|
||||
{
|
||||
memcpy((FAR void *)start, buffer, len);
|
||||
filep->f_pos = end;
|
||||
return len;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user