[U-Boot] [PATCH] disk: part: Don't skip partition init

blk_get_device_by_str was skipping part_init when hw partition 0 was selected because it is the default. However, this caused issues when switching to a non-zero partition and then back to partition zero, as stale data from the wrong partition was returned.
Remove this optimization and call part_init regardless of the selected partition.
Signed-off-by: Robert Hancock hancock@sedsystems.ca --- disk/part.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/disk/part.c b/disk/part.c index 862078f..f14bc22 100644 --- a/disk/part.c +++ b/disk/part.c @@ -414,11 +414,10 @@ int blk_get_device_by_str(const char *ifname, const char *dev_hwpart_str, #ifdef CONFIG_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. + * Always should be done, otherwise hw partition 0 will return stale + * data after displaying a non-zero hw partition. */ - if(hwpart != 0) - part_init(*dev_desc); + part_init(*dev_desc); #endif
cleanup:

On Tue, Jun 18, 2019 at 09:53:04AM -0600, Robert Hancock wrote:
blk_get_device_by_str was skipping part_init when hw partition 0 was selected because it is the default. However, this caused issues when switching to a non-zero partition and then back to partition zero, as stale data from the wrong partition was returned.
Remove this optimization and call part_init regardless of the selected partition.
Signed-off-by: Robert Hancock hancock@sedsystems.ca
Applied to u-boot/master, thanks!
participants (2)
-
Robert Hancock
-
Tom Rini