[packages/kernel] - preparations for 3.9.4; updated some patches (imq, overlayfs, virtio-gl-accel, ...)
arekm
arekm at pld-linux.org
Fri May 31 15:43:14 CEST 2013
commit 514e5daeee3608038b626c0e6ce96249c298c15e
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Fri May 31 15:43:09 2013 +0200
- preparations for 3.9.4; updated some patches (imq, overlayfs, virtio-gl-accel, ...)
kernel-imq.patch | 314 +++++++++++++++++------------------
kernel-small_fixes.patch | 15 +-
kernel-virtio-gl-accel.patch | 4 +-
kernel.spec | 15 +-
ovl01-vfs-add-i_op-dentry_open.patch | 22 +--
ovl04-overlay-filesystem.patch | 76 ++++-----
6 files changed, 212 insertions(+), 234 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index f73c2c9..2204c41 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -67,8 +67,8 @@
%endif
%define rel 0.1
-%define basever 3.8
-%define postver .12
+%define basever 3.9
+%define postver .4
# __alt_kernel is list of features, empty string if none set
# _alt kernel is defined as: %{nil}%{?alt_kernel:-%{?alt_kernel}} (defined in rpm.macros)
@@ -108,10 +108,10 @@ Epoch: 3
License: GPL v2
Group: Base/Kernel
Source0: http://www.kernel.org/pub/linux/kernel/v3.x/linux-%{basever}.tar.xz
-# Source0-md5: 1c738edfc54e7c65faeb90c436104e2f
+# Source0-md5: 4348c9b6b2eb3144d601e87c19d5d909
%if "%{postver}" != ".0"
Patch0: http://www.kernel.org/pub/linux/kernel/v3.x/patch-%{version}.bz2
-# Patch0-md5: 77cb3a52d24a05171006757abe4fd3fd
+# Patch0-md5: c0f20f2c33265b128610d735cb344e9a
%endif
Source1: kernel.sysconfig
@@ -162,11 +162,12 @@ Patch40: kernel-layer7.patch
# http://zph.bratcheda.org/linux-2.6.26.3-zph.patch
Patch49: kernel-zph.patch
-# http://www.linuximq.net/patches/patch-imqmq-3.5.diff.xz
+# http://www.linuximq.net
+# http://tech.groups.yahoo.com/group/linuximq/message/3096
Patch50: kernel-imq.patch
-Patch51: http://downloads.sourceforge.net/reiser4/reiser4-for-3.6.4.patch.gz
-# Patch51-md5: 4128aa3bd062d0289117dda6775a7f20
+Patch51: http://downloads.sourceforge.net/project/reiser4/reiser4-for-linux-3.x/reiser4-for-3.9.2.patch.gz
+# Patch51-md5: 6f7e3f62e887c073844281be90716c28
# http://fatooh.org/esfq-2.6/sfq-2.6.24.1.tar.bz2
Patch53: kernel-esfq.patch
diff --git a/kernel-imq.patch b/kernel-imq.patch
index ccc2014..857ba9a 100644
--- a/kernel-imq.patch
+++ b/kernel-imq.patch
@@ -1,7 +1,7 @@
-diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
---- linux-3.5/drivers/net/imq.c 1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.5-imq/drivers/net/imq.c 2012-07-25 12:31:59.709321554 +0300
-@@ -0,0 +1,857 @@
+diff -uNr linux-3.9.1/drivers/net/imq.c linux-3.9.1-imqmq/drivers/net/imq.c
+--- linux-3.9.1/drivers/net/imq.c 1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/drivers/net/imq.c 2013-05-08 17:30:41.715552053 +0300
+@@ -0,0 +1,861 @@
+/*
+ * Pseudo-driver for the intermediate queue device.
+ *
@@ -131,6 +131,10 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
+ * 2012/03/19 - Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
+ * - Port to 3.3
+ *
++ * 2012/12/12 - Jussi Kivilinna <jussi.kivilinna at mbnet.fi>
++ * - Port to 3.7
++ * - Fix checkpatch.pl warnings
++ *
+ * Also, many thanks to pablo Sebastian Greco for making the initial
+ * patch and to those who helped the testing.
+ *
@@ -300,7 +304,8 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
+
+ addr1 = iph->daddr.s6_addr32[3];
+ addr2 = iph->saddr.s6_addr32[3];
-+ ihl = ipv6_skip_exthdr(skb, sizeof(struct ipv6hdr), &ip_proto, &fo);
++ ihl = ipv6_skip_exthdr(skb, sizeof(struct ipv6hdr), &ip_proto,
++ &fo);
+ if (unlikely(ihl < 0))
+ goto other;
+
@@ -525,9 +530,8 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
+ index = entry->skb->imq_flags & IMQ_F_IFMASK;
+ if (unlikely(index > numdevs - 1)) {
+ if (net_ratelimit())
-+ printk(KERN_WARNING
-+ "IMQ: invalid device specified, highest is %u\n",
-+ numdevs - 1);
++ pr_warn("IMQ: invalid device specified, highest is %u\n",
++ numdevs - 1);
+ retval = -EINVAL;
+ goto out;
+ }
@@ -597,8 +601,9 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
+ users = atomic_read(&skb->users);
+
+ skb_shared = skb_get(skb); /* increase reference count by one */
-+ skb_save_cb(skb_shared); /* backup skb->cb, as qdisc layer will
-+ overwrite it */
++
++ /* backup skb->cb, as qdisc layer will overwrite it */
++ skb_save_cb(skb_shared);
+ qdisc_enqueue_root(skb_shared, q); /* might kfree_skb */
+
+ if (likely(atomic_read(&skb_shared->users) == users + 1)) {
@@ -621,9 +626,11 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
+ } else {
+ skb_restore_cb(skb_shared); /* restore skb->cb */
+ skb->nf_queue_entry = NULL;
-+ /* qdisc dropped packet and decreased skb reference count of
++ /*
++ * qdisc dropped packet and decreased skb reference count of
+ * skb, so we don't really want to and try refree as that would
-+ * actually destroy the skb. */
++ * actually destroy the skb.
++ */
+ spin_unlock(root_lock);
+ goto packet_not_eaten_by_imq_dev;
+ }
@@ -699,7 +706,7 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
+ }
+ return 0;
+end:
-+ printk(KERN_WARNING "IMQ: imq_validate failed (%d)\n", ret);
++ pr_warn("IMQ: imq_validate failed (%d)\n", ret);
+ return ret;
+}
+
@@ -711,7 +718,6 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
+};
+
+static const struct nf_queue_handler imq_nfqh = {
-+ .name = "imq",
+ .outfn = imq_nf_queue,
+};
+
@@ -757,13 +763,13 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
+ int err, i;
+
+ if (numdevs < 1 || numdevs > IMQ_MAX_DEVS) {
-+ printk(KERN_ERR "IMQ: numdevs has to be betweed 1 and %u\n",
++ pr_err("IMQ: numdevs has to be betweed 1 and %u\n",
+ IMQ_MAX_DEVS);
+ return -EINVAL;
+ }
+
+ if (numqueues < 1 || numqueues > IMQ_MAX_QUEUES) {
-+ printk(KERN_ERR "IMQ: numqueues has to be betweed 1 and %u\n",
++ pr_err("IMQ: numqueues has to be betweed 1 and %u\n",
+ IMQ_MAX_QUEUES);
+ return -EINVAL;
+ }
@@ -797,30 +803,30 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
+
+ err = imq_init_devs();
+ if (err) {
-+ printk(KERN_ERR "IMQ: Error trying imq_init_devs(net)\n");
++ pr_err("IMQ: Error trying imq_init_devs(net)\n");
+ return err;
+ }
+
+ err = imq_init_hooks();
+ if (err) {
-+ printk(KERN_ERR "IMQ: Error trying imq_init_hooks()\n");
++ pr_err(KERN_ERR "IMQ: Error trying imq_init_hooks()\n");
+ rtnl_link_unregister(&imq_link_ops);
+ memset(imq_devs_cache, 0, sizeof(imq_devs_cache));
+ return err;
+ }
+
-+ printk(KERN_INFO "IMQ driver loaded successfully. "
-+ "(numdevs = %d, numqueues = %d)\n", numdevs, numqueues);
++ pr_info("IMQ driver loaded successfully. (numdevs = %d, numqueues = %d)\n",
++ numdevs, numqueues);
+
+#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
-+ printk(KERN_INFO "\tHooking IMQ before NAT on PREROUTING.\n");
++ pr_info("\tHooking IMQ before NAT on PREROUTING.\n");
+#else
-+ printk(KERN_INFO "\tHooking IMQ after NAT on PREROUTING.\n");
++ pr_info("\tHooking IMQ after NAT on PREROUTING.\n");
+#endif
+#if defined(CONFIG_IMQ_BEHAVIOR_AB) || defined(CONFIG_IMQ_BEHAVIOR_BB)
-+ printk(KERN_INFO "\tHooking IMQ before NAT on POSTROUTING.\n");
++ pr_info("\tHooking IMQ before NAT on POSTROUTING.\n");
+#else
-+ printk(KERN_INFO "\tHooking IMQ after NAT on POSTROUTING.\n");
++ pr_info("\tHooking IMQ after NAT on POSTROUTING.\n");
+#endif
+
+ return 0;
@@ -842,7 +848,7 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
+{
+ imq_unhook();
+ imq_cleanup_devs();
-+ printk(KERN_INFO "IMQ driver unloaded successfully.\n");
++ pr_info("IMQ driver unloaded successfully.\n");
+}
+
+module_init(imq_init_module);
@@ -850,19 +856,17 @@ diff -uNr linux-3.5/drivers/net/imq.c linux-3.5-imq/drivers/net/imq.c
+
+module_param(numdevs, int, 0);
+module_param(numqueues, int, 0);
-+MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will "
-+ "be created)");
++MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will be created)");
+MODULE_PARM_DESC(numqueues, "number of queues per IMQ device");
+MODULE_AUTHOR("http://www.linuximq.net");
-+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See "
-+ "http://www.linuximq.net/ for more information.");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS_RTNL_LINK("imq");
+
-diff -uNr linux-3.5/drivers/net/Kconfig linux-3.5-imq/drivers/net/Kconfig
---- linux-3.5/drivers/net/Kconfig 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/drivers/net/Kconfig 2012-07-25 12:31:59.709321554 +0300
-@@ -192,6 +192,125 @@
+diff -uNr linux-3.9.1/drivers/net/Kconfig linux-3.9.1-imqmq/drivers/net/Kconfig
+--- linux-3.9.1/drivers/net/Kconfig 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/drivers/net/Kconfig 2013-05-08 17:30:29.011952562 +0300
+@@ -206,6 +206,125 @@
depends on RIONET
default "128"
@@ -988,9 +992,9 @@ diff -uNr linux-3.5/drivers/net/Kconfig linux-3.5-imq/drivers/net/Kconfig
config TUN
tristate "Universal TUN/TAP device driver support"
select CRC32
-diff -uNr linux-3.5/drivers/net/Makefile linux-3.5-imq/drivers/net/Makefile
---- linux-3.5/drivers/net/Makefile 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/drivers/net/Makefile 2012-07-25 12:31:59.709321554 +0300
+diff -uNr linux-3.9.1/drivers/net/Makefile linux-3.9.1-imqmq/drivers/net/Makefile
+--- linux-3.9.1/drivers/net/Makefile 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/drivers/net/Makefile 2013-05-08 17:30:29.011952562 +0300
@@ -9,6 +9,7 @@
obj-$(CONFIG_DUMMY) += dummy.o
obj-$(CONFIG_EQUALIZER) += eql.o
@@ -999,9 +1003,9 @@ diff -uNr linux-3.5/drivers/net/Makefile linux-3.5-imq/drivers/net/Makefile
obj-$(CONFIG_MACVLAN) += macvlan.o
obj-$(CONFIG_MACVTAP) += macvtap.o
obj-$(CONFIG_MII) += mii.o
-diff -uNr linux-3.5/include/linux/imq.h linux-3.5-imq/include/linux/imq.h
---- linux-3.5/include/linux/imq.h 1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.5-imq/include/linux/imq.h 2012-07-25 12:31:59.709321554 +0300
+diff -uNr linux-3.9.1/include/linux/imq.h linux-3.9.1-imqmq/include/linux/imq.h
+--- linux-3.9.1/include/linux/imq.h 1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/include/linux/imq.h 2013-05-08 17:30:29.011952562 +0300
@@ -0,0 +1,13 @@
+#ifndef _IMQ_H
+#define _IMQ_H
@@ -1016,9 +1020,9 @@ diff -uNr linux-3.5/include/linux/imq.h linux-3.5-imq/include/linux/imq.h
+
+#endif /* _IMQ_H */
+
-diff -uNr linux-3.5/include/linux/netfilter/xt_IMQ.h linux-3.5-imq/include/linux/netfilter/xt_IMQ.h
---- linux-3.5/include/linux/netfilter/xt_IMQ.h 1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.5-imq/include/linux/netfilter/xt_IMQ.h 2012-07-25 12:31:59.709321554 +0300
+diff -uNr linux-3.9.1/include/linux/netfilter/xt_IMQ.h linux-3.9.1-imqmq/include/linux/netfilter/xt_IMQ.h
+--- linux-3.9.1/include/linux/netfilter/xt_IMQ.h 1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/include/linux/netfilter/xt_IMQ.h 2013-05-08 17:30:29.011952562 +0300
@@ -0,0 +1,9 @@
+#ifndef _XT_IMQ_H
+#define _XT_IMQ_H
@@ -1029,22 +1033,9 @@ diff -uNr linux-3.5/include/linux/netfilter/xt_IMQ.h linux-3.5-imq/include/linux
+
+#endif /* _XT_IMQ_H */
+
-diff -uNr linux-3.5/include/uapi/linux/netfilter.h linux-3.5-imq/include/uapi/linux/netfilter.h
---- linux-3.5/include/uapi/linux/netfilter.h 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/include/uapi/linux/netfilter.h 2012-07-25 12:31:59.709321554 +0300
-@@ -22,7 +22,8 @@
- #define NF_QUEUE 3
- #define NF_REPEAT 4
- #define NF_STOP 5
--#define NF_MAX_VERDICT NF_STOP
-+#define NF_IMQ_QUEUE 6
-+#define NF_MAX_VERDICT NF_IMQ_QUEUE
-
- /* we overload the higher bits for encoding auxiliary data such as the queue
- * number or errno values. Not nice, but better than additional function
-diff -uNr linux-3.5/include/linux/netfilter_ipv4/ipt_IMQ.h linux-3.5-imq/include/linux/netfilter_ipv4/ipt_IMQ.h
---- linux-3.5/include/linux/netfilter_ipv4/ipt_IMQ.h 1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.5-imq/include/linux/netfilter_ipv4/ipt_IMQ.h 2012-07-25 12:31:59.709321554 +0300
+diff -uNr linux-3.9.1/include/linux/netfilter_ipv4/ipt_IMQ.h linux-3.9.1-imqmq/include/linux/netfilter_ipv4/ipt_IMQ.h
+--- linux-3.9.1/include/linux/netfilter_ipv4/ipt_IMQ.h 1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/include/linux/netfilter_ipv4/ipt_IMQ.h 2013-05-08 17:30:29.011952562 +0300
@@ -0,0 +1,10 @@
+#ifndef _IPT_IMQ_H
+#define _IPT_IMQ_H
@@ -1056,9 +1047,9 @@ diff -uNr linux-3.5/include/linux/netfilter_ipv4/ipt_IMQ.h linux-3.5-imq/include
+
+#endif /* _IPT_IMQ_H */
+
-diff -uNr linux-3.5/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-3.5-imq/include/linux/netfilter_ipv6/ip6t_IMQ.h
---- linux-3.5/include/linux/netfilter_ipv6/ip6t_IMQ.h 1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.5-imq/include/linux/netfilter_ipv6/ip6t_IMQ.h 2012-07-25 12:31:59.709321554 +0300
+diff -uNr linux-3.9.1/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-3.9.1-imqmq/include/linux/netfilter_ipv6/ip6t_IMQ.h
+--- linux-3.9.1/include/linux/netfilter_ipv6/ip6t_IMQ.h 1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/include/linux/netfilter_ipv6/ip6t_IMQ.h 2013-05-08 17:30:29.011952562 +0300
@@ -0,0 +1,10 @@
+#ifndef _IP6T_IMQ_H
+#define _IP6T_IMQ_H
@@ -1070,9 +1061,9 @@ diff -uNr linux-3.5/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-3.5-imq/includ
+
+#endif /* _IP6T_IMQ_H */
+
-diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
---- linux-3.5/include/linux/skbuff.h 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/include/linux/skbuff.h 2012-07-25 12:31:59.712654956 +0300
+diff -uNr linux-3.9.1/include/linux/skbuff.h linux-3.9.1-imqmq/include/linux/skbuff.h
+--- linux-3.9.1/include/linux/skbuff.h 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/include/linux/skbuff.h 2013-05-08 17:30:29.015285965 +0300
@@ -32,6 +32,9 @@
#include <linux/hrtimer.h>
#include <linux/dma-mapping.h>
@@ -1083,7 +1074,7 @@ diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
/* Don't change this without changing skb_csum_unnecessary! */
#define CHECKSUM_NONE 0
-@@ -402,6 +405,9 @@
+@@ -415,6 +418,9 @@
* first. This is owned by whoever has the skb queued ATM.
*/
char cb[48] __aligned(8);
@@ -1093,7 +1084,7 @@ diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
unsigned long _skb_refdst;
#ifdef CONFIG_XFRM
-@@ -440,6 +446,9 @@
+@@ -453,6 +459,9 @@
#ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
struct sk_buff *nfct_reasm;
#endif
@@ -1103,8 +1094,8 @@ diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
#ifdef CONFIG_BRIDGE_NETFILTER
struct nf_bridge_info *nf_bridge;
#endif
-@@ -471,6 +480,10 @@
- /* 8/10 bit hole (depending on ndisc_nodetype presence) */
+@@ -491,6 +500,10 @@
+ /* 7/9 bit hole (depending on ndisc_nodetype presence) */
kmemcheck_bitfield_end(flags2);
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
@@ -1114,7 +1105,7 @@ diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
#ifdef CONFIG_NET_DMA
dma_cookie_t dma_cookie;
#endif
-@@ -555,6 +568,12 @@
+@@ -586,6 +599,12 @@
return (struct rtable *)skb_dst(skb);
}
@@ -1125,9 +1116,9 @@ diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
+#endif
+
extern void kfree_skb(struct sk_buff *skb);
+ extern void skb_tx_error(struct sk_buff *skb);
extern void consume_skb(struct sk_buff *skb);
- extern void __kfree_skb(struct sk_buff *skb);
-@@ -2416,6 +2435,10 @@
+@@ -2662,6 +2681,10 @@
dst->nfct_reasm = src->nfct_reasm;
nf_conntrack_get_reasm(src->nfct_reasm);
#endif
@@ -1138,12 +1129,12 @@ diff -uNr linux-3.5/include/linux/skbuff.h linux-3.5-imq/include/linux/skbuff.h
#ifdef CONFIG_BRIDGE_NETFILTER
dst->nf_bridge = src->nf_bridge;
nf_bridge_get(src->nf_bridge);
-diff -uNr linux-3.5/include/net/netfilter/nf_queue.h linux-3.5-imq/include/net/netfilter/nf_queue.h
---- linux-3.5/include/net/netfilter/nf_queue.h 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/include/net/netfilter/nf_queue.h 2012-07-25 12:31:59.715988358 +0300
-@@ -30,5 +30,11 @@
- const struct nf_queue_handler *qh);
- extern void nf_unregister_queue_handlers(const struct nf_queue_handler *qh);
+diff -uNr linux-3.9.1/include/net/netfilter/nf_queue.h linux-3.9.1-imqmq/include/net/netfilter/nf_queue.h
+--- linux-3.9.1/include/net/netfilter/nf_queue.h 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/include/net/netfilter/nf_queue.h 2013-05-08 17:30:29.015285965 +0300
+@@ -26,5 +26,11 @@
+ void nf_register_queue_handler(const struct nf_queue_handler *qh);
+ void nf_unregister_queue_handler(void);
extern void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
+extern void nf_queue_entry_release_refs(struct nf_queue_entry *entry);
+
@@ -1153,22 +1144,35 @@ diff -uNr linux-3.5/include/net/netfilter/nf_queue.h linux-3.5-imq/include/net/n
+#endif
#endif /* _NF_QUEUE_H */
-diff -uNr linux-3.5/net/core/dev.c linux-3.5-imq/net/core/dev.c
---- linux-3.5/net/core/dev.c 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/core/dev.c 2012-07-25 12:31:59.719321759 +0300
-@@ -97,6 +97,9 @@
- #include <net/net_namespace.h>
- #include <net/sock.h>
- #include <linux/rtnetlink.h>
+diff -uNr linux-3.9.1/include/uapi/linux/netfilter.h linux-3.9.1-imqmq/include/uapi/linux/netfilter.h
+--- linux-3.9.1/include/uapi/linux/netfilter.h 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/include/uapi/linux/netfilter.h 2013-05-08 17:30:29.015285965 +0300
+@@ -13,7 +13,8 @@
+ #define NF_QUEUE 3
+ #define NF_REPEAT 4
+ #define NF_STOP 5
+-#define NF_MAX_VERDICT NF_STOP
++#define NF_IMQ_QUEUE 6
++#define NF_MAX_VERDICT NF_IMQ_QUEUE
+
+ /* we overload the higher bits for encoding auxiliary data such as the queue
+ * number or errno values. Not nice, but better than additional function
+diff -uNr linux-3.9.1/net/core/dev.c linux-3.9.1-imqmq/net/core/dev.c
+--- linux-3.9.1/net/core/dev.c 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/core/dev.c 2013-05-08 17:30:29.018619368 +0300
+@@ -129,6 +129,9 @@
+ #include <linux/inetdevice.h>
+ #include <linux/cpu_rmap.h>
+ #include <linux/static_key.h>
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+#include <linux/imq.h>
+#endif
- #include <linux/proc_fs.h>
- #include <linux/seq_file.h>
- #include <linux/stat.h>
-@@ -2171,7 +2174,12 @@
- if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
- skb_dst_drop(skb);
+
+ #include "net-sysfs.h"
+
+@@ -2529,7 +2532,12 @@
+ }
+ }
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
+ if (!list_empty(&ptype_all) &&
@@ -1178,10 +1182,10 @@ diff -uNr linux-3.5/net/core/dev.c linux-3.5-imq/net/core/dev.c
+#endif
dev_queue_xmit_nit(skb, dev);
- features = netif_skb_features(skb);
-diff -uNr linux-3.5/net/core/skbuff.c linux-3.5-imq/net/core/skbuff.c
---- linux-3.5/net/core/skbuff.c 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/core/skbuff.c 2012-07-25 12:31:59.722655161 +0300
+ skb_len = skb->len;
+diff -uNr linux-3.9.1/net/core/skbuff.c linux-3.9.1-imqmq/net/core/skbuff.c
+--- linux-3.9.1/net/core/skbuff.c 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/core/skbuff.c 2013-05-08 17:30:29.021952772 +0300
@@ -73,6 +73,9 @@
struct kmem_cache *skbuff_head_cache __read_mostly;
@@ -1275,7 +1279,7 @@ diff -uNr linux-3.5/net/core/skbuff.c linux-3.5-imq/net/core/skbuff.c
/* Pipe buffer operations for a socket. */
static const struct pipe_buf_operations sock_pipe_buf_ops = {
-@@ -490,6 +569,29 @@
+@@ -562,6 +641,28 @@
WARN_ON(in_irq());
skb->destructor(skb);
}
@@ -1286,8 +1290,8 @@ diff -uNr linux-3.5/net/core/skbuff.c linux-3.5-imq/net/core/skbuff.c
+ */
+ while (skb->cb_next != NULL) {
+ if (net_ratelimit())
-+ printk(KERN_WARNING "IMQ: kfree_skb: skb->cb_next: "
-+ "%08x\n", (unsigned int)skb->cb_next);
++ pr_warn("IMQ: kfree_skb: skb->cb_next: %08x\n",
++ (unsigned int)skb->cb_next);
+
+ skb_restore_cb(skb);
+ }
@@ -1299,13 +1303,12 @@ diff -uNr linux-3.5/net/core/skbuff.c linux-3.5-imq/net/core/skbuff.c
+ * If this happens we need to add refcounting, etc for nf_queue_entry.
+ */
+ if (skb->nf_queue_entry && net_ratelimit())
-+ printk(KERN_WARNING
-+ "IMQ: kfree_skb: skb->nf_queue_entry != NULL");
++ pr_warn("%s\n", "IMQ: kfree_skb: skb->nf_queue_entry != NULL");
+#endif
#if IS_ENABLED(CONFIG_NF_CONNTRACK)
nf_conntrack_put(skb->nfct);
#endif
-@@ -635,6 +737,9 @@
+@@ -683,6 +784,9 @@
new->sp = secpath_get(old->sp);
#endif
memcpy(new->cb, old->cb, sizeof(old->cb));
@@ -1315,7 +1318,7 @@ diff -uNr linux-3.5/net/core/skbuff.c linux-3.5-imq/net/core/skbuff.c
new->csum = old->csum;
new->local_df = old->local_df;
new->pkt_type = old->pkt_type;
-@@ -3029,6 +3134,13 @@
+@@ -3053,6 +3157,13 @@
0,
SLAB_HWCACHE_ALIGN|SLAB_PANIC,
NULL);
@@ -1329,12 +1332,12 @@ diff -uNr linux-3.5/net/core/skbuff.c linux-3.5-imq/net/core/skbuff.c
}
/**
-diff -uNr linux-3.5/net/ipv6/ip6_output.c linux-3.5-imq/net/ipv6/ip6_output.c
---- linux-3.5/net/ipv6/ip6_output.c 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/ipv6/ip6_output.c 2012-07-25 12:31:59.722655161 +0300
-@@ -102,9 +102,6 @@
- struct net_device *dev = dst->dev;
- struct neighbour *neigh;
+diff -uNr linux-3.9.1/net/ipv6/ip6_output.c linux-3.9.1-imqmq/net/ipv6/ip6_output.c
+--- linux-3.9.1/net/ipv6/ip6_output.c 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/ipv6/ip6_output.c 2013-05-08 17:30:29.021952772 +0300
+@@ -89,9 +89,6 @@
+ struct in6_addr *nexthop;
+ int ret;
- skb->protocol = htons(ETH_P_IPV6);
- skb->dev = dev;
@@ -1342,22 +1345,24 @@ diff -uNr linux-3.5/net/ipv6/ip6_output.c linux-3.5-imq/net/ipv6/ip6_output.c
if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) {
struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
-@@ -170,6 +167,11 @@
+@@ -167,6 +164,13 @@
return 0;
}
-+ /* IMQ-patch: moved setting skb->dev and skb->protocol from
-+ * ip6_finish_output2 to fix crashing at netif_skb_features(). */
++ /*
++ * IMQ-patch: moved setting skb->dev and skb->protocol from
++ * ip6_finish_output2 to fix crashing at netif_skb_features().
++ */
+ skb->protocol = htons(ETH_P_IPV6);
+ skb->dev = dev;
+
return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING, skb, NULL, dev,
ip6_finish_output,
!(IP6CB(skb)->flags & IP6SKB_REROUTED));
-diff -uNr linux-3.5/net/netfilter/core.c linux-3.5-imq/net/netfilter/core.c
---- linux-3.5/net/netfilter/core.c 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/netfilter/core.c 2012-07-25 12:31:59.722655161 +0300
-@@ -190,9 +190,11 @@
+diff -uNr linux-3.9.1/net/netfilter/core.c linux-3.9.1-imqmq/net/netfilter/core.c
+--- linux-3.9.1/net/netfilter/core.c 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/core.c 2013-05-08 17:30:29.025286174 +0300
+@@ -188,9 +188,11 @@
ret = NF_DROP_GETERR(verdict);
if (ret == 0)
ret = -EPERM;
@@ -1371,10 +1376,10 @@ diff -uNr linux-3.5/net/netfilter/core.c linux-3.5-imq/net/netfilter/core.c
if (err < 0) {
if (err == -ECANCELED)
goto next_hook;
-diff -uNr linux-3.5/net/netfilter/Kconfig linux-3.5-imq/net/netfilter/Kconfig
---- linux-3.5/net/netfilter/Kconfig 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/netfilter/Kconfig 2012-07-25 12:31:59.722655161 +0300
-@@ -569,6 +569,18 @@
+diff -uNr linux-3.9.1/net/netfilter/Kconfig linux-3.9.1-imqmq/net/netfilter/Kconfig
+--- linux-3.9.1/net/netfilter/Kconfig 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/Kconfig 2013-05-08 17:30:29.025286174 +0300
+@@ -641,6 +641,18 @@
To compile it as a module, choose M here. If unsure, say N.
@@ -1393,20 +1398,20 @@ diff -uNr linux-3.5/net/netfilter/Kconfig linux-3.5-imq/net/netfilter/Kconfig
config NETFILTER_XT_TARGET_MARK
tristate '"MARK" target support'
depends on NETFILTER_ADVANCED
-diff -uNr linux-3.5/net/netfilter/Makefile linux-3.5-imq/net/netfilter/Makefile
---- linux-3.5/net/netfilter/Makefile 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/netfilter/Makefile 2012-07-25 12:32:28.966592115 +0300
-@@ -60,6 +60,7 @@
+diff -uNr linux-3.9.1/net/netfilter/Makefile linux-3.9.1-imqmq/net/netfilter/Makefile
+--- linux-3.9.1/net/netfilter/Makefile 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/Makefile 2013-05-08 17:30:29.025286174 +0300
+@@ -82,6 +82,7 @@
obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o
obj-$(CONFIG_NETFILTER_XT_TARGET_HMARK) += xt_HMARK.o
+obj-$(CONFIG_NETFILTER_XT_TARGET_IMQ) += xt_IMQ.o
obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
obj-$(CONFIG_NETFILTER_XT_TARGET_LOG) += xt_LOG.o
- obj-$(CONFIG_NETFILTER_XT_TARGET_NFLOG) += xt_NFLOG.o
-diff -uNr linux-3.5/net/netfilter/nf_internals.h linux-3.5-imq/net/netfilter/nf_internals.h
---- linux-3.5/net/netfilter/nf_internals.h 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/netfilter/nf_internals.h 2012-07-25 12:31:59.725988564 +0300
+ obj-$(CONFIG_NETFILTER_XT_TARGET_NETMAP) += xt_NETMAP.o
+diff -uNr linux-3.9.1/net/netfilter/nf_internals.h linux-3.9.1-imqmq/net/netfilter/nf_internals.h
+--- linux-3.9.1/net/netfilter/nf_internals.h 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/nf_internals.h 2013-05-08 17:30:29.025286174 +0300
@@ -29,7 +29,7 @@
struct net_device *indev,
struct net_device *outdev,
@@ -1416,46 +1421,43 @@ diff -uNr linux-3.5/net/netfilter/nf_internals.h linux-3.5-imq/net/netfilter/nf_
extern int __init netfilter_queue_init(void);
/* nf_log.c */
-diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queue.c
---- linux-3.5/net/netfilter/nf_queue.c 2012-07-21 23:58:29.000000000 +0300
-+++ linux-3.5-imq/net/netfilter/nf_queue.c 2012-07-25 12:31:59.725988564 +0300
-@@ -22,6 +22,26 @@
-
- static DEFINE_MUTEX(queue_handler_mutex);
+diff -uNr linux-3.9.1/net/netfilter/nf_queue.c linux-3.9.1-imqmq/net/netfilter/nf_queue.c
+--- linux-3.9.1/net/netfilter/nf_queue.c 2013-05-08 06:58:03.000000000 +0300
++++ linux-3.9.1-imqmq/net/netfilter/nf_queue.c 2013-05-08 17:30:29.025286174 +0300
+@@ -22,6 +22,23 @@
+ */
+ static const struct nf_queue_handler __rcu *queue_handler __read_mostly;
+#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
-+static const struct nf_queue_handler *queue_imq_handler;
++static const struct nf_queue_handler __rcu *queue_imq_handler __read_mostly;
+
+void nf_register_queue_imq_handler(const struct nf_queue_handler *qh)
+{
-+ mutex_lock(&queue_handler_mutex);
+ rcu_assign_pointer(queue_imq_handler, qh);
-+ mutex_unlock(&queue_handler_mutex);
+}
+EXPORT_SYMBOL_GPL(nf_register_queue_imq_handler);
+
+void nf_unregister_queue_imq_handler(void)
+{
-+ mutex_lock(&queue_handler_mutex);
-+ rcu_assign_pointer(queue_imq_handler, NULL);
-+ mutex_unlock(&queue_handler_mutex);
++ RCU_INIT_POINTER(queue_imq_handler, NULL);
++ synchronize_rcu();
+}
+EXPORT_SYMBOL_GPL(nf_unregister_queue_imq_handler);
+#endif
+
/* return EBUSY when somebody else is registered, return EEXIST if the
* same handler is registered, return 0 in case of success. */
- int nf_register_queue_handler(u_int8_t pf, const struct nf_queue_handler *qh)
-@@ -92,7 +112,7 @@
+ void nf_register_queue_handler(const struct nf_queue_handler *qh)
+@@ -40,7 +57,7 @@
}
- EXPORT_SYMBOL_GPL(nf_unregister_queue_handlers);
+ EXPORT_SYMBOL(nf_unregister_queue_handler);
-static void nf_queue_entry_release_refs(struct nf_queue_entry *entry)
+void nf_queue_entry_release_refs(struct nf_queue_entry *entry)
{
/* Release those devices we held, or Alexey will kill me. */
if (entry->indev)
-@@ -112,6 +132,7 @@
+@@ -60,6 +77,7 @@
/* Drop reference to owner of hook which queued us. */
module_put(entry->elem->owner);
}
@@ -1463,7 +1465,7 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
/*
* Any packet that leaves via this function must come back
-@@ -123,7 +144,8 @@
+@@ -71,7 +89,8 @@
struct net_device *indev,
struct net_device *outdev,
int (*okfn)(struct sk_buff *),
@@ -1473,7 +1475,7 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
{
int status = -ENOENT;
struct nf_queue_entry *entry = NULL;
-@@ -137,7 +159,17 @@
+@@ -85,7 +104,17 @@
/* QUEUE == DROP if no one is waiting, to be safe. */
rcu_read_lock();
@@ -1492,7 +1494,7 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
if (!qh) {
status = -ESRCH;
goto err_unlock;
-@@ -230,7 +262,8 @@
+@@ -178,7 +207,8 @@
struct net_device *indev,
struct net_device *outdev,
int (*okfn)(struct sk_buff *),
@@ -1502,7 +1504,7 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
{
struct sk_buff *segs;
int err = -EINVAL;
-@@ -238,7 +271,7 @@
+@@ -186,7 +216,7 @@
if (!skb_is_gso(skb))
return __nf_queue(skb, elem, pf, hook, indev, outdev, okfn,
@@ -1511,7 +1513,7 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
switch (pf) {
case NFPROTO_IPV4:
-@@ -266,7 +299,7 @@
+@@ -214,7 +244,7 @@
if (err == 0) {
nf_bridge_adjust_segmented_data(segs);
err = __nf_queue(segs, elem, pf, hook, indev,
@@ -1520,7 +1522,7 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
}
if (err == 0)
queued++;
-@@ -323,9 +356,11 @@
+@@ -271,9 +301,11 @@
local_bh_enable();
break;
case NF_QUEUE:
@@ -1533,10 +1535,10 @@ diff -uNr linux-3.5/net/netfilter/nf_queue.c linux-3.5-imq/net/netfilter/nf_queu
if (err < 0) {
if (err == -ECANCELED)
goto next_hook;
-diff -uNr linux-3.5/net/netfilter/xt_IMQ.c linux-3.5-imq/net/netfilter/xt_IMQ.c
---- linux-3.5/net/netfilter/xt_IMQ.c 1970-01-01 02:00:00.000000000 +0200
-+++ linux-3.5-imq/net/netfilter/xt_IMQ.c 2012-07-25 12:31:59.725988564 +0300
-@@ -0,0 +1,74 @@
+diff -uNr linux-3.9.1/net/netfilter/xt_IMQ.c linux-3.9.1-imqmq/net/netfilter/xt_IMQ.c
+--- linux-3.9.1/net/netfilter/xt_IMQ.c 1970-01-01 02:00:00.000000000 +0200
++++ linux-3.9.1-imqmq/net/netfilter/xt_IMQ.c 2013-05-08 17:30:29.025286174 +0300
+@@ -0,0 +1,72 @@
+/*
+ * This target marks packets to be enqueued to an imq device
+ */
@@ -1561,9 +1563,8 @@ diff -uNr linux-3.5/net/netfilter/xt_IMQ.c linux-3.5-imq/net/netfilter/xt_IMQ.c
+ struct xt_imq_info *mr = par->targinfo;
+
+ if (mr->todev > IMQ_MAX_DEVS - 1) {
-+ printk(KERN_WARNING
-+ "IMQ: invalid device specified, highest is %u\n",
-+ IMQ_MAX_DEVS - 1);
++ pr_warn("IMQ: invalid device specified, highest is %u\n",
++ IMQ_MAX_DEVS - 1);
+ return -EINVAL;
+ }
+
@@ -1605,8 +1606,7 @@ diff -uNr linux-3.5/net/netfilter/xt_IMQ.c linux-3.5-imq/net/netfilter/xt_IMQ.c
+module_exit(imq_fini);
+
+MODULE_AUTHOR("http://www.linuximq.net");
-+MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. "
-+ "See http://www.linuximq.net/ for more information.");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See http://www.linuximq.net/ for more information.");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("ipt_IMQ");
+MODULE_ALIAS("ip6t_IMQ");
diff --git a/kernel-small_fixes.patch b/kernel-small_fixes.patch
index ebdc93f..392d121 100644
--- a/kernel-small_fixes.patch
+++ b/kernel-small_fixes.patch
@@ -31,21 +31,18 @@ diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek
index 7a0c800..ec5ebbb 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
-@@ -4103,6 +4103,14 @@ rtl8169_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
- /* Get MAC address */
+@@ -6927,6 +6927,14 @@ rtl_init_one(struct pci_dev *pdev, const
for (i = 0; i < ETH_ALEN; i++)
dev->dev_addr[i] = RTL_R8(MAC0 + i);
-+
+
+ if (!is_valid_ether_addr(dev->dev_addr)) {
+ /* Report it and use a random ethernet address instead */
+ netdev_err(dev, "Invalid MAC address: %pM\n", dev->dev_addr);
+ random_ether_addr(dev->dev_addr);
+ netdev_info(dev, "Using random MAC address: %pM\n",
-+ dev->dev_addr);
++ dev->dev_addr);
+ }
- memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
-
++
SET_ETHTOOL_OPS(dev, &rtl8169_ethtool_ops);
---
-1.7.7.3
-
+ dev->watchdog_timeo = RTL8169_TX_TIMEOUT;
+
diff --git a/kernel-virtio-gl-accel.patch b/kernel-virtio-gl-accel.patch
index fbd282a..4a87616 100644
--- a/kernel-virtio-gl-accel.patch
+++ b/kernel-virtio-gl-accel.patch
@@ -4,8 +4,8 @@ index 30879df..35699a0 100644
--- a/drivers/gpu/Makefile
+++ b/drivers/gpu/Makefile
@@ -1 +1 @@
--obj-y += drm/ vga/ stub/
-+obj-y += drm/ vga/ stub/ misc/
+-obj-y += drm/ vga/
++obj-y += drm/ vga/ misc/
diff --git a/drivers/gpu/misc/Kconfig b/drivers/gpu/misc/Kconfig
new file mode 100644
index 0000000..50043d3
diff --git a/ovl01-vfs-add-i_op-dentry_open.patch b/ovl01-vfs-add-i_op-dentry_open.patch
index b4fd81a..650822b 100644
--- a/ovl01-vfs-add-i_op-dentry_open.patch
+++ b/ovl01-vfs-add-i_op-dentry_open.patch
@@ -86,15 +86,15 @@ Index: linux-3.6-rc7-master/fs/open.c
--- linux-3.6-rc7-master.orig/fs/open.c 2012-09-28 13:36:40.000000000 +0200
+++ linux-3.6-rc7-master/fs/open.c 2012-09-28 13:36:47.000000000 +0200
@@ -787,8 +787,7 @@ struct file *dentry_open(const struct pa
- return ERR_PTR(error);
-
- f->f_flags = flags;
-- f->f_path = *path;
-- error = do_dentry_open(f, NULL, cred);
-+ error = vfs_open(path, f, cred);
- if (!error) {
- error = open_check_o_direct(f);
- if (error) {
+ f = get_empty_filp();
+ if (!IS_ERR(f)) {
+ f->f_flags = flags;
+- f->f_path = *path;
+- error = do_dentry_open(f, NULL, cred);
++ error = vfs_open(path, f, cred);
+ if (!error) {
+ /* from now on we need fput() to dispose of f */
+ error = open_check_o_direct(f);
@@ -803,6 +802,26 @@ struct file *dentry_open(const struct pa
}
EXPORT_SYMBOL(dentry_open);
@@ -126,14 +126,14 @@ Index: linux-3.6-rc7-master/include/linux/fs.h
===================================================================
--- linux-3.6-rc7-master.orig/include/linux/fs.h 2012-09-28 13:36:40.000000000 +0200
+++ linux-3.6-rc7-master/include/linux/fs.h 2012-09-28 13:36:47.000000000 +0200
-@@ -1843,6 +1843,7 @@ struct inode_operations {
+@@ -1573,6 +1573,7 @@ struct inode_operations {
int (*atomic_open)(struct inode *, struct dentry *,
struct file *, unsigned open_flag,
umode_t create_mode, int *opened);
+ int (*dentry_open)(struct dentry *, struct file *, const struct cred *);
} ____cacheline_aligned;
- struct seq_file;
+ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
@@ -2211,6 +2212,7 @@ extern long do_sys_open(int dfd, const c
extern struct file *filp_open(const char *, int, umode_t);
extern struct file *file_open_root(struct dentry *, struct vfsmount *,
diff --git a/ovl04-overlay-filesystem.patch b/ovl04-overlay-filesystem.patch
index 885d518..cde166b 100644
--- a/ovl04-overlay-filesystem.patch
+++ b/ovl04-overlay-filesystem.patch
@@ -95,23 +95,19 @@ Signed-off-by: Miklos Szeredi <mszeredi at suse.cz>
create mode 100644 fs/overlayfs/readdir.c
create mode 100644 fs/overlayfs/super.c
-Index: linux-3.6-rc7-master/fs/Kconfig
-===================================================================
---- linux-3.6-rc7-master.orig/fs/Kconfig 2012-09-28 13:34:44.000000000 +0200
-+++ linux-3.6-rc7-master/fs/Kconfig 2012-09-28 13:36:53.000000000 +0200
+--- a/fs/Kconfig
++++ b/fs/Kconfig
@@ -70,6 +70,7 @@ source "fs/quota/Kconfig"
source "fs/autofs4/Kconfig"
source "fs/fuse/Kconfig"
+source "fs/overlayfs/Kconfig"
- config CUSE
- tristate "Character device in Userspace support"
-Index: linux-3.6-rc7-master/fs/Makefile
-===================================================================
---- linux-3.6-rc7-master.orig/fs/Makefile 2012-09-28 13:34:44.000000000 +0200
-+++ linux-3.6-rc7-master/fs/Makefile 2012-09-28 13:36:53.000000000 +0200
-@@ -109,6 +109,7 @@ obj-$(CONFIG_QNX6FS_FS) += qnx6/
+ config GENERIC_ACL
+ bool
+--- a/fs/Makefile
++++ b/fs/Makefile
+@@ -110,6 +110,7 @@ obj-$(CONFIG_QNX6FS_FS) += qnx6/
obj-$(CONFIG_AUTOFS4_FS) += autofs4/
obj-$(CONFIG_ADFS_FS) += adfs/
obj-$(CONFIG_FUSE_FS) += fuse/
@@ -119,19 +115,15 @@ Index: linux-3.6-rc7-master/fs/Makefile
obj-$(CONFIG_UDF_FS) += udf/
obj-$(CONFIG_SUN_OPENPROMFS) += openpromfs/
obj-$(CONFIG_OMFS_FS) += omfs/
-Index: linux-3.6-rc7-master/fs/overlayfs/Kconfig
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/Kconfig 2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/Kconfig
@@ -0,0 +1,4 @@
+config OVERLAYFS_FS
+ tristate "Overlay filesystem support"
+ help
+ Add support for overlay filesystem.
-Index: linux-3.6-rc7-master/fs/overlayfs/Makefile
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/Makefile 2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/Makefile
@@ -0,0 +1,7 @@
+#
+# Makefile for the overlay filesystem.
@@ -140,10 +132,8 @@ Index: linux-3.6-rc7-master/fs/overlayfs/Makefile
+obj-$(CONFIG_OVERLAYFS_FS) += overlayfs.o
+
+overlayfs-objs := super.o inode.o dir.o readdir.o copy_up.o
-Index: linux-3.6-rc7-master/fs/overlayfs/copy_up.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/copy_up.c 2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/copy_up.c
@@ -0,0 +1,385 @@
+/*
+ *
@@ -409,7 +399,7 @@ Index: linux-3.6-rc7-master/fs/overlayfs/copy_up.c
+ ovl_path_upper(parent, &parentpath);
+ upperdir = parentpath.dentry;
+
-+ err = vfs_getattr(parentpath.mnt, parentpath.dentry, &pstat);
++ err = vfs_getattr(&parentpath, &pstat);
+ if (err)
+ return err;
+
@@ -493,7 +483,7 @@ Index: linux-3.6-rc7-master/fs/overlayfs/copy_up.c
+ }
+
+ ovl_path_lower(next, &lowerpath);
-+ err = vfs_getattr(lowerpath.mnt, lowerpath.dentry, &stat);
++ err = vfs_getattr(&lowerpath, &stat);
+ if (!err)
+ err = ovl_copy_up_one(parent, next, &lowerpath, &stat);
+
@@ -517,7 +507,7 @@ Index: linux-3.6-rc7-master/fs/overlayfs/copy_up.c
+ goto out_dput_parent;
+
+ ovl_path_lower(dentry, &lowerpath);
-+ err = vfs_getattr(lowerpath.mnt, lowerpath.dentry, &stat);
++ err = vfs_getattr(&lowerpath, &stat);
+ if (err)
+ goto out_dput_parent;
+
@@ -530,10 +520,8 @@ Index: linux-3.6-rc7-master/fs/overlayfs/copy_up.c
+ dput(parent);
+ return err;
+}
-Index: linux-3.6-rc7-master/fs/overlayfs/dir.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/dir.c 2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/dir.c
@@ -0,0 +1,597 @@
+/*
+ *
@@ -784,7 +772,7 @@ Index: linux-3.6-rc7-master/fs/overlayfs/dir.c
+ struct path realpath;
+
+ type = ovl_path_real(dentry, &realpath);
-+ err = vfs_getattr(realpath.mnt, realpath.dentry, stat);
++ err = vfs_getattr(&realpath, stat);
+ if (err)
+ return err;
+
@@ -1132,10 +1120,8 @@ Index: linux-3.6-rc7-master/fs/overlayfs/dir.c
+ .listxattr = ovl_listxattr,
+ .removexattr = ovl_removexattr,
+};
-Index: linux-3.6-rc7-master/fs/overlayfs/inode.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/inode.c 2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/inode.c
@@ -0,0 +1,379 @@
+/*
+ *
@@ -1181,7 +1167,7 @@ Index: linux-3.6-rc7-master/fs/overlayfs/inode.c
+ struct path realpath;
+
+ ovl_path_real(dentry, &realpath);
-+ return vfs_getattr(realpath.mnt, realpath.dentry, stat);
++ return vfs_getattr(&realpath, stat);
+}
+
+int ovl_permission(struct inode *inode, int mask)
@@ -1516,10 +1502,8 @@ Index: linux-3.6-rc7-master/fs/overlayfs/inode.c
+ return inode;
+
+}
-Index: linux-3.6-rc7-master/fs/overlayfs/overlayfs.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/overlayfs.h 2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/overlayfs.h
@@ -0,0 +1,64 @@
+/*
+ *
@@ -1585,10 +1569,8 @@ Index: linux-3.6-rc7-master/fs/overlayfs/overlayfs.h
+/* copy_up.c */
+int ovl_copy_up(struct dentry *dentry);
+int ovl_copy_up_truncate(struct dentry *dentry, loff_t size);
-Index: linux-3.6-rc7-master/fs/overlayfs/readdir.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/readdir.c 2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/readdir.c
@@ -0,0 +1,566 @@
+/*
+ *
@@ -2156,10 +2138,8 @@ Index: linux-3.6-rc7-master/fs/overlayfs/readdir.c
+
+ return err;
+}
-Index: linux-3.6-rc7-master/fs/overlayfs/super.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-3.6-rc7-master/fs/overlayfs/super.c 2012-09-28 13:36:53.000000000 +0200
+--- /dev/null
++++ b/fs/overlayfs/super.c
@@ -0,0 +1,611 @@
+/*
+ *
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/514e5daeee3608038b626c0e6ce96249c298c15e
More information about the pld-cvs-commit
mailing list