diff mbox series

[6/6] fwu: do not allow capsule processing on exceeding Trial Counter threshold

Message ID 20240830114057.891069-7-sughosh.ganu@linaro.org
State Superseded
Headers show
Series Miscellaneous FWU fixes | expand

Commit Message

Sughosh Ganu Aug. 30, 2024, 11:40 a.m. UTC
When in Trial State, the platform keeps a count of the number of times
it has booted in the Trial State. Once the threshold of the maximum
allowed count exceeds, the platform reverts to boot from a different
bank on subsequent boot, thus coming out of the Trial State. It is
expected that all the updated images would be accepted or rejected
while the platform is in Trial State. Put in checks so that it is not
possible to apply an empty capsule once the max Trial Count exceeds.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
---
 lib/fwu_updates/fwu.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Michal Simek Sept. 4, 2024, 12:36 p.m. UTC | #1
On 8/30/24 13:40, Sughosh Ganu wrote:
> When in Trial State, the platform keeps a count of the number of times
> it has booted in the Trial State. Once the threshold of the maximum
> allowed count exceeds, the platform reverts to boot from a different
> bank on subsequent boot, thus coming out of the Trial State. It is
> expected that all the updated images would be accepted or rejected
> while the platform is in Trial State. Put in checks so that it is not
> possible to apply an empty capsule once the max Trial Count exceeds.
> 
> Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
> ---
>   lib/fwu_updates/fwu.c | 6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/fwu_updates/fwu.c b/lib/fwu_updates/fwu.c
> index a94a769a2b..7f085a0211 100644
> --- a/lib/fwu_updates/fwu.c
> +++ b/lib/fwu_updates/fwu.c
> @@ -113,6 +113,8 @@ static int fwu_trial_count_update(void)
>   		ret = fwu_revert_boot_index();
>   		if (ret)
>   			log_err("Unable to revert active_index\n");
> +
> +		trial_counter_update(NULL);
>   		ret = 1;
>   	} else {
>   		log_info("Trial State count: attempt %d out of %d\n",
> @@ -762,8 +764,8 @@ static int fwu_boottime_checks(void)
>   		return 0;
>   
>   	in_trial = in_trial_state();
> -	if (!in_trial || (ret = fwu_trial_count_update()) > 0)
> -		ret = trial_counter_update(NULL);
> +
> +	ret = in_trial ? fwu_trial_count_update() : trial_counter_update(NULL);
>   
>   	if (!ret)
>   		boottime_check = 1;

Tested-by: Michal Simek <michal.simek@amd.com>

Thanks,
Michal
diff mbox series

Patch

diff --git a/lib/fwu_updates/fwu.c b/lib/fwu_updates/fwu.c
index a94a769a2b..7f085a0211 100644
--- a/lib/fwu_updates/fwu.c
+++ b/lib/fwu_updates/fwu.c
@@ -113,6 +113,8 @@  static int fwu_trial_count_update(void)
 		ret = fwu_revert_boot_index();
 		if (ret)
 			log_err("Unable to revert active_index\n");
+
+		trial_counter_update(NULL);
 		ret = 1;
 	} else {
 		log_info("Trial State count: attempt %d out of %d\n",
@@ -762,8 +764,8 @@  static int fwu_boottime_checks(void)
 		return 0;
 
 	in_trial = in_trial_state();
-	if (!in_trial || (ret = fwu_trial_count_update()) > 0)
-		ret = trial_counter_update(NULL);
+
+	ret = in_trial ? fwu_trial_count_update() : trial_counter_update(NULL);
 
 	if (!ret)
 		boottime_check = 1;