Skip to contentSkip to conversation

Patch "IB/rxe: Fix mem_check_range integer overflow" has been added to the 4.9-stable tree

PATCH [email protected] 1 participant 1 message Feb 12, 2017

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

IB/rxe: Fix mem_check_range integer overflow

to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
ib-rxe-fix-mem_check_range-integer-overflow.patch
and it can be found in the queue-4.9 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 647bf3d8a8e5777319da92af672289b2a6c4dc66 Mon Sep 17 00:00:00 2001

From: Eyal Itkin <[email protected]>
Date: Tue, 7 Feb 2017 16:45:19 +0300
Subject: IB/rxe: Fix mem_check_range integer overflow

From: Eyal Itkin <[email protected]>

commit 647bf3d8a8e5777319da92af672289b2a6c4dc66 upstream.

Update the range check to avoid integer-overflow in edge case. Resolves CVE 2016-8636.

---
 drivers/infiniband/sw/rxe/rxe_mr.c |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
drivers/infiniband/sw/rxe/rxe_mr.c +5 -3
@@ -59,9 +59,11 @@ int mem_check_range(struct rxe_mem *mem,
 
 	case RXE_MEM_TYPE_MR:
 	case RXE_MEM_TYPE_FMR:
-		return ((iova < mem->iova) ||
-			((iova + length) > (mem->iova + mem->length))) ?
-			-EFAULT : 0;
+		if (iova < mem->iova ||
+		    length > mem->length ||
+		    iova > mem->iova + mem->length - length)
+			return -EFAULT;
+		return 0;
 
 	default:
 		return -EFAULT;

Patches currently in stable-queue which might be from [email protected] are

queue-4.9/ib-rxe-fix-resid-update.patch queue-4.9/ib-rxe-fix-mem_check_range-integer-overflow.patch