Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/nf-2.6
diff --git a/Documentation/arm/00-INDEX b/Documentation/arm/00-INDEX
index d753fe5..2c6a3b3 100644
--- a/Documentation/arm/00-INDEX
+++ b/Documentation/arm/00-INDEX
@@ -16,5 +16,7 @@
- Empeg documentation
mem_alignment
- alignment abort handler documentation
+memory.txt
+ - description of the virtual memory layout
nwfpe
- NWFPE floating point emulator documentation
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c
index 9a340e7..2b84f78 100644
--- a/arch/arm/kernel/ptrace.c
+++ b/arch/arm/kernel/ptrace.c
@@ -242,6 +242,15 @@
*/
long aluop1, aluop2, ccbit;
+ if ((insn & 0x0fffffd0) == 0x012fff10) {
+ /*
+ * bx or blx
+ */
+ alt = get_user_reg(child, insn & 15);
+ break;
+ }
+
+
if ((insn & 0xf000) != 0xf000)
break;
diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile
index dea48f6..4cdbb2d 100644
--- a/arch/sparc/Makefile
+++ b/arch/sparc/Makefile
@@ -34,7 +34,7 @@
# Renaming is done to avoid confusing pattern matching rules in 2.5.45 (multy-)
INIT_Y := $(patsubst %/, %/built-in.o, $(init-y))
CORE_Y := $(core-y)
-CORE_Y += kernel/ mm/ fs/ ipc/ security/ crypto/
+CORE_Y += kernel/ mm/ fs/ ipc/ security/ crypto/ block/
CORE_Y := $(patsubst %/, %/built-in.o, $(CORE_Y))
DRIVERS_Y := $(patsubst %/, %/built-in.o, $(drivers-y))
NET_Y := $(patsubst %/, %/built-in.o, $(net-y))
diff --git a/arch/sparc/lib/atomic32.c b/arch/sparc/lib/atomic32.c
index cb3cf0f..de84f85 100644
--- a/arch/sparc/lib/atomic32.c
+++ b/arch/sparc/lib/atomic32.c
@@ -66,7 +66,6 @@
return ret != u;
}
-static inline void atomic_clear_mask(unsigned long mask, unsigned long *addr)
/* Atomic operations are already serializing */
void atomic_set(atomic_t *v, int i)
{
diff --git a/drivers/char/watchdog/mpcore_wdt.c b/drivers/char/watchdog/mpcore_wdt.c
index 9defcf8..b4d8434 100644
--- a/drivers/char/watchdog/mpcore_wdt.c
+++ b/drivers/char/watchdog/mpcore_wdt.c
@@ -180,10 +180,6 @@
{
struct mpcore_wdt *wdt = file->private_data;
- /* Can't seek (pwrite) on this device */
- if (ppos != &file->f_pos)
- return -ESPIPE;
-
/*
* Refresh the timer.
*/
diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index d336a1d..b586a83 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -932,8 +932,9 @@
sg_init_one(&sg, (u8*)card->raw_scr, 8);
- err = mmc_wait_for_req(host, &mrq);
- if (err != MMC_ERR_NONE) {
+ mmc_wait_for_req(host, &mrq);
+
+ if (cmd.error != MMC_ERR_NONE || data.error != MMC_ERR_NONE) {
mmc_card_set_dead(card);
continue;
}
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c
index 8d92adf..8adca0c 100644
--- a/drivers/serial/8250_pci.c
+++ b/drivers/serial/8250_pci.c
@@ -516,7 +516,7 @@
break;
case 3:
offset = board->uart_offset;
- bar = 1;
+ /* FALLTHROUGH */
case 4: /* BAR 2 */
case 5: /* BAR 3 */
case 6: /* BAR 4 */
diff --git a/drivers/video/bw2.c b/drivers/video/bw2.c
index d3728f6..9248fe1 100644
--- a/drivers/video/bw2.c
+++ b/drivers/video/bw2.c
@@ -121,7 +121,6 @@
unsigned long fbsize;
struct sbus_dev *sdev;
- struct list_head list;
};
/**
diff --git a/drivers/video/cg14.c b/drivers/video/cg14.c
index 1bed50f..a561471 100644
--- a/drivers/video/cg14.c
+++ b/drivers/video/cg14.c
@@ -206,7 +206,6 @@
int mode;
int ramsize;
struct sbus_dev *sdev;
- struct list_head list;
};
static void __cg14_reset(struct cg14_par *par)
diff --git a/drivers/video/cg3.c b/drivers/video/cg3.c
index a1354e7..9fcd896 100644
--- a/drivers/video/cg3.c
+++ b/drivers/video/cg3.c
@@ -124,7 +124,6 @@
unsigned long fbsize;
struct sbus_dev *sdev;
- struct list_head list;
};
/**
diff --git a/drivers/video/cg6.c b/drivers/video/cg6.c
index 9debe64..050835e3 100644
--- a/drivers/video/cg6.c
+++ b/drivers/video/cg6.c
@@ -265,7 +265,6 @@
unsigned long fbsize;
struct sbus_dev *sdev;
- struct list_head list;
};
static int cg6_sync(struct fb_info *info)
@@ -612,7 +611,7 @@
struct cg6_par *par = (struct cg6_par *) info->par;
struct cg6_tec __iomem *tec = par->tec;
struct cg6_fbc __iomem *fbc = par->fbc;
- u32 rev, conf, mode, tmp;
+ u32 rev, conf, mode;
int i;
/* Turn off stuff in the Transform Engine. */
diff --git a/drivers/video/ffb.c b/drivers/video/ffb.c
index 2584dae..c4870d5 100644
--- a/drivers/video/ffb.c
+++ b/drivers/video/ffb.c
@@ -359,7 +359,6 @@
int prom_parent_node;
int dac_rev;
int board_type;
- struct list_head list;
};
static void FFBFifo(struct ffb_par *par, int n)
diff --git a/drivers/video/leo.c b/drivers/video/leo.c
index 376d4a1..494287f 100644
--- a/drivers/video/leo.c
+++ b/drivers/video/leo.c
@@ -197,7 +197,6 @@
unsigned long fbsize;
struct sbus_dev *sdev;
- struct list_head list;
};
static void leo_wait(struct leo_lx_krn __iomem *lx_krn)
diff --git a/drivers/video/p9100.c b/drivers/video/p9100.c
index 18bcda2..b251e75 100644
--- a/drivers/video/p9100.c
+++ b/drivers/video/p9100.c
@@ -140,7 +140,6 @@
unsigned long fbsize;
struct sbus_dev *sdev;
- struct list_head list;
};
/**
diff --git a/drivers/video/tcx.c b/drivers/video/tcx.c
index fe4f63f..2b27b44 100644
--- a/drivers/video/tcx.c
+++ b/drivers/video/tcx.c
@@ -125,7 +125,6 @@
int lowdepth;
struct sbus_dev *sdev;
- struct list_head list;
};
/* Reset control plane so that WID is 8-bit plane. */
@@ -444,7 +443,7 @@
tcx_reset(&all->info);
- tcx_blank(0, &all->info);
+ tcx_blank(FB_BLANK_UNBLANK, &all->info);
if (fb_alloc_cmap(&all->info.cmap, 256, 0)) {
printk(KERN_ERR "tcx: Could not allocate color map.\n");
diff --git a/include/asm-arm/arch-pxa/irq.h b/include/asm-arm/arch-pxa/irq.h
index d770e4b..48c60f5 100644
--- a/include/asm-arm/arch-pxa/irq.h
+++ b/include/asm-arm/arch-pxa/irq.h
@@ -12,8 +12,3 @@
#define fixup_irq(x) (x)
-/*
- * This prototype is required for cascading of multiplexed interrupts.
- * Since it doesn't exist elsewhere, we'll put it here for now.
- */
-extern void do_IRQ(int irq, struct pt_regs *regs);
diff --git a/include/asm-arm/io.h b/include/asm-arm/io.h
index ae69db4..0cf4d4f 100644
--- a/include/asm-arm/io.h
+++ b/include/asm-arm/io.h
@@ -42,9 +42,9 @@
extern void __raw_writesw(void __iomem *addr, const void *data, int wordlen);
extern void __raw_writesl(void __iomem *addr, const void *data, int longlen);
-extern void __raw_readsb(void __iomem *addr, void *data, int bytelen);
-extern void __raw_readsw(void __iomem *addr, void *data, int wordlen);
-extern void __raw_readsl(void __iomem *addr, void *data, int longlen);
+extern void __raw_readsb(const void __iomem *addr, void *data, int bytelen);
+extern void __raw_readsw(const void __iomem *addr, void *data, int wordlen);
+extern void __raw_readsl(const void __iomem *addr, void *data, int longlen);
#define __raw_writeb(v,a) (__chk_io_ptr(a), *(volatile unsigned char __force *)(a) = (v))
#define __raw_writew(v,a) (__chk_io_ptr(a), *(volatile unsigned short __force *)(a) = (v))
diff --git a/include/asm-arm/memory.h b/include/asm-arm/memory.h
index a547ee5..3e57236 100644
--- a/include/asm-arm/memory.h
+++ b/include/asm-arm/memory.h
@@ -122,6 +122,7 @@
*/
#define __pa(x) __virt_to_phys((unsigned long)(x))
#define __va(x) ((void *)__phys_to_virt((unsigned long)(x)))
+#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
/*
* Virtual <-> DMA view memory address translations
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 62c0e5b..8827389 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -992,13 +992,12 @@
/* sk = NULL, but it is safe for now. RST socket required. */
if (!ip6_dst_lookup(NULL, &buff->dst, &fl)) {
- if ((xfrm_lookup(&buff->dst, &fl, NULL, 0)) < 0)
+ if (xfrm_lookup(&buff->dst, &fl, NULL, 0) >= 0) {
+ ip6_xmit(NULL, buff, &fl, NULL, 0);
+ TCP_INC_STATS_BH(TCP_MIB_OUTSEGS);
+ TCP_INC_STATS_BH(TCP_MIB_OUTRSTS);
return;
-
- ip6_xmit(NULL, buff, &fl, NULL, 0);
- TCP_INC_STATS_BH(TCP_MIB_OUTSEGS);
- TCP_INC_STATS_BH(TCP_MIB_OUTRSTS);
- return;
+ }
}
kfree_skb(buff);
@@ -1057,11 +1056,11 @@
fl.fl_ip_sport = t1->source;
if (!ip6_dst_lookup(NULL, &buff->dst, &fl)) {
- if ((xfrm_lookup(&buff->dst, &fl, NULL, 0)) < 0)
+ if (xfrm_lookup(&buff->dst, &fl, NULL, 0) >= 0) {
+ ip6_xmit(NULL, buff, &fl, NULL, 0);
+ TCP_INC_STATS_BH(TCP_MIB_OUTSEGS);
return;
- ip6_xmit(NULL, buff, &fl, NULL, 0);
- TCP_INC_STATS_BH(TCP_MIB_OUTSEGS);
- return;
+ }
}
kfree_skb(buff);