diff --git a/lnet/include/linux/kp30.h b/lnet/include/linux/kp30.h
index 815375c8f5d0de9f9fab4a824da3b583e885a875..63eaee76295cc109af679e8bf9d4d33bf537d1a2 100644
--- a/lnet/include/linux/kp30.h
+++ b/lnet/include/linux/kp30.h
@@ -282,7 +282,9 @@ do {                                                                          \
 
 #define PORTAL_ALLOC_GFP(ptr, size, mask)                                 \
 do {                                                                      \
-        LASSERT (!in_interrupt());                                        \
+        LASSERT (!in_interrupt() ||                                       \
+                 (size <= PORTAL_VMALLOC_SIZE &&                          \
+                  (mask & __GFP_WAIT) == 0));                             \
         if ((size) > PORTAL_VMALLOC_SIZE)                                 \
                 (ptr) = vmalloc(size);                                    \
         else                                                              \
diff --git a/lustre/portals/include/linux/kp30.h b/lustre/portals/include/linux/kp30.h
index 815375c8f5d0de9f9fab4a824da3b583e885a875..63eaee76295cc109af679e8bf9d4d33bf537d1a2 100644
--- a/lustre/portals/include/linux/kp30.h
+++ b/lustre/portals/include/linux/kp30.h
@@ -282,7 +282,9 @@ do {                                                                          \
 
 #define PORTAL_ALLOC_GFP(ptr, size, mask)                                 \
 do {                                                                      \
-        LASSERT (!in_interrupt());                                        \
+        LASSERT (!in_interrupt() ||                                       \
+                 (size <= PORTAL_VMALLOC_SIZE &&                          \
+                  (mask & __GFP_WAIT) == 0));                             \
         if ((size) > PORTAL_VMALLOC_SIZE)                                 \
                 (ptr) = vmalloc(size);                                    \
         else                                                              \