Whamcloud - gitweb
LU-7650 o2iblnd: handle mixed page size configurations.
[fs/lustre-release.git] / lnet / klnds / o2iblnd / o2iblnd.c
index 6764421..aeecb30 100644 (file)
@@ -135,6 +135,7 @@ static int
 kiblnd_unpack_rd(kib_msg_t *msg, int flip)
 {
         kib_rdma_desc_t   *rd;
+       int msg_size;
         int                nob;
         int                n;
         int                i;
@@ -151,14 +152,7 @@ kiblnd_unpack_rd(kib_msg_t *msg, int flip)
                 __swab32s(&rd->rd_nfrags);
         }
 
-        n = rd->rd_nfrags;
-
-        if (n <= 0 || n > IBLND_MAX_RDMA_FRAGS) {
-                CERROR("Bad nfrags: %d, should be 0 < n <= %d\n",
-                       n, IBLND_MAX_RDMA_FRAGS);
-                return 1;
-        }
-
+       n = rd->rd_nfrags;
         nob = offsetof (kib_msg_t, ibm_u) +
               kiblnd_rd_msg_size(rd, msg->ibm_type, n);
 
@@ -168,6 +162,13 @@ kiblnd_unpack_rd(kib_msg_t *msg, int flip)
                 return 1;
         }
 
+       msg_size = kiblnd_rd_size(rd);
+       if (msg_size <= 0 || msg_size > LNET_MAX_PAYLOAD) {
+               CERROR("Bad msg_size: %d, should be 0 < n <= %d\n",
+                      msg_size, LNET_MAX_PAYLOAD);
+               return 1;
+       }
+
         if (!flip)
                 return 0;