mlx4_core: Fix integer overflows so 8TBs of memory registration works
authorYishai Hadas <yishaih@mellanox.com>
Wed, 29 Aug 2012 15:14:35 +0000 (15:14 +0000)
committerRoland Dreier <roland@purestorage.com>
Fri, 14 Sep 2012 00:52:02 +0000 (17:52 -0700)
commitdd03e73481564fe57655d37154f84a0af00cb449
treebfccd072c4492919bd29c4c2cbf85847a1c21a12
parentfea7a08acb13524b47711625eebea40a0ede69a0
mlx4_core: Fix integer overflows so 8TBs of memory registration works

This patch adds on the fixes done in commits 89dd86db78e0 ("mlx4_core:
Allow large mlx4_buddy bitmaps") and 3de819e6b642 ("mlx4_core: Fix
integer overflow issues around MTT table") so that memory registration
of up to 8TB (log_num_mtt=31) finally works.

It fixes integer overflows in a few mlx4_table_yyy routines in icm.c
by using a u64 intermediate variable, and int/uint issues that caused
table indexes to become nagive by setting some variables to be u32
instead of int.  These problems cause crashes when a user attempted to
register > 512GB of RAM.

Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/net/ethernet/mellanox/mlx4/icm.c
drivers/net/ethernet/mellanox/mlx4/icm.h