Author: arekm Date: Thu Aug 5 19:52:33 2010 GMT Module: packages Tag: HEAD ---- Log message: - updated patches for 2.6.35 (vserver, apparmor, reiser4, unionfs, routes, imq)
---- Files affected: packages/kernel: kernel-apparmor.patch (1.7 -> 1.8) , kernel-imq.patch (1.9 -> 1.10) , kernel-reiser4.patch (1.12 -> 1.13) , kernel-routes.patch (1.9 -> 1.10) , kernel-squashfs-lzma.patch (1.5 -> 1.6) , kernel-unionfs.patch (1.9 -> 1.10) , kernel-vserver-2.3.patch (1.40 -> 1.41) , kernel-vserver-fixes.patch (1.14 -> 1.15) , kernel.spec (1.799 -> 1.800) ---- Diffs: ================================================================ Index: packages/kernel/kernel-apparmor.patch diff -u packages/kernel/kernel-apparmor.patch:1.7 packages/kernel/kernel-apparmor.patch:1.8 --- packages/kernel/kernel-apparmor.patch:1.7 Tue Mar 16 22:15:38 2010 +++ packages/kernel/kernel-apparmor.patch Thu Aug 5 21:52:26 2010 @@ -1,31 +1,231 @@ -diff --git a/include/linux/audit.h b/include/linux/audit.h -index 3c7a358..a1db25b 100644 ---- a/include/linux/audit.h -+++ b/include/linux/audit.h -@@ -33,7 +33,7 @@ - * 1200 - 1299 messages internal to the audit daemon - * 1300 - 1399 audit event messages - * 1400 - 1499 SE Linux use -- * 1500 - 1599 kernel LSPP events -+ * 1500 - 1599 AppArmor use - * 1600 - 1699 kernel crypto events - * 1700 - 1799 kernel anomaly records - * 1800 - 1899 kernel integrity events -@@ -122,6 +122,14 @@ - #define AUDIT_MAC_UNLBL_STCADD 1416 /* NetLabel: add a static label */ - #define AUDIT_MAC_UNLBL_STCDEL 1417 /* NetLabel: del a static label */ +From 3f980257e048429a1f0a5dbce0b027a93c0781cc Mon Sep 17 00:00:00 2001 +From: John Johansen <[email protected]> +Date: Wed, 4 Aug 2010 04:42:50 -0700 +Subject: [PATCH] AppArmor: security module v2.6 + compat patches as of 29-07-2010 (security-next) + +AppArmor v2.6 module as synced to security-next 29-07-2010 backported to +2.6.35 + AppArmor 2.4 compatibility patches. + +Signed-off-by: John Johansen <[email protected]> +--- + Documentation/apparmor.txt | 40 + + Documentation/kernel-parameters.txt | 8 + + MAINTAINERS | 8 + + include/linux/lsm_audit.h | 31 + + security/Kconfig | 6 + + security/Makefile | 2 + + security/apparmor/.gitignore | 5 + + security/apparmor/Kconfig | 40 + + security/apparmor/Makefile | 30 + + security/apparmor/apparmorfs-24.c | 287 +++++++ + security/apparmor/apparmorfs.c | 253 ++++++ + security/apparmor/audit.c | 215 ++++++ + security/apparmor/capability.c | 141 ++++ + security/apparmor/context.c | 216 ++++++ + security/apparmor/domain.c | 823 ++++++++++++++++++++ + security/apparmor/file.c | 457 +++++++++++ + security/apparmor/include/apparmor.h | 92 +++ + security/apparmor/include/apparmorfs.h | 26 + + security/apparmor/include/audit.h | 123 +++ + security/apparmor/include/capability.h | 45 ++ + security/apparmor/include/context.h | 154 ++++ + security/apparmor/include/domain.h | 36 + + security/apparmor/include/file.h | 217 ++++++ + security/apparmor/include/ipc.h | 28 + + security/apparmor/include/match.h | 132 ++++ + security/apparmor/include/net.h | 40 + + security/apparmor/include/path.h | 31 + + security/apparmor/include/policy.h | 308 ++++++++ + security/apparmor/include/policy_unpack.h | 20 + + security/apparmor/include/procattr.h | 26 + + security/apparmor/include/resource.h | 46 ++ + security/apparmor/include/sid.h | 24 + + security/apparmor/ipc.c | 114 +++ + security/apparmor/lib.c | 133 ++++ + security/apparmor/lsm.c | 1051 +++++++++++++++++++++++++ + security/apparmor/match.c | 370 +++++++++ + security/apparmor/net.c | 169 ++++ + security/apparmor/path.c | 235 ++++++ + security/apparmor/policy.c | 1185 +++++++++++++++++++++++++++++ + security/apparmor/policy_unpack.c | 740 ++++++++++++++++++ + security/apparmor/policy_unpack.c.rej | 11 + + security/apparmor/procattr.c | 170 ++++ + security/apparmor/resource.c | 134 ++++ + security/apparmor/sid.c | 55 ++ + 44 files changed, 8277 insertions(+), 0 deletions(-) + create mode 100644 Documentation/apparmor.txt + create mode 100644 security/apparmor/.gitignore + create mode 100644 security/apparmor/Kconfig + create mode 100644 security/apparmor/Makefile + create mode 100644 security/apparmor/apparmorfs-24.c + create mode 100644 security/apparmor/apparmorfs.c + create mode 100644 security/apparmor/audit.c + create mode 100644 security/apparmor/capability.c + create mode 100644 security/apparmor/context.c + create mode 100644 security/apparmor/domain.c + create mode 100644 security/apparmor/file.c + create mode 100644 security/apparmor/include/apparmor.h + create mode 100644 security/apparmor/include/apparmorfs.h + create mode 100644 security/apparmor/include/audit.h + create mode 100644 security/apparmor/include/capability.h + create mode 100644 security/apparmor/include/context.h + create mode 100644 security/apparmor/include/domain.h + create mode 100644 security/apparmor/include/file.h + create mode 100644 security/apparmor/include/ipc.h + create mode 100644 security/apparmor/include/match.h + create mode 100644 security/apparmor/include/net.h + create mode 100644 security/apparmor/include/path.h + create mode 100644 security/apparmor/include/policy.h + create mode 100644 security/apparmor/include/policy_unpack.h + create mode 100644 security/apparmor/include/procattr.h + create mode 100644 security/apparmor/include/resource.h + create mode 100644 security/apparmor/include/sid.h + create mode 100644 security/apparmor/ipc.c + create mode 100644 security/apparmor/lib.c + create mode 100644 security/apparmor/lsm.c + create mode 100644 security/apparmor/match.c + create mode 100644 security/apparmor/net.c + create mode 100644 security/apparmor/path.c + create mode 100644 security/apparmor/policy.c + create mode 100644 security/apparmor/policy_unpack.c + create mode 100644 security/apparmor/policy_unpack.c.rej + create mode 100644 security/apparmor/procattr.c + create mode 100644 security/apparmor/resource.c + create mode 100644 security/apparmor/sid.c + +diff --git a/Documentation/apparmor.txt b/Documentation/apparmor.txt +new file mode 100644 +index 0000000..6240438 +--- /dev/null ++++ b/Documentation/apparmor.txt +@@ -0,0 +1,40 @@ ++--- What is AppArmor? --- ++ ++AppArmor is MAC style security extension for the Linux kernel. It implements ++a task centered policy, with task "profiles" being created and loaded ++from user space. Tasks on the system that do not have a profile defined for ++them run in an unconfined state which is equivalent to standard Linux DAC ++permissions. ++ ++--- How to enable/disable --- ++ ++set CONFIG_SECURITY_APPARMOR=y ++ ++If AppArmor should be selected as the default security module then ++ set CONFIG_DEFAULT_SECURITY="apparmor" ++ and CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE=1 ++ ++Build the kernel ++ ++If AppArmor is not the default security module it can be enabled by passing ++security=apparmor on the kernel's command line. ++ ++If AppArmor is the default security module it can be disabled by passing ++apparmor=0, security=XXXX (where XXX is valid security module), on the ++kernel's command line ++ ++For AppArmor to enforce any restrictions beyond standard Linux DAC permissions ++policy must be loaded into the kernel from user space (see the Documentation ++and tools links). ++ ++--- Documentation --- ++ ++Documentation can be found on the wiki. ++ ++--- Links --- ++ ++Mailing List - [email protected] ++Wiki - http://apparmor.wiki.kernel.org/ ++User space tools - https://launchpad.net/apparmor ++Kernel module - git://git.kernel.org/pub/scm/linux/kernel/git/jj/apparmor-dev.git ++ +diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt +index 2b2407d..b61f89f 100644 +--- a/Documentation/kernel-parameters.txt ++++ b/Documentation/kernel-parameters.txt +@@ -93,6 +93,7 @@ parameter is applicable: + Documentation/scsi/. + SECURITY Different security models are enabled. + SELINUX SELinux support is enabled. ++ APPARMOR AppArmor support is enabled. + SERIAL Serial support is enabled. + SH SuperH architecture is enabled. + SMP The kernel is an SMP kernel. +@@ -2312,6 +2313,13 @@ and is between 256 and 4096 characters. It is defined in the file + If enabled at boot time, /selinux/disable can be used + later to disable prior to initial policy load. + ++ apparmor= [APPARMOR] Disable or enable AppArmor at boot time ++ Format: { "0" | "1" } ++ See security/apparmor/Kconfig help text ++ 0 -- disable. ++ 1 -- enable. ++ Default value is set via kernel config option. ++ + serialnumber [BUGS=X86-32] + + shapers= [NET] +diff --git a/MAINTAINERS b/MAINTAINERS +index 02f75fc..a8d5851 100644 +--- a/MAINTAINERS ++++ b/MAINTAINERS +@@ -5061,6 +5061,14 @@ S: Supported + F: include/linux/selinux* + F: security/selinux/ -+#define AUDIT_APPARMOR_AUDIT 1501 /* AppArmor audited grants */ -+#define AUDIT_APPARMOR_ALLOWED 1502 /* Allowed Access for learning */ -+#define AUDIT_APPARMOR_DENIED 1503 -+#define AUDIT_APPARMOR_HINT 1504 /* Process Tracking information */ -+#define AUDIT_APPARMOR_STATUS 1505 /* Changes in config */ -+#define AUDIT_APPARMOR_ERROR 1506 /* Internal AppArmor Errors */ -+#define AUDIT_APPARMOR_KILL 1507 /* AppArmor killing processes */ -+ - #define AUDIT_FIRST_KERN_ANOM_MSG 1700 - #define AUDIT_LAST_KERN_ANOM_MSG 1799 - #define AUDIT_ANOM_PROMISCUOUS 1700 /* Device changed promiscuous mode */ ++APPARMOR SECURITY MODULE ++M: John Johansen <[email protected]> ++L: [email protected] (subscribers-only, general discussion) ++W: apparmor.wiki.kernel.org ++T: git git://git.kernel.org/pub/scm/linux/kernel/git/jj/apparmor-dev.git ++S: Supported ++F: security/apparmor/ ++ + SENSABLE PHANTOM + M: Jiri Slaby <[email protected]> + S: Maintained +diff --git a/include/linux/lsm_audit.h b/include/linux/lsm_audit.h +index 6907251..3474e45 100644 +--- a/include/linux/lsm_audit.h ++++ b/include/linux/lsm_audit.h +@@ -94,6 +94,37 @@ struct common_audit_data { + int result; + } selinux_audit_data; + #endif ++#ifdef CONFIG_SECURITY_APPARMOR ++ struct { ++ int error; ++ int op; ++ int type; ++ void *profile; ++ const char *name; ++ const char *info; ++ union { ++ void *target; ++ struct { ++ long pos; ++ void *target; ++ } iface; ++ struct { ++ int rlim; ++ unsigned long max; ++ } rlim; ++ struct { ++ const char *target; ++ u32 request; ++ u32 denied; ++ uid_t ouid; ++ } fs; ++ struct { ++ int type, protocol; ++ struct sock *sk; ++ } net; ++ }; ++ } apparmor_audit_data; ++#endif + }; + /* these callback will be implemented by a specific LSM */ + void (*lsm_pre_audit)(struct audit_buffer *, void *); diff --git a/security/Kconfig b/security/Kconfig index 226b955..bd72ae6 100644 --- a/security/Kconfig @@ -97,7 +297,7 @@ +capability_names.h diff --git a/security/apparmor/Kconfig b/security/apparmor/Kconfig new file mode 100644 -index 0000000..5c57df7 +index 0000000..fdf3022 --- /dev/null +++ b/security/apparmor/Kconfig @@ -0,0 +1,40 @@ @@ -113,7 +313,7 @@ + This enables the AppArmor security module. + Required userspace tools (if they are not included in your + distribution) and further information may be found at -+ <http://forge.novell.com/modules/xfmod/project/?apparmor> ++ http://apparmor.wiki.kernel.org + + If you are unsure how to answer this question, answer N. + @@ -127,9 +327,9 @@ + 'apparmor', which allows AppArmor to be enabled or disabled + at boot. If this option is set to 0 (zero), the AppArmor + kernel parameter will default to 0, disabling AppArmor at -+ bootup. If this option is set to 1 (one), the AppArmor ++ boot. If this option is set to 1 (one), the AppArmor + kernel parameter will default to 1, enabling AppArmor at -+ bootup. ++ boot. + + If you are unsure how to answer this question, answer 1. + @@ -143,10 +343,10 @@ + is desired. diff --git a/security/apparmor/Makefile b/security/apparmor/Makefile new file mode 100644 -index 0000000..554cba7 +index 0000000..e5e8968 --- /dev/null +++ b/security/apparmor/Makefile -@@ -0,0 +1,24 @@ +@@ -0,0 +1,30 @@ +# Makefile for AppArmor Linux Security Module +# +obj-$(CONFIG_SECURITY_APPARMOR) += apparmor.o @@ -165,18 +365,24 @@ +quiet_cmd_make-af = GEN $@ +cmd_make-af = echo "static const char *address_family_names[] = {" > $@ ; sed -n -e "/AF_MAX/d" -e "/AF_LOCAL/d" -e "s/^\#define[ \\t]\\+AF_\\([A-Z0-9_]\\+\\)[ \\t]\\+\\([0-9]\\+\\)\\(.*\\)\$$/[\\2] = \"\\1\",/p" $< | tr A-Z a-z >> $@ ; echo "};" >> $@ + ++quiet_cmd_make-rlim = GEN $@ ++cmd_make-rlim = echo "static const char *rlim_names[] = {" > $@ ; sed -n --e "/AF_MAX/d" -e "s/^\# \\?define[ \\t]\\+RLIMIT_\\([A-Z0-9_]\\+\\)[ \\t]\\+\\([0-9]\\+\\)\\(.*\\)\$$/[\\2] = \"\\1\",/p" $< | tr A-Z a-z >> $@ ; echo "};" >> $@ ; echo "static const int rlim_map[] = {" >> $@ ; sed -n -e "/AF_MAX/d" -e "s/^\# \\?define[ \\t]\\+\\(RLIMIT_[A-Z0-9_]\\+\\)[ \\t]\\+\\([0-9]\\+\\)\\(.*\\)\$$/\\1,/p" $< >> $@ ; echo "};" >> $@ ++ +$(obj)/capability.o : $(obj)/capability_names.h +$(obj)/net.o : $(obj)/af_names.h ++$(obj)/resource.o : $(obj)/rlim_names.h +$(obj)/capability_names.h : $(srctree)/include/linux/capability.h + $(call cmd,make-caps) +$(obj)/af_names.h : $(srctree)/include/linux/socket.h + $(call cmd,make-af) ++$(obj)/rlim_names.h : $(srctree)/include/asm-generic/resource.h ++ $(call cmd,make-rlim) diff --git a/security/apparmor/apparmorfs-24.c b/security/apparmor/apparmorfs-24.c new file mode 100644 -index 0000000..f64aae8 +index 0000000..dc8c744 --- /dev/null +++ b/security/apparmor/apparmorfs-24.c -@@ -0,0 +1,61 @@ +@@ -0,0 +1,287 @@ +/* + * AppArmor security module + * @@ -238,207 +444,6 @@ +const struct file_operations aa_fs_features_fops = { + .read = aa_features_read, +}; -diff --git a/security/apparmor/apparmorfs.c b/security/apparmor/apparmorfs.c -new file mode 100644 -index 0000000..89a26a0 ---- /dev/null -+++ b/security/apparmor/apparmorfs.c -@@ -0,0 +1,561 @@ -+/* -+ * AppArmor security module -+ * -+ * This file contains AppArmor /sys/kernel/security/apparmor interface functions -+ * -+ * Copyright (C) 1998-2008 Novell/SUSE -+ * Copyright 2009-2010 Canonical Ltd. -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU General Public License as -+ * published by the Free Software Foundation, version 2 of the -+ * License. -+ */ -+ -+#include <linux/security.h> -+#include <linux/vmalloc.h> -+#include <linux/module.h> -+#include <linux/seq_file.h> -+#include <linux/uaccess.h> -+#include <linux/namei.h> -+ -+#include "include/apparmor.h" -+#include "include/apparmorfs.h" -+#include "include/audit.h" -+#include "include/context.h" -+#include "include/policy.h" -+ -+/** -+ * kvmalloc - do allocation prefering kmalloc but falling back to vmalloc -+ * @size: size of allocation -+ * -+ * Return: allocated buffer or NULL if failed -+ * -+ * It is possible that policy being loaded from the user is larger than -+ * what can be allocated by kmalloc, in those cases fall back to vmalloc. -+ */ -+static void *kvmalloc(size_t size) -+{ -+ void *buffer; -+ -+ if (size == 0) -+ return NULL; -+ -+ buffer = kmalloc(size, GFP_KERNEL); -+ if (!buffer) -+ buffer = vmalloc(size); -+ return buffer; -+} -+ -+/** -+ * kvfree - free an allocation do by kvmalloc -+ * @buffer: buffer to free -+ * -+ * Free a buffer allocated by kvmalloc -+ */ -+static void kvfree(void *buffer) -+{ -+ if (!buffer) -+ return; -+ -+ if (is_vmalloc_addr(buffer)) -+ vfree(buffer); -+ else -+ kfree(buffer); -+} -+ -+/** -+ * aa_simple_write_to_buffer - common routine for getting policy from user -+ * @userbuf: user buffer to copy data from (NOT NULL) -+ * @alloc_size: size of user buffer -+ * @copy_size: size of data to copy from user buffer -+ * @pos: position write is at in the file -+ * @operation: name of operation doing the user buffer copy (NOT NULL) -+ * -+ * Returns: kernel buffer containing copy of user buffer data or an -+ * ERR_PTR on failure. -+ */ -+static char *aa_simple_write_to_buffer(const char __user *userbuf, -+ size_t alloc_size, size_t copy_size, -+ loff_t *pos, const char *operation) -+{ -+ char *data; -+ -+ if (*pos != 0) { -+ /* only writes from pos 0, that is complete writes */ -+ data = ERR_PTR(-ESPIPE); -+ goto out; -+ } -+ -+ /* -+ * Don't allow profile load/replace/remove from profiles that don't -+ * have CAP_MAC_ADMIN -+ */ -+ if (!capable(CAP_MAC_ADMIN)) { -+ struct aa_profile *profile = NULL; -+ struct aa_audit sa = { -+ .operation = operation, -+ .gfp_mask = GFP_KERNEL, -+ .error = -EACCES, -+ }; -+ profile = aa_current_profile(); -+ data = ERR_PTR(aa_audit(AUDIT_APPARMOR_DENIED, profile, &sa, -+ NULL)); -+ goto out; -+ } -+ /* freed by caller to aa_simple_write_to_buffer */ -+ data = kvmalloc(alloc_size); -+ if (data == NULL) { -+ data = ERR_PTR(-ENOMEM); -+ goto out; -+ } -+ -+ if (copy_from_user(data, userbuf, copy_size)) { -+ kvfree(data); -+ data = ERR_PTR(-EFAULT); -+ goto out; -+ } -+ -+out: -+ return data; -+} -+ -+ -+/* .load file hook fn to load policy */ -+static ssize_t aa_profile_load(struct file *f, const char __user *buf, -+ size_t size, loff_t *pos) -+{ -+ char *data; -+ ssize_t error; -+ -+ data = aa_simple_write_to_buffer(buf, size, size, pos, "profile_load"); -+ -+ error = PTR_ERR(data); -+ if (!IS_ERR(data)) { -+ error = aa_interface_replace_profiles(data, size, 1); -+ kvfree(data); -+ } -+ -+ return error; -+} -+ -+static const struct file_operations aa_fs_profile_load = { -+ .write = aa_profile_load -+}; -+ -+/* .replace file hook fn to load and/or replace policy */ -+static ssize_t aa_profile_replace(struct file *f, const char __user *buf, -+ size_t size, loff_t *pos) -+{ -+ char *data; -+ ssize_t error; -+ -+ data = aa_simple_write_to_buffer(buf, size, size, pos, -+ "profile_replace"); -+ error = PTR_ERR(data); -+ if (!IS_ERR(data)) { -+ error = aa_interface_replace_profiles(data, size, 0); -+ kvfree(data); -+ } -+ -+ return error; -+} -+ -+static const struct file_operations aa_fs_profile_replace = { -+ .write = aa_profile_replace -+}; -+ -+/* .remove file hook fn to remove loaded policy */ -+static ssize_t aa_profile_remove(struct file *f, const char __user *buf, -+ size_t size, loff_t *pos) -+{ -+ char *data; -+ ssize_t error; -+ -+ /* -+ * aa_remove_profile needs a null terminated string so 1 extra -+ * byte is allocated and the copied data is null terminated. -+ */ -+ data = aa_simple_write_to_buffer(buf, size + 1, size, pos, -+ "profile_remove"); -+ -+ error = PTR_ERR(data); -+ if (!IS_ERR(data)) { -+ data[size] = 0; -+ error = aa_interface_remove_profiles(data, size); -+ kvfree(data); -+ } -+ -+ return error; -+} -+ -+static const struct file_operations aa_fs_profile_remove = { -+ .write = aa_profile_remove -+}; -+ + +/** + * __next_namespace - find the next namespace to list @@ -488,8 +493,8 @@ + * + * Returns: unrefcounted profile or NULL if no profile + */ -+ static struct aa_profile *__first_profile(struct aa_namespace *root, -+ struct aa_namespace *ns) ++static struct aa_profile *__first_profile(struct aa_namespace *root, ++ struct aa_namespace *ns) +{ + for ( ; ns; ns = __next_namespace(root, ns)) { + if (!list_empty(&ns->base.profiles)) @@ -623,27 +628,7 @@ +} + +/** -+ * print_ns_name - print a namespace name back to @root -+ * @root: root namespace to stop at -+ * @ns: namespace to gen name for -+ * -+ * Returns: true if it printed a name -+ */ -+static bool print_ns_name(struct seq_file *f, struct aa_namespace *root, -+ struct aa_namespace *ns) -+{ -+ if (!ns || ns == root) -+ return 0; -+ -+ if (ns->parent && print_ns_name(f, root, ns->parent)) -+ seq_printf(f, "//"); -+ -+ seq_printf(f, "%s", ns->base.name); -+ return 1; -+} -+ -+/** -+ * seq_show_profile - ++ * seq_show_profile - show a profile entry + * @f: seq_file to file + * @p: current position (profile) (NOT NULL) + * @@ -655,9 +640,7 @@ + struct aa_namespace *root = f->private; + + if (profile->ns != root) -+ seq_printf(f, ":"); -+ if (print_ns_name(f, root, profile->ns)) -+ seq_printf(f, "://"); ++ seq_printf(f, ":%s://", aa_ns_name(root, profile->ns)); + seq_printf(f, "%s (%s)\n", profile->base.hname, + COMPLAIN_MODE(profile) ? "complain" : "enforce"); + @@ -671,31 +654,172 @@ + .show = seq_show_profile, +}; + <<Diff was trimmed, longer than 597 lines>> ---- CVS-web: http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-apparmor.patch?r1=1.7&r2=1.8&f=u http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-imq.patch?r1=1.9&r2=1.10&f=u http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-reiser4.patch?r1=1.12&r2=1.13&f=u http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-routes.patch?r1=1.9&r2=1.10&f=u http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-squashfs-lzma.patch?r1=1.5&r2=1.6&f=u http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-unionfs.patch?r1=1.9&r2=1.10&f=u http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-vserver-2.3.patch?r1=1.40&r2=1.41&f=u http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel-vserver-fixes.patch?r1=1.14&r2=1.15&f=u http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/kernel/kernel.spec?r1=1.799&r2=1.800&f=u _______________________________________________ pld-cvs-commit mailing list [email protected] http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit
