Blob Blame History Raw
From: Ariel Levkovich <lariel@mellanox.com>
Date: Thu, 26 Apr 2018 15:42:54 +0300
Subject: IB/uverbs: Prevent reregistration of DM_MR to regular MR
Patch-mainline: v4.17-rc4
Git-commit: 5ccbf63f87a39c279729670d2e31166844a335c6
References: bsc#1103992 FATE#326009

This patch adds a check in the ib_uverbs_rereg_mr flow to make
sure there's no attempt to rereg a device memory MR to regular MR.
In such case the command will fail with -EINVAL status.

fixes: be934cca9e98 ("IB/uverbs: Add device memory registration ioctl support")
Signed-off-by: Ariel Levkovich <lariel@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
---
 drivers/infiniband/core/uverbs_cmd.c |    5 +++++
 1 file changed, 5 insertions(+)

--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -765,6 +765,11 @@ ssize_t ib_uverbs_rereg_mr(struct ib_uve
 
 	mr = uobj->object;
 
+	if (mr->dm) {
+		ret = -EINVAL;
+		goto put_uobjs;
+	}
+
 	if (cmd.flags & IB_MR_REREG_ACCESS) {
 		ret = ib_check_mr_access(cmd.access_flags);
 		if (ret)