aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorserue@us.ibm.com <serue@us.ibm.com>2007-12-05 13:55:36 -0800
committerDave Airlie <airlied@redhat.com>2008-02-05 14:33:32 +1000
commit62f29babbc60ab572d3cecda981931d3a66123d6 (patch)
tree54d041eaaf9fe1db8bb16a0206c53e53d2b7d44b
parent1fa4db7d308da04f6644c5cb8eed244c200d4ed5 (diff)
downloadkernel_samsung_smdk4412-62f29babbc60ab572d3cecda981931d3a66123d6.zip
kernel_samsung_smdk4412-62f29babbc60ab572d3cecda981931d3a66123d6.tar.gz
kernel_samsung_smdk4412-62f29babbc60ab572d3cecda981931d3a66123d6.tar.bz2
agp: remove uid comparison as security check
In the face of containers and user namespaces, a uid==0 check for security is not safe. Switch to a capability check. I'm not sure I picked the right capability, but this being AGP CAP_SYS_RAWIO seemed to make sense. Signed-off-by: Serge Hallyn <serue@us.ibm.com> Signed-off-by: Dave Airlie <airlied@linux.ie>
-rw-r--r--drivers/char/agp/frontend.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c
index 9bd5a95..55d7a82 100644
--- a/drivers/char/agp/frontend.c
+++ b/drivers/char/agp/frontend.c
@@ -689,7 +689,7 @@ static int agp_open(struct inode *inode, struct file *file)
set_bit(AGP_FF_ALLOW_CLIENT, &priv->access_flags);
priv->my_pid = current->pid;
- if ((current->uid == 0) || (current->suid == 0)) {
+ if (capable(CAP_SYS_RAWIO)) {
/* Root priv, can be controller */
set_bit(AGP_FF_ALLOW_CONTROLLER, &priv->access_flags);
}