diff mbox series

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

Message ID 1560873184-21616-1-git-send-email-hancock@sedsystems.ca
State Accepted
Commit 4edfabd9e40d72480418d4ce39228abd6c0f4f02
Delegated to: Tom Rini
Headers show
Series [U-Boot] disk: part: Don't skip partition init | expand

Commit Message

Robert Hancock June 18, 2019, 3:53 p.m. UTC
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(-)

Comments

Tom Rini June 22, 2019, 4:08 p.m. UTC | #1
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!
diff mbox series

Patch

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: