Author: arekm                        Date: Wed Jan 19 17:59:23 2011 GMT
Module: packages                      Tag: GRSECURITY_RAW
---- Log message:
http://grsecurity.net/~spender/grsecurity-2.2.1-2.6.37-201101172105.patch

---- Files affected:
packages/kernel:
   kernel-grsec_full.patch (1.3.2.53 -> 1.3.2.54) 

---- Diffs:

================================================================
Index: packages/kernel/kernel-grsec_full.patch
diff -u packages/kernel/kernel-grsec_full.patch:1.3.2.53 
packages/kernel/kernel-grsec_full.patch:1.3.2.54
--- packages/kernel/kernel-grsec_full.patch:1.3.2.53    Mon Jan 17 09:36:10 2011
+++ packages/kernel/kernel-grsec_full.patch     Wed Jan 19 18:59:06 2011
@@ -27523,6 +27523,19 @@
  static struct kgdb_io kgdboc_io_ops = {
        .name                   = "kgdboc",
        .read_char              = kgdboc_get_char,
+diff -urNp linux-2.6.37/drivers/staging/autofs/root.c 
linux-2.6.37/drivers/staging/autofs/root.c
+--- linux-2.6.37/drivers/staging/autofs/root.c 2011-01-04 19:50:19.000000000 
-0500
++++ linux-2.6.37/drivers/staging/autofs/root.c 2011-01-17 21:04:34.000000000 
-0500
+@@ -308,7 +308,8 @@ static int autofs_root_symlink(struct in
+       set_bit(n,sbi->symlink_bitmap);
+       sl = &sbi->symlink[n];
+       sl->len = strlen(symname);
+-      sl->data = kmalloc(slsize = sl->len+1, GFP_KERNEL);
++      slsize = sl->len + 1;
++      sl->data = kmalloc(slsize, GFP_KERNEL);
+       if (!sl->data) {
+               clear_bit(n,sbi->symlink_bitmap);
+               unlock_kernel();
 diff -urNp linux-2.6.37/drivers/staging/bcm/Bcmchar.c 
linux-2.6.37/drivers/staging/bcm/Bcmchar.c
 --- linux-2.6.37/drivers/staging/bcm/Bcmchar.c 2011-01-04 19:50:19.000000000 
-0500
 +++ linux-2.6.37/drivers/staging/bcm/Bcmchar.c 2011-01-17 02:41:01.000000000 
-0500
@@ -31937,7 +31950,7 @@
        lock_flocks();
 diff -urNp linux-2.6.37/fs/namei.c linux-2.6.37/fs/namei.c
 --- linux-2.6.37/fs/namei.c    2011-01-04 19:50:19.000000000 -0500
-+++ linux-2.6.37/fs/namei.c    2011-01-17 02:46:52.000000000 -0500
++++ linux-2.6.37/fs/namei.c    2011-01-17 11:57:48.000000000 -0500
 @@ -221,14 +221,6 @@ int generic_permission(struct inode *ino
                return ret;
  
@@ -32155,7 +32168,19 @@
        mutex_unlock(&dir->d_inode->i_mutex);
        audit_inode(pathname, path->dentry);
  
-@@ -2013,6 +2064,17 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
+@@ -1838,6 +1889,11 @@ reval:
+               error = security_inode_follow_link(path.dentry, &nd);
+               if (error)
+                       goto exit_dput;
++              if (gr_handle_follow_link(path.dentry->d_parent->d_inode,
++                                        path.dentry->d_inode, path.dentry, 
nd.path.mnt)) {
++                      error = -EACCES;
++                      goto exit_dput;
++              }
+               error = __do_follow_link(&path, &nd, &cookie);
+               if (unlikely(error)) {
+                       /* nd.path had been dropped */
+@@ -2013,6 +2069,17 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
        error = may_mknod(mode);
        if (error)
                goto out_dput;
@@ -32173,7 +32198,7 @@
        error = mnt_want_write(nd.path.mnt);
        if (error)
                goto out_dput;
-@@ -2033,6 +2095,9 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
+@@ -2033,6 +2100,9 @@ SYSCALL_DEFINE4(mknodat, int, dfd, const
        }
  out_drop_write:
        mnt_drop_write(nd.path.mnt);
@@ -32183,7 +32208,7 @@
  out_dput:
        dput(dentry);
  out_unlock:
-@@ -2085,6 +2150,11 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
+@@ -2085,6 +2155,11 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
        if (IS_ERR(dentry))
                goto out_unlock;
  
@@ -32195,7 +32220,7 @@
        if (!IS_POSIXACL(nd.path.dentry->d_inode))
                mode &= ~current_umask();
        error = mnt_want_write(nd.path.mnt);
-@@ -2096,6 +2166,10 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
+@@ -2096,6 +2171,10 @@ SYSCALL_DEFINE3(mkdirat, int, dfd, const
        error = vfs_mkdir(nd.path.dentry->d_inode, dentry, mode);
  out_drop_write:
        mnt_drop_write(nd.path.mnt);
@@ -32206,7 +32231,7 @@
  out_dput:
        dput(dentry);
  out_unlock:
-@@ -2177,6 +2251,8 @@ static long do_rmdir(int dfd, const char
+@@ -2177,6 +2256,8 @@ static long do_rmdir(int dfd, const char
        char * name;
        struct dentry *dentry;
        struct nameidata nd;
@@ -32215,7 +32240,7 @@
  
        error = user_path_parent(dfd, pathname, &nd, &name);
        if (error)
-@@ -2201,6 +2277,19 @@ static long do_rmdir(int dfd, const char
+@@ -2201,6 +2282,19 @@ static long do_rmdir(int dfd, const char
        error = PTR_ERR(dentry);
        if (IS_ERR(dentry))
                goto exit2;
@@ -32235,7 +32260,7 @@
        error = mnt_want_write(nd.path.mnt);
        if (error)
                goto exit3;
-@@ -2208,6 +2297,8 @@ static long do_rmdir(int dfd, const char
+@@ -2208,6 +2302,8 @@ static long do_rmdir(int dfd, const char
        if (error)
                goto exit4;
        error = vfs_rmdir(nd.path.dentry->d_inode, dentry);
@@ -32244,7 +32269,7 @@
  exit4:
        mnt_drop_write(nd.path.mnt);
  exit3:
-@@ -2270,6 +2361,8 @@ static long do_unlinkat(int dfd, const c
+@@ -2270,6 +2366,8 @@ static long do_unlinkat(int dfd, const c
        struct dentry *dentry;
        struct nameidata nd;
        struct inode *inode = NULL;
@@ -32253,7 +32278,7 @@
  
        error = user_path_parent(dfd, pathname, &nd, &name);
        if (error)
-@@ -2289,8 +2382,17 @@ static long do_unlinkat(int dfd, const c
+@@ -2289,8 +2387,17 @@ static long do_unlinkat(int dfd, const c
                if (nd.last.name[nd.last.len])
                        goto slashes;
                inode = dentry->d_inode;
@@ -32272,7 +32297,7 @@
                error = mnt_want_write(nd.path.mnt);
                if (error)
                        goto exit2;
-@@ -2298,6 +2400,8 @@ static long do_unlinkat(int dfd, const c
+@@ -2298,6 +2405,8 @@ static long do_unlinkat(int dfd, const c
                if (error)
                        goto exit3;
                error = vfs_unlink(nd.path.dentry->d_inode, dentry);
@@ -32281,7 +32306,7 @@
  exit3:
                mnt_drop_write(nd.path.mnt);
        exit2:
-@@ -2375,6 +2479,11 @@ SYSCALL_DEFINE3(symlinkat, const char __
+@@ -2375,6 +2484,11 @@ SYSCALL_DEFINE3(symlinkat, const char __
        if (IS_ERR(dentry))
                goto out_unlock;
  
@@ -32293,7 +32318,7 @@
        error = mnt_want_write(nd.path.mnt);
        if (error)
                goto out_dput;
-@@ -2382,6 +2491,8 @@ SYSCALL_DEFINE3(symlinkat, const char __
+@@ -2382,6 +2496,8 @@ SYSCALL_DEFINE3(symlinkat, const char __
        if (error)
                goto out_drop_write;
        error = vfs_symlink(nd.path.dentry->d_inode, dentry, from);
@@ -32302,7 +32327,7 @@
  out_drop_write:
        mnt_drop_write(nd.path.mnt);
  out_dput:
-@@ -2474,6 +2585,20 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
+@@ -2474,6 +2590,20 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
        error = PTR_ERR(new_dentry);
        if (IS_ERR(new_dentry))
                goto out_unlock;
@@ -32323,7 +32348,7 @@
        error = mnt_want_write(nd.path.mnt);
        if (error)
                goto out_dput;
-@@ -2481,6 +2606,8 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
+@@ -2481,6 +2611,8 @@ SYSCALL_DEFINE5(linkat, int, olddfd, con
        if (error)
                goto out_drop_write;
        error = vfs_link(old_path.dentry, nd.path.dentry->d_inode, new_dentry);
@@ -32332,7 +32357,7 @@
  out_drop_write:
        mnt_drop_write(nd.path.mnt);
  out_dput:
-@@ -2714,6 +2841,12 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
+@@ -2714,6 +2846,12 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
        if (new_dentry == trap)
                goto exit5;
  
@@ -32345,7 +32370,7 @@
        error = mnt_want_write(oldnd.path.mnt);
        if (error)
                goto exit5;
-@@ -2723,6 +2856,9 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
+@@ -2723,6 +2861,9 @@ SYSCALL_DEFINE4(renameat, int, olddfd, c
                goto exit6;
        error = vfs_rename(old_dir->d_inode, old_dentry,
                                   new_dir->d_inode, new_dentry);
@@ -34772,7 +34797,7 @@
 +}
 diff -urNp linux-2.6.37/grsecurity/gracl.c linux-2.6.37/grsecurity/gracl.c
 --- linux-2.6.37/grsecurity/gracl.c    1969-12-31 19:00:00.000000000 -0500
-+++ linux-2.6.37/grsecurity/gracl.c    2011-01-17 02:41:02.000000000 -0500
++++ linux-2.6.37/grsecurity/gracl.c    2011-01-17 20:20:28.000000000 -0500
 @@ -0,0 +1,3991 @@
 +#include <linux/kernel.h>
 +#include <linux/module.h>
@@ -37815,7 +37840,7 @@
 +                      gr_log_str(GR_DONT_AUDIT_GOOD, GR_RELOADI_ACL_MSG, 
GR_VERSION);
 +                      error = -EAGAIN;
 +              } else if (!(chkpw(gr_usermode, gr_system_salt, 
gr_system_sum))) {
-+                      lock_kernel();
++                      preempt_disable();
 +
 +                      pax_open_kernel();
 +                      gr_status &= ~GR_READY;
@@ -37823,10 +37848,10 @@
 +
 +                      free_variables();
 +                      if (!(error2 = gracl_init(gr_usermode))) {
-+                              unlock_kernel();
++                              preempt_enable();
 +                              gr_log_str(GR_DONT_AUDIT_GOOD, 
GR_RELOAD_ACL_MSG, GR_VERSION);
 +                      } else {
-+                              unlock_kernel();
++                              preempt_enable();
 +                              error = error2;
 +                              gr_log_str(GR_DONT_AUDIT, GR_RELOADF_ACL_MSG, 
GR_VERSION);
 +                      }
================================================================

---- CVS-web:
    
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-grsec_full.patch?r1=1.3.2.53&r2=1.3.2.54&f=u

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to