SOURCES: util-vserver-trunk_fixes.patch (NEW) - few fixes from trunk versio...

hawk hawk at pld-linux.org
Fri May 23 09:03:05 CEST 2008


Author: hawk                         Date: Fri May 23 07:03:05 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- few fixes from trunk version of util-vserver, helps for
  "capset(): Invalid argument" on 2.6.25.x

---- Files affected:
SOURCES:
   util-vserver-trunk_fixes.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/util-vserver-trunk_fixes.patch
diff -u /dev/null SOURCES/util-vserver-trunk_fixes.patch:1.1
--- /dev/null	Fri May 23 09:03:05 2008
+++ SOURCES/util-vserver-trunk_fixes.patch	Fri May 23 09:03:00 2008
@@ -0,0 +1,211 @@
+diff -urN util-vserver-0.30.215/lib/syscall_netadd-netv2.hc util-vserver-trunk/lib/syscall_netadd-netv2.hc
+--- util-vserver-0.30.215/lib/syscall_netadd-netv2.hc	2008-03-17 09:59:48.000000000 +0100
++++ util-vserver-trunk/lib/syscall_netadd-netv2.hc	2008-05-22 23:51:10.000000000 +0200
+@@ -1,4 +1,4 @@
+-// $Id$    --*- c -*--
++// $Id$    --*- c -*--
+ 
+ // Copyright (C) 2007 Daniel Hokka Zakrisson
+ //  
+@@ -27,10 +27,15 @@
+     case VC_NXA_TYPE_IPV4: {
+       struct vcmd_net_addr_ipv4_v1	k_info;
+ 
+-      k_info.type        = info->vna_type & ~VC_NXA_TYPE_IPV4;
+-      k_info.flags       = info->vna_flags;
+-      k_info.ip.s_addr   = info->vna_v4_ip.s_addr;
+-      k_info.mask.s_addr = info->vna_v4_mask.s_addr;
++      k_info.type          = info->vna_type & ~VC_NXA_TYPE_IPV4;
++      k_info.flags         = info->vna_flags;
++      k_info.ip.s_addr     = info->vna_v4_ip.s_addr;
++      k_info.mask.s_addr   = info->vna_v4_mask.s_addr;
++
++      if (k_info.ip.s_addr == 0) {
++	k_info.type        = VC_NXA_TYPE_MASK;
++	k_info.mask.s_addr = 0;
++      }
+ 
+       return vserver(VCMD_net_add_ipv4, NID_USER2KERNEL(nid), &k_info);
+     }
+diff -urN util-vserver-0.30.215/src/naddress.c util-vserver-trunk/src/naddress.c
+--- util-vserver-0.30.215/src/naddress.c	2008-03-17 09:59:45.000000000 +0100
++++ util-vserver-trunk/src/naddress.c	2008-05-22 23:51:01.000000000 +0200
+@@ -1,4 +1,4 @@
+-// $Id$
++// $Id$
+ 
+ // Copyright (C) 2003 Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
+ // Copyright (C) 2006 Daniel Hokka Zakrisson <daniel at hozac.com>
+@@ -315,7 +315,6 @@
+   }
+ 
+ out:
+-  free(str);
+   return ret;
+ }
+ 
+diff -urN util-vserver-0.30.215/src/capability-compat.h util-vserver-trunk/src/capability-compat.h
+--- util-vserver-0.30.215/src/capability-compat.h	2008-03-17 09:59:45.000000000 +0100
++++ util-vserver-trunk/src/capability-compat.h	2008-05-22 23:51:01.000000000 +0200
+@@ -1,4 +1,4 @@
+-// $Id$    --*- c -*--
++// $Id$    --*- c -*--
+ 
+ // Copyright (C) 2005 Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
+ //  
+@@ -29,3 +29,11 @@
+ extern int capset (struct __user_cap_header_struct *, struct __user_cap_data_struct *);
+ 
+ #endif
++
++#ifndef _LINUX_CAPABILITY_VERSION_1
++#  define _LINUX_CAPABILITY_VERSION_1	_LINUX_CAPABILITY_VERSION
++#endif
++
++#ifndef _LINUX_CAPABILITY_VERSION_2
++#  define _LINUX_CAPABILITY_VERSION_2	0x20071026
++#endif
+diff -urN util-vserver-0.30.215/src/rpm-fake.c util-vserver-trunk/src/rpm-fake.c
+--- util-vserver-0.30.215/src/rpm-fake.c	2008-03-17 09:59:45.000000000 +0100
++++ util-vserver-trunk/src/rpm-fake.c	2008-05-22 23:51:01.000000000 +0200
+@@ -1,4 +1,4 @@
+-// $Id$    --*- c++ -*--
++// $Id$    --*- c++ -*--
+ 
+ // Copyright (C) 2003 Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
+ //  
+@@ -419,22 +419,30 @@
+ static void
+ reduceCapabilities()
+ {
++  int retried = 0;
+   struct __user_cap_header_struct header;
+-  struct __user_cap_data_struct user;
++  struct __user_cap_data_struct user[2];
+   
+-  header.version = _LINUX_CAPABILITY_VERSION;
++  header.version = _LINUX_CAPABILITY_VERSION_2;
+   header.pid     = 0;
+ 
+-  if (capget(&header, &user)==-1) {
++retry:
++  if (capget(&header, user)==-1) {
++    if (!retried &&
++	header.version != _LINUX_CAPABILITY_VERSION_2) {
++      header.version = _LINUX_CAPABILITY_VERSION_1;
++      retried = 1;
++      goto retry;
++    }
+     perror("capget()");
+     exit(wrapper_exit_code);
+   }
+ 
+-  user.effective   &= ~(1<<CAP_MKNOD);
+-  user.permitted   &= ~(1<<CAP_MKNOD);
+-  user.inheritable &= ~(1<<CAP_MKNOD);
++  user[0].effective   &= ~(1<<CAP_MKNOD);
++  user[0].permitted   &= ~(1<<CAP_MKNOD);
++  user[0].inheritable &= ~(1<<CAP_MKNOD);
+ 
+-  if (capset(&header, &user)==-1) {
++  if (capset(&header, user)==-1) {
+     perror("capset()");
+     exit(wrapper_exit_code);
+   }
+diff -urN util-vserver-0.30.215/src/vserver-info.c util-vserver-trunk/src/vserver-info.c
+--- util-vserver-0.30.215/src/vserver-info.c	2008-03-17 09:59:45.000000000 +0100
++++ util-vserver-trunk/src/vserver-info.c	2008-05-22 23:51:01.000000000 +0200
+@@ -1,4 +1,4 @@
+-// $Id$    --*- c -*--
++// $Id$    --*- c -*--
+ 
+ // Copyright (C) 2003 Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
+ //  
+@@ -185,9 +185,11 @@
+ static bool
+ verifyCap()
+ {
++  int retried = 0;
+   struct __user_cap_header_struct header;
+-  struct __user_cap_data_struct user;
+-  header.version = _LINUX_CAPABILITY_VERSION;
++  struct __user_cap_data_struct user[2];
++
++  header.version = _LINUX_CAPABILITY_VERSION_2;
+   header.pid     = 0;
+ 
+   if (getuid()!=0) {
+@@ -199,17 +201,24 @@
+ //    perror( "prctl:" );
+ //    return false;
+ //  }
+-  
+-  if (capget(&header, &user)==-1) {
++
++retry:
++  if (capget(&header, user)==-1) {
++    if (!retried &&
++	header.version != _LINUX_CAPABILITY_VERSION_2) {
++      header.version = _LINUX_CAPABILITY_VERSION_1;
++      retried = 1;
++      goto retry;
++    }
+     perror("capget()");
+     return false;
+   }
+ 
+-  user.effective   = 0;
+-  user.permitted   = 0;
+-  user.inheritable = 0;
++  user[0].effective   = user[1].effective   = 0;
++  user[0].permitted   = user[1].permitted   = 0;
++  user[0].inheritable = user[1].inheritable = 0;
+ 
+-  if (capset(&header, &user)==-1) {
++  if (capset(&header, user)==-1) {
+     perror("capset()");
+     return false;
+   }
+diff -urN util-vserver-0.30.215/src/tunctl.c util-vserver-trunk/src/tunctl.c
+--- util-vserver-0.30.215/src/tunctl.c	2008-03-17 09:59:45.000000000 +0100
++++ util-vserver-trunk/src/tunctl.c	2008-05-22 23:51:01.000000000 +0200
+@@ -33,6 +33,21 @@
+ #include <linux/if_tun.h>
+ 
+ /* Make sure we have the necessary ioctls */
++#ifndef TUNSETNOCSUM
++#  define TUNSETNOCSUM		_IOW('T', 200, int)
++#endif
++#ifndef TUNSETIFF
++#  define TUNSETIFF		_IOW('T', 202, int)
++#endif
++#ifndef TUNSETPERSIST
++#  define TUNSETPERSIST		_IOW('T', 203, int)
++#endif
++#ifndef TUNSETOWNER
++#  define TUNSETOWNER		_IOW('T', 204, int)
++#endif
++#ifndef TUNSETLINK
++#  define TUNSETLINK		_IOW('T', 205, int)
++#endif
+ #ifndef TUNSETGROUP
+ #  define TUNSETGROUP		_IOW('T', 206, int)
+ #endif
+diff -urN util-vserver-0.30.215/src/vspace.c util-vserver-trunk/src/vspace.c
+--- util-vserver-0.30.215/src/vspace.c	2008-03-17 09:59:45.000000000 +0100
++++ util-vserver-trunk/src/vspace.c	2008-05-22 23:51:01.000000000 +0200
+@@ -1,4 +1,4 @@
+-// $Id$    --*- c -*--
++// $Id$    --*- c -*--
+ 
+ // Copyright (C) 2004 Enrico Scholz <enrico.scholz at informatik.tu-chemnitz.de>
+ // Copyright (C) 2007 Daniel Hokka Zakrisson
+@@ -114,6 +114,8 @@
+   if (mask == 0)
+     return;
+ 
++  mask &= ~CLONE_FS;
++
+   signal(SIGCHLD, SIG_DFL);
+ 
+ #ifdef NDEBUG
================================================================


More information about the pld-cvs-commit mailing list