[105/200] mlx4_core: Fix possible chunk sg list overflow in mlx4_alloc_icm()
diff mbox series

Message ID 20100701174255.294104422@clark.site
State New, archived
Headers show
  • stable review
Related show

Commit Message

Greg KH July 1, 2010, 5:43 p.m. UTC
2.6.34-stable review patch.  If anyone has any objections, please let me know.


From: Sebastien Dugue <sebastien.dugue@bull.net>

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>

 drivers/net/mlx4/icm.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

diff mbox series

--- a/drivers/net/mlx4/icm.c
+++ b/drivers/net/mlx4/icm.c
@@ -175,9 +175,10 @@  struct mlx4_icm *mlx4_alloc_icm(struct m
 				if (chunk->nsg <= 0)
 					goto fail;
+			}
+			if (chunk->npages == MLX4_ICM_CHUNK_LEN)
 				chunk = NULL;
-			}
 			npages -= 1 << cur_order;
 		} else {