[U-Boot,v3,1/1] avb2.0: add get_size_of_partition()

Message ID 1533909599-26263-1-git-send-email-igor.opaniuk@linaro.org
State Accepted
Delegated to: Tom Rini
Headers show
Series
  • [U-Boot,v3,1/1] avb2.0: add get_size_of_partition()
Related show

Commit Message

Igor Opaniuk Aug. 10, 2018, 1:59 p.m.
Implement get_size_of_partition() operation,
which is required by the latest upstream libavb [1].

[1] https://android.googlesource.com/platform/external/avb/+/android-p-preview-5

Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>
---

Changes for v3:
- reword commit message, added avblib repository link, that stick to specific
  tag
- fix get_size_of_partition() function description.

Changes for v2:
- change the return code for the case when out_size_num_bytes is NULL
  (s/AVB_IO_RESULT_ERROR_IO/AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE/g)

 common/avb_verify.c | 33 ++++++++++++++++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

Comments

Andrew F. Davis Aug. 10, 2018, 2:06 p.m. | #1
On 08/10/2018 08:59 AM, Igor Opaniuk wrote:
> Implement get_size_of_partition() operation,
> which is required by the latest upstream libavb [1].
> 
> [1] https://android.googlesource.com/platform/external/avb/+/android-p-preview-5
> 
> Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>


Sam reviewed v1, not sure enough changed to drop his review tag, anyway
for me:

Acked-by: Andrew F. Davis <afd@ti.com>

> ---
> 
> Changes for v3:
> - reword commit message, added avblib repository link, that stick to specific
>   tag
> - fix get_size_of_partition() function description.
> 
> Changes for v2:
> - change the return code for the case when out_size_num_bytes is NULL
>   (s/AVB_IO_RESULT_ERROR_IO/AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE/g)
> 
>  common/avb_verify.c | 33 ++++++++++++++++++++++++++++++++-
>  1 file changed, 32 insertions(+), 1 deletion(-)
> 
> diff --git a/common/avb_verify.c b/common/avb_verify.c
> index 20e35ad..82ddebc 100644
> --- a/common/avb_verify.c
> +++ b/common/avb_verify.c
> @@ -700,6 +700,37 @@ static AvbIOResult get_unique_guid_for_partition(AvbOps *ops,
>  }
>  
>  /**
> + * get_size_of_partition() - gets the size of a partition identified
> + * by a string name
> + *
> + * @ops: contains AVB ops handlers
> + * @partition: partition name (NUL-terminated UTF-8 string)
> + * @out_size_num_bytes: returns the value of a partition size
> + *
> + * @return:
> + *      AVB_IO_RESULT_OK, on success (GUID found)
> + *      AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE, out_size_num_bytes is NULL
> + *      AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION, if partition was not found
> + */
> +static AvbIOResult get_size_of_partition(AvbOps *ops,
> +					 const char *partition,
> +					 u64 *out_size_num_bytes)
> +{
> +	struct mmc_part *part;
> +
> +	if (!out_size_num_bytes)
> +		return AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE;
> +
> +	part = get_partition(ops, partition);
> +	if (!part)
> +		return AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION;
> +
> +	*out_size_num_bytes = part->info.blksz * part->info.size;
> +
> +	return AVB_IO_RESULT_OK;
> +}
> +
> +/**
>   * ============================================================================
>   * AVB2.0 AvbOps alloc/initialisation/free
>   * ============================================================================
> @@ -722,7 +753,7 @@ AvbOps *avb_ops_alloc(int boot_device)
>  	ops_data->ops.read_is_device_unlocked = read_is_device_unlocked;
>  	ops_data->ops.get_unique_guid_for_partition =
>  		get_unique_guid_for_partition;
> -
> +	ops_data->ops.get_size_of_partition = get_size_of_partition;
>  	ops_data->mmc_dev = boot_device;
>  
>  	return &ops_data->ops;
>
Igor Opaniuk Aug. 10, 2018, 2:14 p.m. | #2
Sam,

Could you please double-check this patch and confirm that your tag can
be still applied?

Thanks!

On 10 August 2018 at 17:06, Andrew F. Davis <afd@ti.com> wrote:
> On 08/10/2018 08:59 AM, Igor Opaniuk wrote:
>> Implement get_size_of_partition() operation,
>> which is required by the latest upstream libavb [1].
>>
>> [1] https://android.googlesource.com/platform/external/avb/+/android-p-preview-5
>>
>> Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>
>
>
> Sam reviewed v1, not sure enough changed to drop his review tag, anyway
> for me:
>
> Acked-by: Andrew F. Davis <afd@ti.com>
>
>> ---
>>
>> Changes for v3:
>> - reword commit message, added avblib repository link, that stick to specific
>>   tag
>> - fix get_size_of_partition() function description.
>>
>> Changes for v2:
>> - change the return code for the case when out_size_num_bytes is NULL
>>   (s/AVB_IO_RESULT_ERROR_IO/AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE/g)
>>
>>  common/avb_verify.c | 33 ++++++++++++++++++++++++++++++++-
>>  1 file changed, 32 insertions(+), 1 deletion(-)
>>
>> diff --git a/common/avb_verify.c b/common/avb_verify.c
>> index 20e35ad..82ddebc 100644
>> --- a/common/avb_verify.c
>> +++ b/common/avb_verify.c
>> @@ -700,6 +700,37 @@ static AvbIOResult get_unique_guid_for_partition(AvbOps *ops,
>>  }
>>
>>  /**
>> + * get_size_of_partition() - gets the size of a partition identified
>> + * by a string name
>> + *
>> + * @ops: contains AVB ops handlers
>> + * @partition: partition name (NUL-terminated UTF-8 string)
>> + * @out_size_num_bytes: returns the value of a partition size
>> + *
>> + * @return:
>> + *      AVB_IO_RESULT_OK, on success (GUID found)
>> + *      AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE, out_size_num_bytes is NULL
>> + *      AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION, if partition was not found
>> + */
>> +static AvbIOResult get_size_of_partition(AvbOps *ops,
>> +                                      const char *partition,
>> +                                      u64 *out_size_num_bytes)
>> +{
>> +     struct mmc_part *part;
>> +
>> +     if (!out_size_num_bytes)
>> +             return AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE;
>> +
>> +     part = get_partition(ops, partition);
>> +     if (!part)
>> +             return AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION;
>> +
>> +     *out_size_num_bytes = part->info.blksz * part->info.size;
>> +
>> +     return AVB_IO_RESULT_OK;
>> +}
>> +
>> +/**
>>   * ============================================================================
>>   * AVB2.0 AvbOps alloc/initialisation/free
>>   * ============================================================================
>> @@ -722,7 +753,7 @@ AvbOps *avb_ops_alloc(int boot_device)
>>       ops_data->ops.read_is_device_unlocked = read_is_device_unlocked;
>>       ops_data->ops.get_unique_guid_for_partition =
>>               get_unique_guid_for_partition;
>> -
>> +     ops_data->ops.get_size_of_partition = get_size_of_partition;
>>       ops_data->mmc_dev = boot_device;
>>
>>       return &ops_data->ops;
>>
Sam Protsenko Aug. 13, 2018, 2:46 p.m. | #3
On Fri, Aug 10, 2018 at 5:14 PM, Igor Opaniuk <igor.opaniuk@linaro.org> wrote:
> Sam,
>
> Could you please double-check this patch and confirm that your tag can
> be still applied?
>

Sure.

Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>

> Thanks!
>
> On 10 August 2018 at 17:06, Andrew F. Davis <afd@ti.com> wrote:
>> On 08/10/2018 08:59 AM, Igor Opaniuk wrote:
>>> Implement get_size_of_partition() operation,
>>> which is required by the latest upstream libavb [1].
>>>
>>> [1] https://android.googlesource.com/platform/external/avb/+/android-p-preview-5
>>>
>>> Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>
>>
>>
>> Sam reviewed v1, not sure enough changed to drop his review tag, anyway
>> for me:
>>
>> Acked-by: Andrew F. Davis <afd@ti.com>
>>
>>> ---
>>>
>>> Changes for v3:
>>> - reword commit message, added avblib repository link, that stick to specific
>>>   tag
>>> - fix get_size_of_partition() function description.
>>>
>>> Changes for v2:
>>> - change the return code for the case when out_size_num_bytes is NULL
>>>   (s/AVB_IO_RESULT_ERROR_IO/AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE/g)
>>>
>>>  common/avb_verify.c | 33 ++++++++++++++++++++++++++++++++-
>>>  1 file changed, 32 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/common/avb_verify.c b/common/avb_verify.c
>>> index 20e35ad..82ddebc 100644
>>> --- a/common/avb_verify.c
>>> +++ b/common/avb_verify.c
>>> @@ -700,6 +700,37 @@ static AvbIOResult get_unique_guid_for_partition(AvbOps *ops,
>>>  }
>>>
>>>  /**
>>> + * get_size_of_partition() - gets the size of a partition identified
>>> + * by a string name
>>> + *
>>> + * @ops: contains AVB ops handlers
>>> + * @partition: partition name (NUL-terminated UTF-8 string)
>>> + * @out_size_num_bytes: returns the value of a partition size
>>> + *
>>> + * @return:
>>> + *      AVB_IO_RESULT_OK, on success (GUID found)
>>> + *      AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE, out_size_num_bytes is NULL
>>> + *      AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION, if partition was not found
>>> + */
>>> +static AvbIOResult get_size_of_partition(AvbOps *ops,
>>> +                                      const char *partition,
>>> +                                      u64 *out_size_num_bytes)
>>> +{
>>> +     struct mmc_part *part;
>>> +
>>> +     if (!out_size_num_bytes)
>>> +             return AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE;
>>> +
>>> +     part = get_partition(ops, partition);
>>> +     if (!part)
>>> +             return AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION;
>>> +
>>> +     *out_size_num_bytes = part->info.blksz * part->info.size;
>>> +
>>> +     return AVB_IO_RESULT_OK;
>>> +}
>>> +
>>> +/**
>>>   * ============================================================================
>>>   * AVB2.0 AvbOps alloc/initialisation/free
>>>   * ============================================================================
>>> @@ -722,7 +753,7 @@ AvbOps *avb_ops_alloc(int boot_device)
>>>       ops_data->ops.read_is_device_unlocked = read_is_device_unlocked;
>>>       ops_data->ops.get_unique_guid_for_partition =
>>>               get_unique_guid_for_partition;
>>> -
>>> +     ops_data->ops.get_size_of_partition = get_size_of_partition;
>>>       ops_data->mmc_dev = boot_device;
>>>
>>>       return &ops_data->ops;
>>>
>
>
>
> --
> Regards,
> Igor Opaniuk
Tom Rini Aug. 13, 2018, 11:55 p.m. | #4
On Fri, Aug 10, 2018 at 04:59:59PM +0300, Igor Opaniuk wrote:

> Implement get_size_of_partition() operation,
> which is required by the latest upstream libavb [1].
> 
> [1] https://android.googlesource.com/platform/external/avb/+/android-p-preview-5
> 
> Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>
> Acked-by: Andrew F. Davis <afd@ti.com>
> Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>

Applied to u-boot/master, thanks!

Patch

diff --git a/common/avb_verify.c b/common/avb_verify.c
index 20e35ad..82ddebc 100644
--- a/common/avb_verify.c
+++ b/common/avb_verify.c
@@ -700,6 +700,37 @@  static AvbIOResult get_unique_guid_for_partition(AvbOps *ops,
 }
 
 /**
+ * get_size_of_partition() - gets the size of a partition identified
+ * by a string name
+ *
+ * @ops: contains AVB ops handlers
+ * @partition: partition name (NUL-terminated UTF-8 string)
+ * @out_size_num_bytes: returns the value of a partition size
+ *
+ * @return:
+ *      AVB_IO_RESULT_OK, on success (GUID found)
+ *      AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE, out_size_num_bytes is NULL
+ *      AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION, if partition was not found
+ */
+static AvbIOResult get_size_of_partition(AvbOps *ops,
+					 const char *partition,
+					 u64 *out_size_num_bytes)
+{
+	struct mmc_part *part;
+
+	if (!out_size_num_bytes)
+		return AVB_IO_RESULT_ERROR_INSUFFICIENT_SPACE;
+
+	part = get_partition(ops, partition);
+	if (!part)
+		return AVB_IO_RESULT_ERROR_NO_SUCH_PARTITION;
+
+	*out_size_num_bytes = part->info.blksz * part->info.size;
+
+	return AVB_IO_RESULT_OK;
+}
+
+/**
  * ============================================================================
  * AVB2.0 AvbOps alloc/initialisation/free
  * ============================================================================
@@ -722,7 +753,7 @@  AvbOps *avb_ops_alloc(int boot_device)
 	ops_data->ops.read_is_device_unlocked = read_is_device_unlocked;
 	ops_data->ops.get_unique_guid_for_partition =
 		get_unique_guid_for_partition;
-
+	ops_data->ops.get_size_of_partition = get_size_of_partition;
 	ops_data->mmc_dev = boot_device;
 
 	return &ops_data->ops;