const char *name,
                          struct lock_class_key *key)
 {
-       BUG_ON(!fn);
-
        __init_waitqueue_head(&fence->wait, name, key);
        fence->fn = fn;
 #ifdef CONFIG_DRM_I915_SW_FENCE_CHECK_DAG
 
 do {                                                           \
        static struct lock_class_key __key;                     \
                                                                \
+       BUILD_BUG_ON((fn) == NULL);                             \
        __i915_sw_fence_init((fence), (fn), #fence, &__key);    \
 } while (0)
 #else
 #define i915_sw_fence_init(fence, fn)                          \
-       __i915_sw_fence_init((fence), (fn), NULL, NULL)
+do {                                                           \
+       BUILD_BUG_ON((fn) == NULL);                             \
+       __i915_sw_fence_init((fence), (fn), NULL, NULL);        \
+} while (0)
 #endif
 
 void i915_sw_fence_reinit(struct i915_sw_fence *fence);