Thread (35 messages) 35 messages, 7 authors, 2016-07-15

Re: [PATCH v2 02/11] mm: Hardened usercopy

From: Balbir Singh <bsingharora@gmail.com>
Date: 2016-07-15 01:42:17
Also in: linux-arm-kernel, linux-mm, linuxppc-dev, lkml, sparclinux

On Thu, Jul 14, 2016 at 09:04:18PM -0400, Rik van Riel wrote:
On Fri, 2016-07-15 at 09:20 +1000, Balbir Singh wrote:
quoted
quoted
==
+		   ((unsigned long)end & (unsigned
long)PAGE_MASK)))
+		return NULL;
+
+	/* Allow if start and end are inside the same compound
page. */
+	endpage = virt_to_head_page(end);
+	if (likely(endpage == page))
+		return NULL;
+
+	/* Allow special areas, device memory, and sometimes
kernel data. */
+	if (PageReserved(page) && PageReserved(endpage))
+		return NULL;
If we came here, it's likely that endpage > page, do we need to check
that only the first and last pages are reserved? What about the ones
in
the middle?
I think this will be so rare, we can get away with just
checking the beginning and the end.
But do we want to leave a hole where an aware user space
can try a longer copy_* to avoid this check? If it is unlikely
should we just bite the bullet and do the check for the entire
range?

Balbir Singh. 


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help