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

login
register
mail settings
Submitter Stephen Warren
Date Oct. 10, 2012, 5:57 p.m.
Message ID <1349891871-31062-1-git-send-email-swarren@wwwdotorg.org>
Download mbox | patch
Permalink /patch/190798/
State Accepted
Delegated to: Tom Rini
Headers show

Comments

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(-)
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

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