[IB] mthca: Round up number of slots in HCA context memory table
authorMichael S. Tsirkin <mst@mellanox.co.il>
Tue, 27 Sep 2005 04:12:26 +0000 (21:12 -0700)
committerRoland Dreier <rolandd@cisco.com>
Tue, 27 Sep 2005 04:12:26 +0000 (21:12 -0700)
When allocating a table for mem-free HCA context, don't assume that
obj_size * nobj is an even multiple of MTHCA_TABLE_CHUNK_SIZE.  In
particular, make sure we allocate at least one slot even if the table
is smaller than MTHCA_TABLE_CHUNK_SIZE.

Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/mthca/mthca_memfree.c

index d0c41fe046f077c835fcca5fe0bbab3f4ae6e86d..7bd7a4bec7b433f2e533602681a75d7e06553940 100644 (file)
@@ -290,7 +290,7 @@ struct mthca_icm_table *mthca_alloc_icm_table(struct mthca_dev *dev,
        int i;
        u8 status;
 
-       num_icm = obj_size * nobj / MTHCA_TABLE_CHUNK_SIZE;
+       num_icm = (obj_size * nobj + MTHCA_TABLE_CHUNK_SIZE - 1) / MTHCA_TABLE_CHUNK_SIZE;
 
        table = kmalloc(sizeof *table + num_icm * sizeof *table->icm, GFP_KERNEL);
        if (!table)