mmc: emmc and hw partitions partition table id bugfix.
On bootup the emmc's hw partition is always set to 0 and the partition table is read from it. When switching to another hw partition the partition table's id is not updated but instead the old one from hw partition 0 is used. If there is no partition table on hw partition 0 then the code will terminate and return error even if the desired hw partition contains a perfectly fine partition table. This fix updates the partition table struct to correspond to the specified hw partition before testing if the partition table is valid or not. Signed-off-by: Erik Tideman <erik.tideman@faltcom.se> Reviewed-by: Tom Rini <trini@konsulko.com> [trini: Squash the patch that corrected whitespace in the original into this one, wrap with HAVE_BLOCK_DEVICE test] Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
parent
1d48ca69e5
commit
99e7fc8a26
10
disk/part.c
10
disk/part.c
|
@ -493,6 +493,16 @@ int get_device(const char *ifname, const char *dev_hwpart_str,
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_BLOCK_DEVICE
|
||||||
|
/*
|
||||||
|
* Updates the partition table for the specified hw partition.
|
||||||
|
* Does not need to be done for hwpart 0 since it is default and
|
||||||
|
* already loaded.
|
||||||
|
*/
|
||||||
|
if(hwpart != 0)
|
||||||
|
init_part(*dev_desc);
|
||||||
|
#endif
|
||||||
|
|
||||||
cleanup:
|
cleanup:
|
||||||
free(dup_str);
|
free(dup_str);
|
||||||
return dev;
|
return dev;
|
||||||
|
|
Loading…
Reference in New Issue