diff --git a/v4/java/android/support/v4/app/Fragment.java b/v4/java/android/support/v4/app/Fragment.java
index 79f21ff..48fc495 100644
--- a/v4/java/android/support/v4/app/Fragment.java
+++ b/v4/java/android/support/v4/app/Fragment.java
@@ -272,9 +272,6 @@
 
     // If set this fragment is being retained across the current config change.
     boolean mRetaining;
-
-    // If set this fragment's loaders are being retained across the current config change.
-    boolean mRetainLoader;
     
     // If set this fragment has menu items to contribute.
     boolean mHasMenu;
@@ -2153,7 +2150,7 @@
                 mLoaderManager = mHost.getLoaderManager(mWho, mLoadersStarted, false);
             }
             if (mLoaderManager != null) {
-                if (mRetainLoader) {
+                if (mHost.getRetainLoaders()) {
                     mLoaderManager.doRetain();
                 } else {
                     mLoaderManager.doStop();
diff --git a/v4/java/android/support/v4/app/FragmentController.java b/v4/java/android/support/v4/app/FragmentController.java
index dbf9ee7..5d647b0 100644
--- a/v4/java/android/support/v4/app/FragmentController.java
+++ b/v4/java/android/support/v4/app/FragmentController.java
@@ -346,7 +346,6 @@
      */
     public void doLoaderStop(boolean retain) {
         mHost.doLoaderStop(retain);
-        mHost.mFragmentManager.setRetainLoader(retain);
     }
 
     /**
diff --git a/v4/java/android/support/v4/app/FragmentHostCallback.java b/v4/java/android/support/v4/app/FragmentHostCallback.java
index fb4410f..5d6145a 100644
--- a/v4/java/android/support/v4/app/FragmentHostCallback.java
+++ b/v4/java/android/support/v4/app/FragmentHostCallback.java
@@ -42,9 +42,14 @@
     private final Handler mHandler;
     final int mWindowAnimations;
     final FragmentManagerImpl mFragmentManager = new FragmentManagerImpl();
+    /** The loader managers for individual fragments [i.e. Fragment#getLoaderManager()] */
     private SimpleArrayMap<String, LoaderManager> mAllLoaderManagers;
+    /** Whether or not fragment loaders should retain their state */
+    private boolean mRetainLoaders;
+    /** The loader manger for the fragment host [i.e. Activity#getLoaderManager()] */
     private LoaderManagerImpl mLoaderManager;
     private boolean mCheckedForLoaderManager;
+    /** Whether or not the fragment host loader manager was started */
     private boolean mLoadersStarted;
 
     public FragmentHostCallback(Context context, Handler handler, int windowAnimations) {
@@ -197,6 +202,10 @@
     void onAttachFragment(Fragment fragment) {
     }
 
+    boolean getRetainLoaders() {
+        return mRetainLoaders;
+    }
+
     void doLoaderStart() {
         if (mLoadersStarted) {
             return;
@@ -217,6 +226,8 @@
 
     // retain -- whether to stop the loader or retain it
     void doLoaderStop(boolean retain) {
+        mRetainLoaders = retain;
+
         if (mLoaderManager == null) {
             return;
         }
diff --git a/v4/java/android/support/v4/app/FragmentManager.java b/v4/java/android/support/v4/app/FragmentManager.java
index 8e1a2fc..adf8892 100644
--- a/v4/java/android/support/v4/app/FragmentManager.java
+++ b/v4/java/android/support/v4/app/FragmentManager.java
@@ -918,17 +918,6 @@
         }
     }
 
-    void setRetainLoader(boolean retain) {
-        if (mActive != null) {
-            for (int i=0; i<mActive.size(); i++) {
-                Fragment f = mActive.get(i);
-                if (f != null) {
-                    f.mRetainLoader = retain;
-                }
-            }
-        }
-    }
-
     void moveToState(Fragment f, int newState, int transit, int transitionStyle,
             boolean keepActive) {
         // Fragments that are not currently added will sit in the onCreate() state.
@@ -2264,6 +2253,7 @@
             // This fragment was retained from a previous instance; get it
             // going now.
             fragment.mInLayout = true;
+            fragment.mHost = mHost;
             // If this fragment is newly instantiated (either right now, or
             // from last saved state), then give it the attributes to
             // initialize itself.
diff --git a/v4/java/android/support/v4/provider/DocumentFile.java b/v4/java/android/support/v4/provider/DocumentFile.java
index 0529da8..95e9117 100644
--- a/v4/java/android/support/v4/provider/DocumentFile.java
+++ b/v4/java/android/support/v4/provider/DocumentFile.java
@@ -86,7 +86,7 @@
 
     /**
      * Create a {@link DocumentFile} representing the filesystem tree rooted at
-     * the given {@link Uri}. This doesn't give you any additional access to the
+     * the given {@link File}. This doesn't give you any additional access to the
      * underlying files beyond what your app already has.
      * <p>
      * {@link #getUri()} will return {@code file://} Uris for files explored
diff --git a/v8/renderscript/jni/android_renderscript_RenderScript.cpp b/v8/renderscript/jni/android_renderscript_RenderScript.cpp
index 32243fc..9d69a2d 100644
--- a/v8/renderscript/jni/android_renderscript_RenderScript.cpp
+++ b/v8/renderscript/jni/android_renderscript_RenderScript.cpp
@@ -605,11 +605,11 @@
     if (mUseInc) {
         dispatchTab.ContextFinish((RsContext)con);
         dispatchTabInc.ScriptForEachMulti((RsContext)incCon, (RsScript)id, 0,
-                                          in_allocs, sizeof(in_allocs), nullptr,
+                                          in_allocs, NELEM(in_allocs), nullptr,
                                           &call, sizeof(call), nullptr, 0);
     } else {
         dispatchTab.ScriptForEachMulti((RsContext)con, (RsScript)id, 0,
-                                       in_allocs, sizeof(in_allocs), nullptr,
+                                       in_allocs, NELEM(in_allocs), nullptr,
                                        &call, sizeof(call), nullptr, 0);
     }
 }
@@ -645,11 +645,11 @@
     if (mUseInc) {
         dispatchTab.ContextFinish((RsContext)con);
         dispatchTabInc.ScriptForEachMulti((RsContext)incCon, (RsScript)id, 0,
-                                          in_allocs, sizeof(in_allocs), nullptr,
+                                          in_allocs, NELEM(in_allocs), nullptr,
                                           &call, sizeof(call), nullptr, 0);
     } else {
         dispatchTab.ScriptForEachMulti((RsContext)con, (RsScript)id, 0,
-                                        in_allocs, sizeof(in_allocs), nullptr,
+                                        in_allocs, NELEM(in_allocs), nullptr,
                                         &call, sizeof(call), nullptr, 0);
     }
 }
@@ -688,11 +688,11 @@
     if (mUseInc) {
         dispatchTab.ContextFinish((RsContext)con);
         dispatchTabInc.ScriptForEachMulti((RsContext)incCon, (RsScript)id, 0,
-                                          in_allocs, sizeof(in_allocs), nullptr,
+                                          in_allocs, NELEM(in_allocs), nullptr,
                                           &call, sizeof(call), nullptr, 0);
     } else {
         dispatchTab.ScriptForEachMulti((RsContext)con, (RsScript)id, 0,
-                                       in_allocs, sizeof(in_allocs), nullptr,
+                                       in_allocs, NELEM(in_allocs), nullptr,
                                        &call, sizeof(call), nullptr, 0);
     }
 }
@@ -731,11 +731,11 @@
     if (mUseInc) {
         dispatchTab.ContextFinish((RsContext)con);
         dispatchTabInc.ScriptForEachMulti((RsContext)incCon, (RsScript)id, 0,
-                                          in_allocs, sizeof(in_allocs), nullptr,
+                                          in_allocs, NELEM(in_allocs), nullptr,
                                           &call, sizeof(call), nullptr, 0);
     } else {
         dispatchTab.ScriptForEachMulti((RsContext)con, (RsScript)id, 0,
-                                        in_allocs, sizeof(in_allocs), nullptr,
+                                        in_allocs, NELEM(in_allocs), nullptr,
                                         &call, sizeof(call), nullptr, 0);
     }
 }
@@ -764,11 +764,11 @@
     if (mUseInc) {
         dispatchTab.ContextFinish((RsContext)con);
         dispatchTabInc.ScriptForEachMulti((RsContext)incCon, (RsScript)id, 0,
-                                          in_allocs, sizeof(in_allocs), nullptr,
+                                          in_allocs, NELEM(in_allocs), nullptr,
                                           &call, sizeof(call), nullptr, 0);
     } else {
         dispatchTab.ScriptForEachMulti((RsContext)con, (RsScript)id, 0,
-                                        in_allocs, sizeof(in_allocs), nullptr,
+                                        in_allocs, NELEM(in_allocs), nullptr,
                                         &call, sizeof(call), nullptr, 0);
     }
 }
