mirror of
https://github.com/team-infusion-developers/android_device_samsung_msm8976-common.git
synced 2024-11-07 06:19:20 +00:00
msm8976-common: Calculate TrustZone size at runtime
Change-Id: I0e9154efb96f07347f87f7ca9d6829803815b40f
This commit is contained in:
parent
34842dbf45
commit
e7edb4e11d
1 changed files with 10 additions and 5 deletions
|
@ -32,13 +32,11 @@
|
|||
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
||||
|
||||
#define ALPHABET_LEN 256
|
||||
#define KB 1024
|
||||
|
||||
#define TZ_PART_PATH "/dev/block/bootdevice/by-name/tz"
|
||||
#define TZ_VER_STR "QC_IMAGE_VERSION_STRING="
|
||||
#define TZ_VER_STR_LEN 24
|
||||
#define TZ_VER_BUF_LEN 255
|
||||
#define TZ_SZ 4096 * KB /* MMAP 4096K of TZ, TZ partition is 4096K */
|
||||
|
||||
/* Boyer-Moore string search implementation from Wikipedia */
|
||||
|
||||
|
@ -121,6 +119,7 @@ static char * bm_search(const char *str, size_t str_len, const char *pat,
|
|||
static int get_tz_version(char *ver_str, size_t len) {
|
||||
int ret = 0;
|
||||
int fd;
|
||||
int tz_size;
|
||||
char *tz_data = NULL;
|
||||
char *offset = NULL;
|
||||
|
||||
|
@ -130,21 +129,27 @@ static int get_tz_version(char *ver_str, size_t len) {
|
|||
goto err_ret;
|
||||
}
|
||||
|
||||
tz_data = (char *) mmap(NULL, TZ_SZ, PROT_READ, MAP_PRIVATE, fd, 0);
|
||||
tz_size = lseek64(fd, 0, SEEK_END);
|
||||
if (tz_size == -1) {
|
||||
ret = errno;
|
||||
goto err_fd_close;
|
||||
}
|
||||
|
||||
tz_data = (char *) mmap(NULL, tz_size, PROT_READ, MAP_PRIVATE, fd, 0);
|
||||
if (tz_data == (char *)-1) {
|
||||
ret = errno;
|
||||
goto err_fd_close;
|
||||
}
|
||||
|
||||
/* Do Boyer-Moore search across TZ data */
|
||||
offset = bm_search(tz_data, TZ_SZ, TZ_VER_STR, TZ_VER_STR_LEN);
|
||||
offset = bm_search(tz_data, tz_size, TZ_VER_STR, TZ_VER_STR_LEN);
|
||||
if (offset != NULL) {
|
||||
strncpy(ver_str, offset + TZ_VER_STR_LEN, len);
|
||||
} else {
|
||||
ret = -ENOENT;
|
||||
}
|
||||
|
||||
munmap(tz_data, TZ_SZ);
|
||||
munmap(tz_data, tz_size);
|
||||
err_fd_close:
|
||||
close(fd);
|
||||
err_ret:
|
||||
|
|
Loading…
Reference in a new issue