On Thu, Feb 16, 2012 at 8:01 PM, Daniel Vetter <daniel.vetter at ffwll.ch> wrote: > @@ -416,17 +417,20 @@ static inline int fault_in_pages_writeable(char __user > *uaddr, int size) > ? ? ? ? * Writing zeroes into userspace here is OK, because we know that if > ? ? ? ? * the zero gets there, we'll be overwriting it. > ? ? ? ? */ > - ? ? ? ret = __put_user(0, uaddr); > + ? ? ? while (uaddr <= end) { > + ? ? ? ? ? ? ? ret = __put_user(0, uaddr); > + ? ? ? ? ? ? ? if (ret != 0) > + ? ? ? ? ? ? ? ? ? ? ? return ret; > + ? ? ? ? ? ? ? uaddr += PAGE_SIZE; > + ? ? ? }
What if uaddr & ~PAGE_MASK == PAGE_SIZE -3 && end & ~PAGE_MASK == 2