diff --git a/src/com/android/settings/users/UserDetailsSettings.java b/src/com/android/settings/users/UserDetailsSettings.java
index 8a070c2..366b628 100644
--- a/src/com/android/settings/users/UserDetailsSettings.java
+++ b/src/com/android/settings/users/UserDetailsSettings.java
@@ -30,6 +30,8 @@
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
 
+import java.util.List;
+
 /**
  * Settings screen for configuring a specific user. It can contain user restrictions
  * and deletion controls. It is shown when you tap on the settings icon in the
@@ -122,6 +124,16 @@
             // SMS is always disabled for guest
             mDefaultGuestRestrictions.putBoolean(UserManager.DISALLOW_SMS, true);
             mUserManager.setDefaultGuestRestrictions(mDefaultGuestRestrictions);
+            // Update the guest's restrictions, if there is a guest
+            List<UserInfo> users = mUserManager.getUsers(true);
+            for (UserInfo user: users) {
+                if (user.isGuest()) {
+                    UserHandle userHandle = new UserHandle(user.id);
+                    Bundle userRestrictions = mUserManager.getUserRestrictions(userHandle);
+                    userRestrictions.putAll(mDefaultGuestRestrictions);
+                    mUserManager.setUserRestrictions(userRestrictions, userHandle);
+                }
+            }
         } else {
             // TODO: Show confirmation dialog: b/15761405
             UserHandle userHandle = new UserHandle(mUserInfo.id);
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 872f71f..b95c397 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -397,7 +397,7 @@
     }
 
     private UserInfo createLimitedUser() {
-        UserInfo newUserInfo = mUserManager.createUser(
+        UserInfo newUserInfo = mUserManager.createSecondaryUser(
                 getResources().getString(R.string.user_new_profile_name),
                 UserInfo.FLAG_RESTRICTED);
         int userId = newUserInfo.id;
@@ -421,7 +421,7 @@
     }
 
     private UserInfo createTrustedUser() {
-        UserInfo newUserInfo = mUserManager.createUser(
+        UserInfo newUserInfo = mUserManager.createSecondaryUser(
                 getResources().getString(R.string.user_new_user_name), 0);
         if (newUserInfo != null) {
             assignDefaultPhoto(newUserInfo);
