On 2015-12-10 at 00:53 ron minnich <[email protected]> wrote:
> yeah I talked to barrett about this one and it seems D is not set.
> Would have been nice!
yep, tried that one. =(
i figure it's something crazy like that though.
i tried taking the code out of its current location and do something
similar, but couldn't trigger it:
e.g.
void xme(void)
{
void *uaddr;
uintptr_t frame[2];
uintptr_t test[2];
int err;
assert(current);
uaddr = mmap(current, 0, PGSIZE, PROT_READ | PROT_WRITE, MAP_ANON, -1, 0);
assert(uaddr);
frame[0] = 0x0102030405060708;
frame[1] = 0xa0b0c0d0e0f01122;
memcpy(uaddr, frame, 2 * sizeof(uintptr_t));
memcpy(test, uaddr, 2 * sizeof(uintptr_t));
assert(memcmp(frame, test, 2 * sizeof(uintptr_t)) == 0);
memset(test, 0, 2 * sizeof(uintptr_t));
asm volatile("nop;nop;nop;");
err = copy_from_user(test, uaddr, 2 * sizeof(uintptr_t));
asm volatile("nop;nop;nop;");
assert(!err);
assert(memcmp(frame, test, 2 * sizeof(uintptr_t)) == 0);
}
and kfunc xme, or also run it from CTRL-Q (k/a/x/init.c). but those
didn't trip.
then i figured i'd try forgetting the uaddr, and just clobber some user
memory with the same uaddr as in the failing case
(0x00007f7fffbfef50). that didn't make a difference either. the
alignment on both src and dst is 0x10, so that seems fine too.
--
You received this message because you are subscribed to the Google Groups
"Akaros" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
For more options, visit https://groups.google.com/d/optout.