Harden symlink accesses.

Based conceptually on grsecurity's GRKERNSEC_SYMLINKOWN feature, we hook into
following the symlinks.  Unlike grsecurity's solution, the method we use is
uglier due to the requirements of being a loadable module.

We hook the security_inode_follow_link() function and then follow the symlink.
This means we resolve the symlink twice per VFS operation, but the performance
hit does not seem to be too bad.

Signed-off-by: William Pitcock <nenolod@dereferenced.org>
symlink-harden: avoid null-dereference when copying struct nameidata
symlink-harden: return link resolver error instead of -EACCES (as result of undefined behaviour) when the symlink cannot be resolved
symlink-harden: add support for 2.6.18 kernels
symlink-harden: use path_get() on the src path objects when cloning the nameidata struct
symlink-harden: prevent recursion
harden-symlink: handle LAST_BIND case
harden-symlink: be more paranoid about copying nameidata
symlink-harden: be more paranoid about copying nameidata structure
symlink-harden: remove some errant debugging code which was working against our interests
symlink-harden: work in progress on mdadm fix
symlink-harden: put some things back
symlink-harden: be paranoid again about path_get()/path_put() calls.
symlink-harden: do a more thorough copy of nameidata for correctness
tpe: fix vector overflow defect in setup code
tpe: fix vector overflow defect in setup code
harden-hardlinks: port over hardlink hardening feature from Yama
document harden_hardlinks feature
restrict-setuid: new sysctl for restricting all use of setuid() from non-root

This allows tasks which require root privilege to continue working, but disallows
the ability of gaining a uid=0 shell by using setuid() in a child process.
Merge pull request #5 from kaniini/master

Optionally harden symlink accesses.