usb: rockusb: forbid reading data beyond addr 32MB
Forbid reading data beyong addr 32MB to protect user data & firmware. Excess partial is filled with 0xcc. The addr 32MB is quoted from pre-loader. Change-Id: I96f4fb3bb0d88a309fef20650863011cd9f0dfd9 Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
This commit is contained in:
parent
b671af0a93
commit
628c827194
|
@ -24,7 +24,12 @@ static int rkusb_read_sector(struct ums *ums_dev,
|
|||
struct blk_desc *block_dev = &ums_dev->block_dev;
|
||||
lbaint_t blkstart = start + ums_dev->start_sector;
|
||||
|
||||
return blk_dread(block_dev, blkstart, blkcnt, buf);
|
||||
if (blkstart > RKUSB_READ_LIMIT_ADDR) {
|
||||
memset(buf, 0xcc, blkcnt * SECTOR_SIZE);
|
||||
return blkcnt;
|
||||
} else {
|
||||
return blk_dread(block_dev, blkstart, blkcnt, buf);
|
||||
}
|
||||
}
|
||||
|
||||
static int rkusb_write_sector(struct ums *ums_dev,
|
||||
|
|
|
@ -75,6 +75,8 @@ static inline int rkusb_cmd_process(struct fsg_common *common,
|
|||
#define RKUSB_CABLE_READY_TIMEOUT 60
|
||||
#define SECTOR_SIZE 0x200
|
||||
|
||||
#define RKUSB_READ_LIMIT_ADDR (32 * 2048) /* 32MB */
|
||||
|
||||
struct rockusb {
|
||||
struct ums *ums;
|
||||
int ums_cnt;
|
||||
|
|
Loading…
Reference in New Issue