diff --git a/runtime/check_jni.cc b/runtime/check_jni.cc
index 54f3143..3b1bda4 100644
--- a/runtime/check_jni.cc
+++ b/runtime/check_jni.cc
@@ -335,7 +335,7 @@
       return;
     }
     mirror::Class* c = soa_.Decode<mirror::Class*>(java_class);
-    if (!c->IsAssignableFrom(m->GetDeclaringClass())) {
+    if (!m->GetDeclaringClass()->IsAssignableFrom(c)) {
       JniAbortF(function_name_, "can't call static %s on class %s",
                 PrettyMethod(m).c_str(), PrettyClass(c).c_str());
     }
diff --git a/test/JniTest/JniTest.java b/test/JniTest/JniTest.java
index 431056a..7014ef9 100644
--- a/test/JniTest/JniTest.java
+++ b/test/JniTest/JniTest.java
@@ -18,7 +18,28 @@
     public static void main(String[] args) {
         System.loadLibrary("arttest");
         testFindClassOnAttachedNativeThread();
+        testCallStaticVoidMethodOnSubClass();
     }
 
     private static native void testFindClassOnAttachedNativeThread();
+
+    private static void testCallStaticVoidMethodOnSubClass() {
+        testCallStaticVoidMethodOnSubClassNative();
+        if (!testCallStaticVoidMethodOnSubClass_SuperClass.executed) {
+            throw new AssertionError();
+        }
+    }
+
+    private static native void testCallStaticVoidMethodOnSubClassNative();
+
+    private static class testCallStaticVoidMethodOnSubClass_SuperClass {
+        private static boolean executed = false;
+        private static void execute() {
+            executed = true;
+        }
+    }
+
+    private static class testCallStaticVoidMethodOnSubClass_SubClass
+        extends testCallStaticVoidMethodOnSubClass_SuperClass {
+    }
 }
diff --git a/test/JniTest/jni_test.cc b/test/JniTest/jni_test.cc
index ed69d39..72a3309 100644
--- a/test/JniTest/jni_test.cc
+++ b/test/JniTest/jni_test.cc
@@ -54,6 +54,7 @@
   return NULL;
 }
 
+// http://b/10994325
 extern "C" JNIEXPORT void JNICALL Java_JniTest_testFindClassOnAttachedNativeThread(JNIEnv*,
                                                                                    jclass) {
   pthread_t pthread;
@@ -65,3 +66,18 @@
   int pthread_join_result = pthread_join(pthread, NULL);
   assert(pthread_join_result == 0);
 }
+
+// http://b/11243757
+extern "C" JNIEXPORT void JNICALL Java_JniTest_testCallStaticVoidMethodOnSubClassNative(JNIEnv* env,
+                                                                                        jclass) {
+  jclass super_class = env->FindClass("JniTest$testCallStaticVoidMethodOnSubClass_SuperClass");
+  assert(super_class != NULL);
+
+  jmethodID execute = env->GetStaticMethodID(super_class, "execute", "()V");
+  assert(execute != NULL);
+
+  jclass sub_class = env->FindClass("JniTest$testCallStaticVoidMethodOnSubClass_SubClass");
+  assert(sub_class != NULL);
+
+  env->CallStaticVoidMethod(sub_class, execute);
+}
