disk: part: Don't skip partition init
authorRobert Hancock <hancock@sedsystems.ca>
Tue, 18 Jun 2019 15:53:04 +0000 (09:53 -0600)
committerTom Rini <trini@konsulko.com>
Fri, 21 Jun 2019 14:07:11 +0000 (10:07 -0400)
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

index 862078f3e7c8a296a1357fa112fe42a119ff2bd5..f14bc22b6db669179325e0e1a3549d1a6dca34b7 100644 (file)
@@ -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: