diff --git a/src/com/android/settings/OwnerInfoSettings.java b/src/com/android/settings/OwnerInfoSettings.java
index 51d166c..2f7721b 100644
--- a/src/com/android/settings/OwnerInfoSettings.java
+++ b/src/com/android/settings/OwnerInfoSettings.java
@@ -81,7 +81,11 @@
         }
         mCheckbox.setChecked(enabled);
         if (UserHandle.myUserId() != UserHandle.USER_OWNER) {
-            mCheckbox.setText(R.string.show_user_info_on_lockscreen_label);
+            if (UserManager.get(getActivity()).isLinkedUser()) {
+                mCheckbox.setText(R.string.show_profile_info_on_lockscreen_label);
+            } else {
+                mCheckbox.setText(R.string.show_user_info_on_lockscreen_label);
+            }
         }
         mCheckbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
             public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index a64d731..535d881 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -168,7 +168,11 @@
             // Rename owner info settings
             Preference ownerInfoPref = findPreference(KEY_OWNER_INFO_SETTINGS);
             if (ownerInfoPref != null) {
-                ownerInfoPref.setTitle(R.string.user_info_settings_title);
+                if (UserManager.get(getActivity()).isLinkedUser()) {
+                    ownerInfoPref.setTitle(R.string.profile_info_settings_title);
+                } else {
+                    ownerInfoPref.setTitle(R.string.user_info_settings_title);
+                }
             }
         }
 
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 4cc4e40..02769e1 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -763,7 +763,11 @@
             titleRes = R.string.wallpaper_settings_fragment_title;
         } else if (pref.getFragment().equals(OwnerInfoSettings.class.getName())
                 && UserHandle.myUserId() != UserHandle.USER_OWNER) {
-            titleRes = R.string.user_info_settings_title;
+            if (UserManager.get(this).isLinkedUser()) {
+                titleRes = R.string.profile_info_settings_title;
+            } else {
+                titleRes = R.string.user_info_settings_title;
+            }
         }
         startPreferencePanel(pref.getFragment(), pref.getExtras(), titleRes, pref.getTitle(),
                 null, 0);
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 962f7b8..04f7743 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -350,11 +350,15 @@
         } else if (info.id == UserHandle.myUserId()) {
             // Jump to owner info panel
             Bundle extras = new Bundle();
-            extras.putBoolean(OwnerInfoSettings.EXTRA_SHOW_NICKNAME, true);
+            if (!info.isRestricted()) {
+                extras.putBoolean(OwnerInfoSettings.EXTRA_SHOW_NICKNAME, true);
+            }
+            int titleResId = info.id == UserHandle.USER_OWNER ? R.string.owner_info_settings_title
+                    : (info.isRestricted() ? R.string.profile_info_settings_title
+                            : R.string.user_info_settings_title);
             ((PreferenceActivity) getActivity()).startPreferencePanel(
                     OwnerInfoSettings.class.getName(),
-                    extras, R.string.user_info_settings_title, null,
-                    null, 0);
+                    extras, titleResId, null, null, 0);
         }
     }
 
