From d85f741ca7479577ed8305ff5d2e979fe49ee1d5 Mon Sep 17 00:00:00 2001 From: Elena Reshetova Date: Thu, 4 Jan 2018 02:07:33 -0800 Subject: [PATCH] ipv6: prevent speculative execution Since the offset value in function raw6_getfrag() seems to be controllable by userspace and later on conditionally (upon bound check) used in the following memcpy, insert an observable speculation barrier before its usage. This should prevent observable speculation on that branch and avoid kernel memory leak. Signed-off-by: Elena Reshetova Orabug: 27340445 CVE: CVE-2017-5753 Signed-off-by: Chuck Anderson Reviewed-by: John Haxby Signed-off-by: Kirtikar Kashyap --- net/ipv6/raw.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index 3ed214c1745c..fa1d16ebd40f 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c @@ -724,6 +724,7 @@ static int raw6_getfrag(void *from, char *to, int offset, int len, int odd, if (offset < rfv->hlen) { int copy = min(rfv->hlen - offset, len); + osb(); if (skb->ip_summed == CHECKSUM_PARTIAL) memcpy(to, rfv->c + offset, copy); else -- 2.50.1