]> git.pld-linux.org Git - packages/kernel.git/commitdiff
- preparations for 3.9.4; updated some patches (imq, overlayfs, virtio-gl-accel,...
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Fri, 31 May 2013 13:43:09 +0000 (15:43 +0200)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Fri, 31 May 2013 13:43:09 +0000 (15:43 +0200)
kernel-imq.patch
kernel-small_fixes.patch
kernel-virtio-gl-accel.patch
kernel.spec
ovl01-vfs-add-i_op-dentry_open.patch
ovl04-overlay-filesystem.patch

index ccc2014f2fc91a2fdb90977b68ddd6019478067a..857ba9a292e4fc52c2471354d0a1a71f1bc80ddc 100644 (file)
@@ -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@mbnet.fi>
 + *              - Port to 3.3
 + *
++ *             2012/12/12 - Jussi Kivilinna <jussi.kivilinna@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");
index ebdc93f473a065ec85d2d6100eb28933bc3c7828..392d1212b54690cc4ea01e399c80095dce704114 100644 (file)
@@ -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;
index fbd282acbb4c52d09edc3607cfc33629bce5bfad..4a876161dc3734bc663664a78b544ff9f8049604 100644 (file)
@@ -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
index f73c2c9435e24f3b82aef6617e5ed06a3bd42cfc..2204c41a80991be83b3620d126e7be29adca3f90 100644 (file)
@@ -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
index b4fd81a276c2c592caa39b32c73db5e9c40bf6e0..650822bece0af59174c34a42b12c52de55075272 100644 (file)
@@ -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 *,
index 885d5189fdf249992ba3d57ad5337ef0c4333f4d..cde166b564a80f1aea99264c8957bba22b7d25f8 100644 (file)
@@ -95,23 +95,19 @@ Signed-off-by: Miklos Szeredi <mszeredi@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 @@
 +/*
 + *
This page took 0.117331 seconds and 4 git commands to generate.