| OLD | NEW |
| 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 /* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 2 * Use of this source code is governed by a BSD-style license that can be | 2 * Use of this source code is governed by a BSD-style license that can be |
| 3 * found in the LICENSE file. | 3 * found in the LICENSE file. |
| 4 * | 4 * |
| 5 * Functions for querying, manipulating and locking rollback indices | 5 * Functions for querying, manipulating and locking rollback indices |
| 6 * stored in the TPM NVRAM. | 6 * stored in the TPM NVRAM. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 #include "rollback_index.h" | 9 #include "rollback_index.h" |
| 10 | 10 |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 rsf.fw_versions = version; | 373 rsf.fw_versions = version; |
| 374 return WriteSpaceFirmware(&rsf); | 374 return WriteSpaceFirmware(&rsf); |
| 375 } | 375 } |
| 376 | 376 |
| 377 uint32_t RollbackFirmwareLock(void) { | 377 uint32_t RollbackFirmwareLock(void) { |
| 378 return TlclSetGlobalLock(); | 378 return TlclSetGlobalLock(); |
| 379 } | 379 } |
| 380 | 380 |
| 381 uint32_t RollbackKernelRecovery(int developer_mode) { | 381 uint32_t RollbackKernelRecovery(int developer_mode) { |
| 382 RollbackSpaceFirmware rsf; | 382 RollbackSpaceFirmware rsf; |
| 383 uint32_t result = SetupTPM(1, developer_mode, &rsf); | 383 |
| 384 /* In recovery mode we ignore TPM malfunctions or corruptions, and leave the | 384 /* In recovery mode we ignore TPM malfunctions or corruptions, and * |
| 385 * TPM completely unlocked if and only if the dev mode switch is ON. The | 385 * leave the TPM complelely unlocked; we call neither |
| 386 * recovery kernel will fix the TPM (if needed) and lock it ASAP. We leave | 386 * TlclSetGlobalLock() nor TlclLockPhysicalPresence(). The recovery |
| 387 * kernel will fix the TPM (if needed) and lock it ASAP. We leave |
| 387 * Physical Presence on in either case. */ | 388 * Physical Presence on in either case. */ |
| 388 if (!developer_mode) { | 389 return SetupTPM(1, developer_mode, &rsf); |
| 389 RETURN_ON_FAILURE(TlclSetGlobalLock()); | |
| 390 } | |
| 391 /* We still return the result of SetupTPM even though we expect the caller to | |
| 392 * ignore it. It's useful in unit testing. */ | |
| 393 return result; | |
| 394 } | 390 } |
| 395 | 391 |
| 396 uint32_t RollbackKernelRead(uint32_t* version) { | 392 uint32_t RollbackKernelRead(uint32_t* version) { |
| 397 if (g_rollback_recovery_mode) { | 393 if (g_rollback_recovery_mode) { |
| 398 *version = 0; | 394 *version = 0; |
| 399 } else { | 395 } else { |
| 400 RollbackSpaceKernel rsk; | 396 RollbackSpaceKernel rsk; |
| 401 uint32_t perms; | 397 uint32_t perms; |
| 402 | 398 |
| 403 /* Read the kernel space and verify its permissions. If the kernel | 399 /* Read the kernel space and verify its permissions. If the kernel |
| (...skipping 28 matching lines...) Expand all Loading... |
| 432 | 428 |
| 433 uint32_t RollbackKernelLock(void) { | 429 uint32_t RollbackKernelLock(void) { |
| 434 if (g_rollback_recovery_mode) { | 430 if (g_rollback_recovery_mode) { |
| 435 return TPM_SUCCESS; | 431 return TPM_SUCCESS; |
| 436 } else { | 432 } else { |
| 437 return TlclLockPhysicalPresence(); | 433 return TlclLockPhysicalPresence(); |
| 438 } | 434 } |
| 439 } | 435 } |
| 440 | 436 |
| 441 #endif // DISABLE_ROLLBACK_TPM | 437 #endif // DISABLE_ROLLBACK_TPM |
| OLD | NEW |