Patch for Beagle Bone Black eMMC to dump boot partions
From Exploitee.rs
About
The patch below is intended to assist in dumping the boot partitions from a connected eMMC flash by patching the kernel provided with the Beagle Bone Black.
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index aaed768..732e6e5 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -889,7 +889,9 @@ void mmc_set_chip_select(struct mmc_host *host, int mode)
*/
static void __mmc_set_clock(struct mmc_host *host, unsigned int hz)
{
- WARN_ON(hz < host->f_min);
+ //maximus64 WARN_ON(hz < host->f_min);
+ if (hz < host->f_min)
+ hz = host->f_min;
if (hz > host->f_max)
hz = host->f_max;
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 2743b7d..e53d19d 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1028,7 +1028,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
/*
* Activate high speed (if supported)
*/
- if (card->ext_csd.hs_max_dtr != 0) {
+ //maximus64 if (card->ext_csd.hs_max_dtr != 0) {
+ if (0) {
err = 0;
if (card->ext_csd.hs_max_dtr > 52000000 &&
host->caps2 & MMC_CAP2_HS200)
@@ -1077,7 +1078,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
/*
* Indicate DDR mode (if supported).
*/
- if (mmc_card_highspeed(card)) {
+ //maximus64 if (mmc_card_highspeed(card)) {
+ if (0) {
if ((card->ext_csd.card_type & EXT_CSD_CARD_TYPE_DDR_1_8V)
&& ((host->caps & (MMC_CAP_1_8V_DDR |
MMC_CAP_UHS_DDR50))
@@ -1093,7 +1095,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
/*
* Indicate HS200 SDR mode (if supported).
*/
- if (mmc_card_hs200(card)) {
+ //maximus64 if (mmc_card_hs200(card)) {
+ if (0) {
u32 ext_csd_bits;
u32 bus_width = card->host->ios.bus_width;
@@ -1133,9 +1136,10 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
/*
* Activate wide bus and DDR (if supported).
*/
- if (!mmc_card_hs200(card) &&
- (card->csd.mmca_vsn >= CSD_SPEC_VER_4) &&
- (host->caps & (MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA))) {
+ //maximus64 if (!mmc_card_hs200(card) &&
+ // (card->csd.mmca_vsn >= CSD_SPEC_VER_4) &&
+ // (host->caps & (MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA))) {
+ if (0) {
static unsigned ext_csd_bits[][2] = {
{ EXT_CSD_BUS_WIDTH_8, EXT_CSD_DDR_BUS_WIDTH_8 },
{ EXT_CSD_BUS_WIDTH_4, EXT_CSD_DDR_BUS_WIDTH_4 },
@@ -1235,7 +1239,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
/*
* Enable HPI feature (if supported)
*/
- if (card->ext_csd.hpi) {
+ //maximus64 if (card->ext_csd.hpi) {
+ if (0) {
err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
EXT_CSD_HPI_MGMT, 1,
card->ext_csd.generic_cmd6_time);
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index 74972c2..8a9f5ff 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -617,9 +617,10 @@ static int mmc_sd_init_uhs_card(struct mmc_card *card)
}
/* Set 4-bit bus width */
- if ((card->host->caps & MMC_CAP_4_BIT_DATA) &&
- (card->scr.bus_widths & SD_SCR_BUS_WIDTH_4)) {
- err = mmc_app_set_bus_width(card, MMC_BUS_WIDTH_4);
+ //if ((card->host->caps & MMC_CAP_4_BIT_DATA) &&
+ // (card-> if (err)
goto out;
@@ -987,10 +988,11 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
/*
* Switch to wider bus (if supported).
- */
- if ((host->caps & MMC_CAP_4_BIT_DATA) &&
- (card->scr.bus_widths & SD_SCR_BUS_WIDTH_4)) {
- err = mmc_app_set_bus_width(card, MMC_BUS_WIDTH_4);
+ */
+ //if ((host->caps & MMC_CAP_4_BIT_DATA) &&
+ // (card->scr.bus_widths &