summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSebastien Dugue <sebastien.dugue@bull.net>2010-05-20 15:58:22 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2010-07-05 11:15:53 -0700
commite90c870c15924880cb9b810413d2605134d4e8c6 (patch)
tree56681bf18f3f322ed272cd16be8f918e7ab98f6d /drivers
parente50e2441a3bde4de4dfa4701c1c2b570187b9401 (diff)
downloadkernel-crypto-e90c870c15924880cb9b810413d2605134d4e8c6.tar.gz
kernel-crypto-e90c870c15924880cb9b810413d2605134d4e8c6.tar.xz
kernel-crypto-e90c870c15924880cb9b810413d2605134d4e8c6.zip
mlx4_core: Fix possible chunk sg list overflow in mlx4_alloc_icm()
commit c0dc72bad9cf21071f5e4005de46f7c8b67a138a upstream. If the number of sg entries in the ICM chunk reaches MLX4_ICM_CHUNK_LEN, we must set chunk to NULL even for coherent mappings so that the next time through the loop will allocate another chunk. Otherwise we'll overflow the sg list the next time through the loop. This will lead to memory corruption if this case is hit. mthca does not have this bug. Signed-off-by: Sebastien Dugue <sebastien.dugue@bull.net> Signed-off-by: Roland Dreier <rolandd@cisco.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/mlx4/icm.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/mlx4/icm.c b/drivers/net/mlx4/icm.c
index 04b382fcb8c..83eef8e35b7 100644
--- a/drivers/net/mlx4/icm.c
+++ b/drivers/net/mlx4/icm.c
@@ -174,9 +174,10 @@ struct mlx4_icm *mlx4_alloc_icm(struct mlx4_dev *dev, int npages,
if (chunk->nsg <= 0)
goto fail;
+ }
+ if (chunk->npages == MLX4_ICM_CHUNK_LEN)
chunk = NULL;
- }
npages -= 1 << cur_order;
} else {