Index: mlx4/kernel/bus/ib/mr.c
===================================================================
--- mlx4/kernel/bus/ib/mr.c	(revision 1126)
+++ mlx4/kernel/bus/ib/mr.c	(working copy)
@@ -198,7 +198,7 @@
 	if (err)
 		goto err_free;
 
-	err = mlx4_mr_enable(to_mdev(pd->device)->dev, &fmr->mfmr.mr);
+	err = mlx4_fmr_enable(to_mdev(pd->device)->dev, &fmr->mfmr.mr);
 	if (err)
 		goto err_mr;
 
Index: mlx4/kernel/bus/net/mr.c
===================================================================
--- mlx4/kernel/bus/net/mr.c	(revision 1126)
+++ mlx4/kernel/bus/net/mr.c	(working copy)
@@ -576,14 +576,6 @@
 		err = -ENOMEM;
 		goto err_free;
 	}
-
-	fmr->mpt = mlx4_table_find(&priv->mr_table.dmpt_table,
-				    key_to_hw_index(fmr->mr.key), NULL);
-	if (!fmr->mpt) {
-		err = -ENOMEM;
-		goto err_free;
-	}
-
 	return 0;
 
 err_free:
@@ -594,7 +586,19 @@
 
 int mlx4_fmr_enable(struct mlx4_dev *dev, struct mlx4_fmr *fmr)
 {
-	return mlx4_mr_enable(dev, &fmr->mr);
+	struct mlx4_priv *priv = mlx4_priv(dev);
+	int err;
+
+	err = mlx4_mr_enable(dev, &fmr->mr);
+	if (err)
+		return err;
+
+	fmr->mpt = mlx4_table_find(&priv->mr_table.dmpt_table,
+				    key_to_hw_index(fmr->mr.key), NULL);
+	if (!fmr->mpt)
+		return -ENOMEM;
+
+	return 0;
 }
 EXPORT_SYMBOL_GPL(mlx4_fmr_enable);
 
