Author: mpagano
Date: 2014-06-18 18:06:24 +0000 (Wed, 18 Jun 2014)
New Revision: 2846

Added:
   genpatches-2.6/trunk/3.4/1093_linux-3.4.94.patch
Modified:
   genpatches-2.6/trunk/3.4/0000_README
Log:
Linux patch 3.4.94

Modified: genpatches-2.6/trunk/3.4/0000_README
===================================================================
--- genpatches-2.6/trunk/3.4/0000_README        2014-06-18 17:59:46 UTC (rev 
2845)
+++ genpatches-2.6/trunk/3.4/0000_README        2014-06-18 18:06:24 UTC (rev 
2846)
@@ -411,6 +411,10 @@
 From:   http://www.kernel.org
 Desc:   Linux 3.4.93
 
+Patch:  1093_linux-3.4.94.patch
+From:   http://www.kernel.org
+Desc:   Linux 3.4.94
+
 Patch:  1500_XATTR_USER_PREFIX.patch
 From:   https://bugs.gentoo.org/show_bug.cgi?id=470644
 Desc:   Support for namespace user.pax.* on tmpfs.

Added: genpatches-2.6/trunk/3.4/1093_linux-3.4.94.patch
===================================================================
--- genpatches-2.6/trunk/3.4/1093_linux-3.4.94.patch                            
(rev 0)
+++ genpatches-2.6/trunk/3.4/1093_linux-3.4.94.patch    2014-06-18 18:06:24 UTC 
(rev 2846)
@@ -0,0 +1,293 @@
+diff --git a/Makefile b/Makefile
+index 20f420096dfa..0864af4a683b 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,6 +1,6 @@
+ VERSION = 3
+ PATCHLEVEL = 4
+-SUBLEVEL = 93
++SUBLEVEL = 94
+ EXTRAVERSION =
+ NAME = Saber-toothed Squirrel
+ 
+diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
+index 6524c6e21896..694aeedcbf88 100644
+--- a/arch/powerpc/Makefile
++++ b/arch/powerpc/Makefile
+@@ -67,9 +67,11 @@ LDFLAGS_vmlinux-y := -Bstatic
+ LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie
+ LDFLAGS_vmlinux       := $(LDFLAGS_vmlinux-y)
+ 
++asinstr := $(call as-instr,lis 9$(comma)foo@high,-DHAVE_AS_ATHIGH=1)
++
+ CFLAGS-$(CONFIG_PPC64)        := -mminimal-toc -mtraceback=no -mcall-aixdesc
+ CFLAGS-$(CONFIG_PPC32)        := -ffixed-r2 -mmultiple
+-KBUILD_CPPFLAGS       += -Iarch/$(ARCH)
++KBUILD_CPPFLAGS       += -Iarch/$(ARCH) $(asinstr)
+ KBUILD_AFLAGS += -Iarch/$(ARCH)
+ KBUILD_CFLAGS += -msoft-float -pipe -Iarch/$(ARCH) $(CFLAGS-y)
+ CPP           = $(CC) -E $(KBUILD_CFLAGS)
+diff --git a/arch/powerpc/include/asm/ppc_asm.h 
b/arch/powerpc/include/asm/ppc_asm.h
+index 50f73aa2ba21..6f5a837431e9 100644
+--- a/arch/powerpc/include/asm/ppc_asm.h
++++ b/arch/powerpc/include/asm/ppc_asm.h
+@@ -294,11 +294,16 @@ n:
+  *      ld    rY,ADDROFF(name)(rX)
+  */
+ #ifdef __powerpc64__
++#ifdef HAVE_AS_ATHIGH
++#define __AS_ATHIGH high
++#else
++#define __AS_ATHIGH h
++#endif
+ #define LOAD_REG_IMMEDIATE(reg,expr)          \
+       lis     (reg),(expr)@highest;           \
+       ori     (reg),(reg),(expr)@higher;      \
+       rldicr  (reg),(reg),32,31;              \
+-      oris    (reg),(reg),(expr)@h;           \
++      oris    (reg),(reg),(expr)@__AS_ATHIGH; \
+       ori     (reg),(reg),(expr)@l;
+ 
+ #define LOAD_REG_ADDR(reg,name)                       \
+diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
+index ccd7b6711196..0e87baf8fcc2 100644
+--- a/drivers/ata/ahci.c
++++ b/drivers/ata/ahci.c
+@@ -441,6 +441,8 @@ static const struct pci_device_id ahci_pci_tbl[] = {
+         .driver_data = board_ahci_yes_fbs },
+       { PCI_DEVICE(0x1b4b, 0x9230),
+         .driver_data = board_ahci_yes_fbs },
++      { PCI_DEVICE(PCI_VENDOR_ID_TTI, 0x0642),
++        .driver_data = board_ahci_yes_fbs },
+ 
+       /* Promise */
+       { PCI_VDEVICE(PROMISE, 0x3f20), board_ahci },   /* PDC42819 */
+diff --git a/drivers/net/ethernet/mellanox/mlx4/en_cq.c 
b/drivers/net/ethernet/mellanox/mlx4/en_cq.c
+index 00b81272e314..174b622dcaef 100644
+--- a/drivers/net/ethernet/mellanox/mlx4/en_cq.c
++++ b/drivers/net/ethernet/mellanox/mlx4/en_cq.c
+@@ -55,7 +55,6 @@ int mlx4_en_create_cq(struct mlx4_en_priv *priv,
+ 
+       cq->ring = ring;
+       cq->is_tx = mode;
+-      spin_lock_init(&cq->lock);
+ 
+       err = mlx4_alloc_hwq_res(mdev->dev, &cq->wqres,
+                               cq->buf_size, 2 * PAGE_SIZE);
+diff --git a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c 
b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+index 31b455a49273..467a51171d47 100644
+--- a/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
++++ b/drivers/net/ethernet/mellanox/mlx4/en_netdev.c
+@@ -370,15 +370,11 @@ static void mlx4_en_netpoll(struct net_device *dev)
+ {
+       struct mlx4_en_priv *priv = netdev_priv(dev);
+       struct mlx4_en_cq *cq;
+-      unsigned long flags;
+       int i;
+ 
+       for (i = 0; i < priv->rx_ring_num; i++) {
+               cq = &priv->rx_cq[i];
+-              spin_lock_irqsave(&cq->lock, flags);
+-              napi_synchronize(&cq->napi);
+-              mlx4_en_process_rx_cq(dev, cq, 0);
+-              spin_unlock_irqrestore(&cq->lock, flags);
++              napi_schedule(&cq->napi);
+       }
+ }
+ #endif
+diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h 
b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
+index d69fee41f24a..8df3c4be3ff1 100644
+--- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
++++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
+@@ -301,7 +301,6 @@ struct mlx4_en_cq {
+       struct mlx4_cq          mcq;
+       struct mlx4_hwq_resources wqres;
+       int                     ring;
+-      spinlock_t              lock;
+       struct net_device      *dev;
+       struct napi_struct      napi;
+       /* Per-core Tx cq processing support */
+diff --git a/drivers/scsi/megaraid/megaraid_sas.h 
b/drivers/scsi/megaraid/megaraid_sas.h
+index e5f416f8042d..1a7955a39070 100644
+--- a/drivers/scsi/megaraid/megaraid_sas.h
++++ b/drivers/scsi/megaraid/megaraid_sas.h
+@@ -1294,7 +1294,6 @@ struct megasas_instance {
+       u32 *reply_queue;
+       dma_addr_t reply_queue_h;
+ 
+-      unsigned long base_addr;
+       struct megasas_register_set __iomem *reg_set;
+ 
+       struct megasas_pd_list          pd_list[MEGASAS_MAX_PD];
+diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c 
b/drivers/scsi/megaraid/megaraid_sas_base.c
+index 79261628d067..618870033dd0 100644
+--- a/drivers/scsi/megaraid/megaraid_sas_base.c
++++ b/drivers/scsi/megaraid/megaraid_sas_base.c
+@@ -3445,6 +3445,7 @@ static int megasas_init_fw(struct megasas_instance 
*instance)
+       u32 max_sectors_1;
+       u32 max_sectors_2;
+       u32 tmp_sectors, msix_enable;
++      resource_size_t base_addr;
+       struct megasas_register_set __iomem *reg_set;
+       struct megasas_ctrl_info *ctrl_info;
+       unsigned long bar_list;
+@@ -3453,14 +3454,14 @@ static int megasas_init_fw(struct megasas_instance 
*instance)
+       /* Find first memory bar */
+       bar_list = pci_select_bars(instance->pdev, IORESOURCE_MEM);
+       instance->bar = find_first_bit(&bar_list, sizeof(unsigned long));
+-      instance->base_addr = pci_resource_start(instance->pdev, instance->bar);
+       if (pci_request_selected_regions(instance->pdev, instance->bar,
+                                        "megasas: LSI")) {
+               printk(KERN_DEBUG "megasas: IO memory region busy!\n");
+               return -EBUSY;
+       }
+ 
+-      instance->reg_set = ioremap_nocache(instance->base_addr, 8192);
++      base_addr = pci_resource_start(instance->pdev, instance->bar);
++      instance->reg_set = ioremap_nocache(base_addr, 8192);
+ 
+       if (!instance->reg_set) {
+               printk(KERN_DEBUG "megasas: Failed to map IO mem\n");
+diff --git a/drivers/staging/zram/zram_sysfs.c 
b/drivers/staging/zram/zram_sysfs.c
+index 826653fff70e..aafcf0330014 100644
+--- a/drivers/staging/zram/zram_sysfs.c
++++ b/drivers/staging/zram/zram_sysfs.c
+@@ -99,18 +99,23 @@ static ssize_t reset_store(struct device *dev,
+               return -ENOMEM;
+ 
+       /* Do not reset an active device! */
+-      if (bdev->bd_holders)
+-              return -EBUSY;
++      if (bdev->bd_holders) {
++              ret = -EBUSY;
++              goto out;
++      }
+ 
+       ret = kstrtou16(buf, 10, &do_reset);
+       if (ret)
+-              return ret;
++              goto out;
+ 
+-      if (!do_reset)
+-              return -EINVAL;
++      if (!do_reset) {
++              ret = -EINVAL;
++              goto out;
++      }
+ 
+       /* Make sure all pending I/O is finished */
+       fsync_bdev(bdev);
++      bdput(bdev);
+ 
+       down_write(&zram->init_lock);
+       if (zram->init_done)
+@@ -118,6 +123,10 @@ static ssize_t reset_store(struct device *dev,
+       up_write(&zram->init_lock);
+ 
+       return len;
++
++out:
++      bdput(bdev);
++      return ret;
+ }
+ 
+ static ssize_t num_reads_show(struct device *dev,
+@@ -188,10 +197,12 @@ static ssize_t mem_used_total_show(struct device *dev,
+       u64 val = 0;
+       struct zram *zram = dev_to_zram(dev);
+ 
++      down_read(&zram->init_lock);
+       if (zram->init_done) {
+               val = zs_get_total_size_bytes(zram->mem_pool) +
+                       ((u64)(zram->stats.pages_expand) << PAGE_SHIFT);
+       }
++      up_read(&zram->init_lock);
+ 
+       return sprintf(buf, "%llu\n", val);
+ }
+diff --git a/kernel/auditsc.c b/kernel/auditsc.c
+index af1de0f34eae..549071209258 100644
+--- a/kernel/auditsc.c
++++ b/kernel/auditsc.c
+@@ -868,6 +868,22 @@ static enum audit_state audit_filter_task(struct 
task_struct *tsk, char **key)
+       return AUDIT_BUILD_CONTEXT;
+ }
+ 
++static int audit_in_mask(const struct audit_krule *rule, unsigned long val)
++{
++      int word, bit;
++
++      if (val > 0xffffffff)
++              return false;
++
++      word = AUDIT_WORD(val);
++      if (word >= AUDIT_BITMASK_SIZE)
++              return false;
++
++      bit = AUDIT_BIT(val);
++
++      return rule->mask[word] & bit;
++}
++
+ /* At syscall entry and exit time, this filter is called if the
+  * audit_state is not low enough that auditing cannot take place, but is
+  * also not high enough that we already know we have to write an audit
+@@ -885,11 +901,8 @@ static enum audit_state audit_filter_syscall(struct 
task_struct *tsk,
+ 
+       rcu_read_lock();
+       if (!list_empty(list)) {
+-              int word = AUDIT_WORD(ctx->major);
+-              int bit  = AUDIT_BIT(ctx->major);
+-
+               list_for_each_entry_rcu(e, list, list) {
+-                      if ((e->rule.mask[word] & bit) == bit &&
++                      if (audit_in_mask(&e->rule, ctx->major) &&
+                           audit_filter_rules(tsk, &e->rule, ctx, NULL,
+                                              &state, false)) {
+                               rcu_read_unlock();
+@@ -909,20 +922,16 @@ static enum audit_state audit_filter_syscall(struct 
task_struct *tsk,
+ static int audit_filter_inode_name(struct task_struct *tsk,
+                                  struct audit_names *n,
+                                  struct audit_context *ctx) {
+-      int word, bit;
+       int h = audit_hash_ino((u32)n->ino);
+       struct list_head *list = &audit_inode_hash[h];
+       struct audit_entry *e;
+       enum audit_state state;
+ 
+-      word = AUDIT_WORD(ctx->major);
+-      bit  = AUDIT_BIT(ctx->major);
+-
+       if (list_empty(list))
+               return 0;
+ 
+       list_for_each_entry_rcu(e, list, list) {
+-              if ((e->rule.mask[word] & bit) == bit &&
++              if (audit_in_mask(&e->rule, ctx->major) &&
+                   audit_filter_rules(tsk, &e->rule, ctx, n, &state, false)) {
+                       ctx->current_state = state;
+                       return 1;
+diff --git a/net/ipv4/netfilter/nf_defrag_ipv4.c 
b/net/ipv4/netfilter/nf_defrag_ipv4.c
+index 9bb1b8a37a22..010288fdcc90 100644
+--- a/net/ipv4/netfilter/nf_defrag_ipv4.c
++++ b/net/ipv4/netfilter/nf_defrag_ipv4.c
+@@ -22,7 +22,6 @@
+ #endif
+ #include <net/netfilter/nf_conntrack_zones.h>
+ 
+-/* Returns new sk_buff, or NULL */
+ static int nf_ct_ipv4_gather_frags(struct sk_buff *skb, u_int32_t user)
+ {
+       int err;
+@@ -33,8 +32,10 @@ static int nf_ct_ipv4_gather_frags(struct sk_buff *skb, 
u_int32_t user)
+       err = ip_defrag(skb, user);
+       local_bh_enable();
+ 
+-      if (!err)
++      if (!err) {
+               ip_send_check(ip_hdr(skb));
++              skb->local_df = 1;
++      }
+ 
+       return err;
+ }


Reply via email to