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 \