Fixes bug in sys_symlink
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 6 Mar 2013 21:09:46 +0000 (13:09 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 6 Mar 2013 21:09:46 +0000 (13:09 -0800)
commit98e184a9842c997d4be7e9d6e2f8c2a92c4f27d6
tree22b009f3ef1c5fcb0477c4d4738394831b6cf6ed
parent32ed30c50314b5b95088af9cb6de996f84b98535
Fixes bug in sys_symlink

Clearly we should have been using the trusted / memduped strings,
instead of the user strings.  What's more interesting is that this used
to work, but recently page faults.

For those curious, the actual page fault happened a few bytes into
new_path, during link_path_walk().  Checking out 'showmappings' (look at
the page table), the page is mapped, but it is only mapped read-only.
Since the kernel honors read only flags in PTEs (due to the CR0 flag),
the kernel page faulted on an illegal write access on a read-only page.

Now as to why this didn't happen 2.5 years ago, either we've done
something since then to honor read-only mappings of binaries, the
compiler decided to make it read-only, or qemu/kvm wasn't previously
honoring the CR0 flag.
kern/src/syscall.c