Merge "lib: libc: correct strlcat implementation"
diff --git a/app/aboot/fastboot_test.c b/app/aboot/fastboot_test.c
index 64c0f7f..70bc64e 100644
--- a/app/aboot/fastboot_test.c
+++ b/app/aboot/fastboot_test.c
@@ -88,6 +88,13 @@
dprintf(INFO, "Running RPMB test case, please make sure RPMB key is provisioned ...\n");
struct device_info *write_info = memalign(PAGE_SIZE, 4096);
struct device_info *read_info = memalign(PAGE_SIZE, 4096);
+
+ if((write_info == NULL)||(read_info == NULL))
+ {
+ dprintf(CRITICAL, "Failed to allocate memory for devinfo %s %d \n",__FUNCTION__,__LINE__);
+ goto err;
+ }
+
if((read_device_info_rpmb((void*) read_info, PAGE_SIZE)) < 0)
dprintf(INFO, "RPMB READ TEST : [ FAIL ]\n");
@@ -104,6 +111,7 @@
else
dprintf(INFO, "RPMB READ/WRITE TEST: [ FAIL ]\n");
+err:
free(read_info);
free(write_info);
#endif
diff --git a/dev/qpnp_wled/qpnp_wled.c b/dev/qpnp_wled/qpnp_wled.c
index 9cedbb7..3aa41f8 100644
--- a/dev/qpnp_wled/qpnp_wled.c
+++ b/dev/qpnp_wled/qpnp_wled.c
@@ -522,7 +522,7 @@
wled->strings[i] = i;
wled->ibb_bias_active = false;
- wled->lab_fast_precharge = true;
+ wled->lab_fast_precharge = false;
wled->ibb_pwrup_dly_ms = config->pwr_up_delay;
wled->ibb_pwrdn_dly_ms = config->pwr_down_delay;
wled->ibb_discharge_en = config->ibb_discharge_en;
diff --git a/platform/msm_shared/dme.c b/platform/msm_shared/dme.c
index c6d651d..c98730b 100644
--- a/platform/msm_shared/dme.c
+++ b/platform/msm_shared/dme.c
@@ -493,13 +493,20 @@
return -UFS_FAILURE;
}
- dev->lun_cfg[index].logical_blk_cnt = BE64(desc->logical_blk_cnt);
-
- dev->lun_cfg[index].erase_blk_size = BE32(desc->erase_blk_size);
-
// use only the lower 32 bits for rpmb partition size
if (index == UFS_WLUN_RPMB)
dev->rpmb_num_blocks = BE32(desc->logical_blk_cnt >> 32);
+ /*
+ rpmb will not use blk count and blk size from lun_cfg as it has
+ its own entries in ufs_dev structure
+ */
+ else
+ {
+ dev->lun_cfg[index].logical_blk_cnt = BE64(desc->logical_blk_cnt);
+ dev->lun_cfg[index].erase_blk_size = BE32(desc->erase_blk_size);
+ }
+
+
return UFS_SUCCESS;
}
diff --git a/platform/msm_shared/partition_parser.c b/platform/msm_shared/partition_parser.c
index 65d58d4..22be711 100644
--- a/platform/msm_shared/partition_parser.c
+++ b/platform/msm_shared/partition_parser.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2011-2015, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2011-2016, The Linux Foundation. All rights reserved.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -454,6 +454,7 @@
static unsigned int write_mbr(uint32_t size, uint8_t *mbrImage, uint32_t block_size)
{
unsigned int ret;
+ uint64_t device_density;
/* Verify that passed in block is a valid MBR */
ret = partition_verify_mbr_signature(size, mbrImage);
@@ -461,6 +462,15 @@
goto end;
}
+ device_density = mmc_get_device_capacity();
+
+ /* Erasing the eMMC card before writing */
+ ret = mmc_erase_card(0x00000000, device_density);
+ if (ret) {
+ dprintf(CRITICAL, "Failed to erase the eMMC card\n");
+ goto end;
+ }
+
/* Write the MBR/EBR to mmc */
ret = write_mbr_in_blocks(size, mbrImage, block_size);
if (ret) {
diff --git a/platform/msm_shared/rpm-glink.c b/platform/msm_shared/rpm-glink.c
index 2635cd1..f564480 100644
--- a/platform/msm_shared/rpm-glink.c
+++ b/platform/msm_shared/rpm-glink.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-2016 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -59,6 +59,19 @@
extern glink_err_type glink_wait_link_down(glink_handle_type handle);
+static void rpmdatacpy(uint32_t * dst, uint32_t *src, uint32_t size)
+{
+ if(size%4)
+ ASSERT(0);
+ size = size/4;
+
+ while (size >0)
+ {
+ *dst++ = *src++;
+ size--;
+ }
+}
+
glink_err_type rpm_glink_send_data(uint32_t *data, uint32_t len, msg_type type)
{
rpm_req req;
@@ -198,7 +211,7 @@
return_buffer = vprovider(buffer, offset, &return_size);
if(return_buffer)
{
- memcpy(rx_buffer+offset,return_buffer, return_size);
+ rpmdatacpy((uint32_t *)(rx_buffer + offset),(uint32_t *)return_buffer, return_size);
offset += return_size;
}
} while(return_buffer);
@@ -241,7 +254,7 @@
return_buffer = vprovider(buffer, offset, &return_size);
if(return_buffer)
{
- memcpy(rx_buffer+offset,return_buffer, return_size);
+ rpmdatacpy((uint32_t *)(rx_buffer + offset),(uint32_t *)return_buffer, return_size);
offset += return_size;
}
} while(return_buffer);