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);
