[U-Boot] disk: initialize name/part fields when returning a whole disk

Submitted by Stephen Warren on Oct. 10, 2012, 5:57 p.m.

Details

Message ID 1349891871-31062-1-git-send-email-swarren@wwwdotorg.org
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Stephen Warren Oct. 10, 2012, 5:57 p.m.
From: Stephen Warren <swarren@nvidia.com>

When get_device_and_partition() finds a disk without a partition table,
under some conditions, it "returns" a disk_partition_t that describes
the entire raw disk. Make sure to initialize all fields in the partition
descriptor in that case.

The value chosen for name is just some arbitrary descriptive string.

The value chosen for info matches the check at the end of
get_device_and_partition(). However, it's probably not that important;
it's not obvious that the value is really used.

Reported-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
---
Tom, this is technically a bug, so putting in the release might make
sense, although I doubt it has much practical impact, so deferring it
into u-boot/next would probably be just as good.

 disk/part.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

Comments

Benoît Thébaudeau Oct. 10, 2012, 6:43 p.m.
On Wednesday, October 10, 2012 7:57:51 PM, Stephen Warren wrote:
> When get_device_and_partition() finds a disk without a partition
> table,
> under some conditions, it "returns" a disk_partition_t that describes
> the entire raw disk. Make sure to initialize all fields in the
> partition
> descriptor in that case.
> 
> The value chosen for name is just some arbitrary descriptive string.
> 
> The value chosen for info matches the check at the end of
> get_device_and_partition(). However, it's probably not that
> important;
> it's not obvious that the value is really used.
> 
> Reported-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> ---
> Tom, this is technically a bug, so putting in the release might make
> sense, although I doubt it has much practical impact, so deferring it
> into u-boot/next would probably be just as good.
> 
>  disk/part.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)
> 
> diff --git a/disk/part.c b/disk/part.c
> index a0c77dd..8ba3cde 100644
> --- a/disk/part.c
> +++ b/disk/part.c
> @@ -561,6 +561,8 @@ int get_device_and_partition(const char *ifname,
> const char *dev_part_str,
>  		info->size = (*dev_desc)->lba;
>  		info->blksz = (*dev_desc)->blksz;
>  		info->bootable = 0;
> +		strcpy((char *)info->type, BOOT_PART_TYPE);
> +		strcpy((char *)info->name, "Whole Disk");
>  #ifdef CONFIG_PARTITION_UUIDS
>  		info->uuid[0] = 0;
>  #endif

Reviewed-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>

Best regards,
Benoît
Tom Rini Oct. 20, 2012, 5:40 p.m.
On Wed, Oct 10, 2012 at 11:57:51AM -0600, Stephen Warren wrote:

> From: Stephen Warren <swarren@nvidia.com>
> 
> When get_device_and_partition() finds a disk without a partition table,
> under some conditions, it "returns" a disk_partition_t that describes
> the entire raw disk. Make sure to initialize all fields in the partition
> descriptor in that case.
> 
> The value chosen for name is just some arbitrary descriptive string.
> 
> The value chosen for info matches the check at the end of
> get_device_and_partition(). However, it's probably not that important;
> it's not obvious that the value is really used.
> 
> Reported-by: Beno??t Th??baudeau <benoit.thebaudeau@advansee.com>
> Signed-off-by: Stephen Warren <swarren@nvidia.com>

Applied to u-boot/master, thanks!
Tom Rini Oct. 20, 2012, 5:40 p.m.
On Wed, Oct 10, 2012 at 07:57:51AM -0000, Stephen Warren wrote:

> From: Stephen Warren <swarren@nvidia.com>
> 
> When get_device_and_partition() finds a disk without a partition table,
> under some conditions, it "returns" a disk_partition_t that describes
> the entire raw disk. Make sure to initialize all fields in the partition
> descriptor in that case.
> 
> The value chosen for name is just some arbitrary descriptive string.
> 
> The value chosen for info matches the check at the end of
> get_device_and_partition(). However, it's probably not that important;
> it's not obvious that the value is really used.
> 
> Reported-by: Beno??t Th??baudeau <benoit.thebaudeau@advansee.com>
> Signed-off-by: Stephen Warren <swarren@nvidia.com>
> Reviewed-by: Beno??t Th??baudeau <benoit.thebaudeau@advansee.com>

Applied to u-boot/master, thanks!

Patch hide | download patch | download mbox

diff --git a/disk/part.c b/disk/part.c
index a0c77dd..8ba3cde 100644
--- a/disk/part.c
+++ b/disk/part.c
@@ -561,6 +561,8 @@  int get_device_and_partition(const char *ifname, const char *dev_part_str,
 		info->size = (*dev_desc)->lba;
 		info->blksz = (*dev_desc)->blksz;
 		info->bootable = 0;
+		strcpy((char *)info->type, BOOT_PART_TYPE);
+		strcpy((char *)info->name, "Whole Disk");
 #ifdef CONFIG_PARTITION_UUIDS
 		info->uuid[0] = 0;
 #endif