1ee35cf002
During userspace reboot /data might be unmounted & remounted, meaning that CE keys stored in fs-level keyring will be lost. In order to be able to restore them, when installing new key to fs-level keyring, it's also added to session-level keyring with type "fscrypt-provisioning". Then when init_user0 is called during userspace reboot, vold will try to load CE keys from the session-level keyring back into fs-level keyring for all the users that were unlocked before the reboot. If for any user vold fails to install the key, init_user0 will fail and fallback to hard reboot will be triggered. Test: set a pin pattern Test: adb shell setprop sys.init.userdata_remount.force_umount 1 Test: adb shell svc power reboot userspace Test: atest CtsUserspaceRebootHostSideTestCases Bug: 143970043 Change-Id: I37603dc136c7ededc7b0381e4d730cb0ffd912b4
27 lines
615 B
C
27 lines
615 B
C
#ifndef _UAPI_LINUX_FSCRYPT_VOLD_H
|
|
#define _UAPI_LINUX_FSCRYPT_VOLD_H
|
|
|
|
#include <linux/fscrypt.h>
|
|
#include <linux/types.h>
|
|
|
|
#define FSCRYPT_ADD_KEY_FLAG_WRAPPED 0x01
|
|
|
|
struct sys_fscrypt_add_key_arg {
|
|
struct fscrypt_key_specifier key_spec;
|
|
__u32 raw_size;
|
|
__u32 key_id;
|
|
__u32 __reserved[7];
|
|
__u32 flags;
|
|
__u8 raw[];
|
|
};
|
|
|
|
struct sys_fscrypt_provisioning_key_payload {
|
|
__u32 type;
|
|
__u32 __reserved;
|
|
__u8 raw[];
|
|
};
|
|
|
|
#define fscrypt_add_key_arg sys_fscrypt_add_key_arg
|
|
#define fscrypt_provisioning_key_payload sys_fscrypt_provisioning_key_payload
|
|
|
|
#endif //_UAPI_LINUX_FSCRYPT_VOLD_H
|