if (__compiletime_lessthan(p_size, size))
                __read_overflow();
        if (p_size < size)
-               fortify_panic(FORTIFY_FUNC_kmemdup, FORTIFY_READ, p_size, size, NULL);
+               fortify_panic(FORTIFY_FUNC_kmemdup, FORTIFY_READ, p_size, size,
+                             __real_kmemdup(p, 0, gfp));
        return __real_kmemdup(p, size, gfp);
 }
 
 
 
        /* Out of bounds by 1 byte. */
        copy = kmemdup(src, len + 1, GFP_KERNEL);
-       KUNIT_EXPECT_NULL(test, copy);
+       KUNIT_EXPECT_PTR_EQ(test, copy, ZERO_SIZE_PTR);
        KUNIT_EXPECT_EQ(test, fortify_read_overflows, 1);
        kfree(copy);
 
        /* Way out of bounds. */
        copy = kmemdup(src, len * 2, GFP_KERNEL);
-       KUNIT_EXPECT_NULL(test, copy);
+       KUNIT_EXPECT_PTR_EQ(test, copy, ZERO_SIZE_PTR);
        KUNIT_EXPECT_EQ(test, fortify_read_overflows, 2);
        kfree(copy);
 
        /* Starting offset causing out of bounds. */
        copy = kmemdup(src + 1, len, GFP_KERNEL);
-       KUNIT_EXPECT_NULL(test, copy);
+       KUNIT_EXPECT_PTR_EQ(test, copy, ZERO_SIZE_PTR);
        KUNIT_EXPECT_EQ(test, fortify_read_overflows, 3);
        kfree(copy);
 }