mirror of
https://github.com/Fishwaldo/build.git
synced 2025-03-26 16:51:48 +00:00
291 lines
9.2 KiB
Diff
291 lines
9.2 KiB
Diff
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,8 +197,10 @@ 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);
|
|
|
|
+ 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;
|
|
}
|