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

Commit 6cb651b1 authored by Eric Biggers's avatar Eric Biggers Committed by Automerger Merge Worker
Browse files

Merge changes I4bb716a5,I11f2507f,Idfb46e62 into main am: 761162db am: 662cdcc1 am: 07ab433f

parents ad3b435c 07ab433f
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -134,16 +134,16 @@ interface IStorageManager {
    @EnforcePermission("MOUNT_UNMOUNT_FILESYSTEMS")
    void setDebugFlags(int flags, int mask) = 60;
    @EnforcePermission("STORAGE_INTERNAL")
    void createUserStorageKeys(int userId, int serialNumber, boolean ephemeral) = 61;
    void createUserStorageKeys(int userId, boolean ephemeral) = 61;
    @EnforcePermission("STORAGE_INTERNAL")
    void destroyUserStorageKeys(int userId) = 62;
    @EnforcePermission("STORAGE_INTERNAL")
    void unlockCeStorage(int userId, int serialNumber, in byte[] secret) = 63;
    void unlockCeStorage(int userId, in byte[] secret) = 63;
    @EnforcePermission("STORAGE_INTERNAL")
    void lockCeStorage(int userId) = 64;
    boolean isCeStorageUnlocked(int userId) = 65;
    @EnforcePermission("STORAGE_INTERNAL")
    void prepareUserStorage(in String volumeUuid, int userId, int serialNumber, int flags) = 66;
    void prepareUserStorage(in String volumeUuid, int userId, int flags) = 66;
    @EnforcePermission("STORAGE_INTERNAL")
    void destroyUserStorage(in String volumeUuid, int userId, int flags) = 67;
    @EnforcePermission("STORAGE_INTERNAL")
+4 −5
Original line number Diff line number Diff line
@@ -1602,14 +1602,13 @@ public class StorageManager {
     * This is only intended to be called by UserManagerService, as part of creating a user.
     *
     * @param userId ID of the user
     * @param serialNumber serial number of the user
     * @param ephemeral whether the user is ephemeral
     * @throws RuntimeException on error.  The user's keys already existing is considered an error.
     * @hide
     */
    public void createUserStorageKeys(int userId, int serialNumber, boolean ephemeral) {
    public void createUserStorageKeys(int userId, boolean ephemeral) {
        try {
            mStorageManager.createUserStorageKeys(userId, serialNumber, ephemeral);
            mStorageManager.createUserStorageKeys(userId, ephemeral);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
@@ -1653,9 +1652,9 @@ public class StorageManager {
    }

    /** {@hide} */
    public void prepareUserStorage(String volumeUuid, int userId, int serialNumber, int flags) {
    public void prepareUserStorage(String volumeUuid, int userId, int flags) {
        try {
            mStorageManager.prepareUserStorage(volumeUuid, userId, serialNumber, flags);
            mStorageManager.prepareUserStorage(volumeUuid, userId, flags);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+9 −10
Original line number Diff line number Diff line
@@ -1356,8 +1356,8 @@ class StorageManagerService extends IStorageManager.Stub

        final int flags = StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE;
        for (UserInfo user : users) {
            prepareUserStorageInternal(fromVolumeUuid, user.id, user.serialNumber, flags);
            prepareUserStorageInternal(toVolumeUuid, user.id, user.serialNumber, flags);
            prepareUserStorageInternal(fromVolumeUuid, user.id, flags);
            prepareUserStorageInternal(toVolumeUuid, user.id, flags);
        }
    }

@@ -3231,7 +3231,7 @@ class StorageManagerService extends IStorageManager.Stub

    @android.annotation.EnforcePermission(android.Manifest.permission.STORAGE_INTERNAL)
    @Override
    public void createUserStorageKeys(int userId, int serialNumber, boolean ephemeral) {
    public void createUserStorageKeys(int userId, boolean ephemeral) {

        super.createUserStorageKeys_enforcePermission();

@@ -3276,8 +3276,7 @@ class StorageManagerService extends IStorageManager.Stub
    /* Only for use by LockSettingsService */
    @android.annotation.EnforcePermission(android.Manifest.permission.STORAGE_INTERNAL)
    @Override
    public void unlockCeStorage(@UserIdInt int userId, int serialNumber, byte[] secret)
            throws RemoteException {
    public void unlockCeStorage(@UserIdInt int userId, byte[] secret) throws RemoteException {
        super.unlockCeStorage_enforcePermission();

        if (StorageManager.isFileEncrypted()) {
@@ -3348,25 +3347,25 @@ class StorageManagerService extends IStorageManager.Stub
                continue;
            }

            prepareUserStorageInternal(vol.fsUuid, user.id, user.serialNumber, flags);
            prepareUserStorageInternal(vol.fsUuid, user.id, flags);
        }
    }

    @android.annotation.EnforcePermission(android.Manifest.permission.STORAGE_INTERNAL)
    @Override
    public void prepareUserStorage(String volumeUuid, int userId, int serialNumber, int flags) {
    public void prepareUserStorage(String volumeUuid, int userId, int flags) {

        super.prepareUserStorage_enforcePermission();

        try {
            prepareUserStorageInternal(volumeUuid, userId, serialNumber, flags);
            prepareUserStorageInternal(volumeUuid, userId, flags);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    private void prepareUserStorageInternal(String volumeUuid, int userId, int serialNumber,
            int flags) throws Exception {
    private void prepareUserStorageInternal(String volumeUuid, int userId, int flags)
            throws Exception {
        try {
            mVold.prepareUserStorage(volumeUuid, userId, flags);
            // After preparing user storage, we should check if we should mount data mirror again,
+1 −2
Original line number Diff line number Diff line
@@ -2118,11 +2118,10 @@ public class LockSettingsService extends ILockSettings.Stub {
            Slogf.d(TAG, "CE storage for user %d is already unlocked", userId);
            return;
        }
        final UserInfo userInfo = mUserManager.getUserInfo(userId);
        final String userType = isUserSecure(userId) ? "secured" : "unsecured";
        final byte[] secret = sp.deriveFileBasedEncryptionKey();
        try {
            mStorageManager.unlockCeStorage(userId, userInfo.serialNumber, secret);
            mStorageManager.unlockCeStorage(userId, secret);
            Slogf.i(TAG, "Unlocked CE storage for %s user %d", userType, userId);
        } catch (RemoteException e) {
            Slogf.wtf(TAG, e, "Failed to unlock CE storage for %s user %d", userType, userId);
+1 −1
Original line number Diff line number Diff line
@@ -193,7 +193,7 @@ public final class StorageEventHelper extends StorageEventListener {
            }

            try {
                sm.prepareUserStorage(volumeUuid, user.id, user.serialNumber, flags);
                sm.prepareUserStorage(volumeUuid, user.id, flags);
                synchronized (mPm.mInstallLock) {
                    appDataHelper.reconcileAppsDataLI(volumeUuid, user.id, flags,
                            true /* migrateAppData */);
Loading