Home | History | Annotate | Download | only in fs_mgr

Lines Matching refs:fstab

46 #define FSTAB_PREFIX "/fstab."
679 static int compare_last_signature(struct fstab_rec *fstab, int *match)
693 if (get_fs_size(fstab->fs_type, fstab->blk_device, &device_size) < 0) {
698 if (read_verity_metadata(device_size, fstab->blk_device, &signature, NULL) < 0) {
699 ERROR("Failed to read verity signature from %s\n", fstab->mount_point);
706 basename(fstab->mount_point)) >= (int)sizeof(tag)) {
707 ERROR("Metadata tag name too long for %s\n", fstab->mount_point);
711 if (metadata_find(fstab->verity_loc, tag, SHA256_DIGEST_SIZE,
716 fd = TEMP_FAILURE_RETRY(open(fstab->verity_loc, O_RDWR | O_SYNC | O_CLOEXEC));
719 ERROR("Failed to open %s: %s\n", fstab->verity_loc, strerror(errno));
726 sizeof(prev), fstab->verity_loc, offset, strerror(errno));
737 sizeof(curr), fstab->verity_loc, offset, strerror(errno));
754 static int get_verity_state_offset(struct fstab_rec *fstab, off64_t *offset)
759 basename(fstab->mount_point)) >= (int)sizeof(tag)) {
760 ERROR("Metadata tag name too long for %s\n", fstab->mount_point);
764 return metadata_find(fstab->verity_loc, tag, sizeof(struct verity_state),
768 static int load_verity_state(struct fstab_rec *fstab, int *mode)
789 if (get_verity_state_offset(fstab, &offset) < 0) {
799 return write_verity_state(fstab->verity_loc, offset, *mode);
802 if (!compare_last_signature(fstab, &match) && !match) {
805 return write_verity_state(fstab->verity_loc, offset, *mode);
808 return read_verity_state(fstab->verity_loc, offset, mode);
818 struct fstab *fstab = NULL;
827 fstab = fs_mgr_read_fstab(fstab_filename);
829 if (!fstab) {
834 for (i = 0; i < fstab->num_entries; i++) {
835 if (!fs_mgr_is_verified(&fstab->recs[i])) {
839 rc = load_verity_state(&fstab->recs[i], &current);
852 if (fstab) {
853 fs_mgr_free_fstab(fstab);
872 struct fstab *fstab = NULL;
891 fstab = fs_mgr_read_fstab(fstab_filename);
893 if (!fstab) {
898 for (i = 0; i < fstab->num_entries; i++) {
899 if (!fs_mgr_is_verified(&fstab->recs[i])) {
903 if (get_verity_state_offset(&fstab->recs[i], &offset) < 0 ||
904 read_verity_state(fstab->recs[i].verity_loc, offset, &mode) < 0) {
908 mount_point = basename(fstab->recs[i].mount_point);
920 if (write_verity_state(fstab->recs[i].verity_loc, offset,
927 callback(&fstab->recs[i], mount_point, mode, *status);
934 if (fstab) {
935 fs_mgr_free_fstab(fstab);
945 int fs_mgr_setup_verity(struct fstab_rec *fstab) {
958 char *mount_point = basename(fstab->mount_point);
965 if (get_fs_size(fstab->fs_type, fstab->blk_device, &device_size) < 0) {
972 fstab->blk_device,
1006 if (load_verity_state(fstab, &mode) < 0) {
1028 fs_mgr_set_blk_ro(fstab->blk_device);
1031 free(fstab->blk_device);
1032 fstab->blk_device = verity_blk_name;
1036 if (test_access(fstab->blk_device) < 0) {