Hi!

> > Well, I know that current code works. It was produced by C compiler,
> > btw. Now, new code works for you, but it was not in kernel for 4
> > releases, and... this code is pretty subtle.
> 
> Now, I'm confused. :-)  It's roughly this:
> 
> struct pbe *pbe = pagedir_nosave, *end;
> unsigned n = nr_copy_pages;
> if (n) {
>       end = pbe + n;
>       do {
>               memcpy((void *)pbe->orig_address, (void *)pbe->address, 
> PAGE_SIZE);
>               pbe++;
>       } while (pbe < end);
> }
> 
> where memcpy() is of course a hand-written inline that includes the cr3 
> manipulation,
> and pbe, end, n are registers.

For example it may not use any variable in memory, and may not use
stack, as memory changes under its hands. Plus assembly is always
subtle ;-).

                                                                Pavel
-- 
People were complaining that M$ turns users into beta-testers...
...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl!
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to