Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b649934e authored by Ravi Kumar Siddojigari's avatar Ravi Kumar Siddojigari
Browse files

dm verity: correcting logic used with corrupted_errs counter



Current logic on handling corrupted_errs countes is not considering
DM_VERITY_MAX_CORRUPTED_ERRS limit so correcting the logic.

Change-Id: Ide3f3e6b9d8bec8f02cbb5a72b7d0935bcd87826
Signed-off-by: default avatarRavi Kumar Siddojigari <rsiddoji@codeaurora.org>
parent ce480240
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -220,8 +220,10 @@ static int verity_handle_err(struct dm_verity *v, enum verity_block_type type,
	/* Corruption should be visible in device status in all modes */
	v->hash_failed = 1;

	if (v->corrupted_errs >= DM_VERITY_MAX_CORRUPTED_ERRS)
	if (v->corrupted_errs >= DM_VERITY_MAX_CORRUPTED_ERRS) {
		DMERR("%s: reached maximum errors", v->data_dev->name);
		goto out;
	}

	v->corrupted_errs++;

@@ -239,14 +241,16 @@ static int verity_handle_err(struct dm_verity *v, enum verity_block_type type,
	DMERR_LIMIT("%s: %s block %llu is corrupted", v->data_dev->name,
		    type_str, block);

	if (v->corrupted_errs == DM_VERITY_MAX_CORRUPTED_ERRS)
		DMERR("%s: reached maximum errors", v->data_dev->name);

	snprintf(verity_env, DM_VERITY_ENV_LENGTH, "%s=%d,%llu",
		DM_VERITY_ENV_VAR_NAME, type, block);

	kobject_uevent_env(&disk_to_dev(dm_disk(md))->kobj, KOBJ_CHANGE, envp);

	/* corrupted_errs count had not reached limits */
	return 0;


out:
	if (v->mode == DM_VERITY_MODE_LOGGING)
		return 0;