From d3af78f8a3c15c936e99e0955af3d40cf80ba62e Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Sat, 11 Mar 2006 12:47:54 +0900 Subject: [PATCH] --- yaml --- r: 21013 b: refs/heads/master c: 6971ed1fbbc80cae54e082aae153d5b063885d0a h: refs/heads/master i: 21011: e69b00ffff50b28cf59cc07301308f9acc823259 v: v3 --- [refs] | 2 +- trunk/Makefile | 2 +- trunk/arch/arm/Kconfig | 2 -- trunk/arch/arm/kernel/asm-offsets.c | 4 +-- trunk/arch/arm/kernel/ptrace.c | 14 +++++++--- trunk/arch/arm/lib/muldi3.S | 4 +-- trunk/arch/arm/mach-ixp4xx/Kconfig | 4 ++- trunk/arch/arm/mach-ixp4xx/nas100d-setup.c | 3 -- trunk/arch/arm/mm/cache-v6.S | 7 ++--- trunk/arch/arm/mm/flush.c | 6 ++-- trunk/drivers/net/3c509.c | 13 ++++----- trunk/drivers/net/Kconfig | 3 +- trunk/drivers/net/de620.c | 2 +- trunk/drivers/net/dl2k.c | 25 +++++++---------- trunk/drivers/net/e1000/e1000_main.c | 2 +- trunk/drivers/net/sky2.c | 32 ++++++++-------------- trunk/drivers/net/tg3.c | 2 ++ trunk/drivers/net/tulip/de2104x.c | 26 +++++++++--------- trunk/drivers/net/tun.c | 5 +--- trunk/drivers/scsi/ahci.c | 14 +++------- trunk/include/asm-arm/fpstate.h | 4 +-- trunk/include/asm-arm/thread_info.h | 2 +- trunk/net/bridge/netfilter/Makefile | 2 +- trunk/net/ipv4/tcp_output.c | 4 --- trunk/net/ipv6/addrconf.c | 2 +- 25 files changed, 76 insertions(+), 110 deletions(-) diff --git a/[refs] b/[refs] index 613ad14e5090..57c7bc04cb60 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7cafae52381395d24b83996eca7a7b53ab6a8827 +refs/heads/master: 6971ed1fbbc80cae54e082aae153d5b063885d0a diff --git a/trunk/Makefile b/trunk/Makefile index ac54c03c1b1a..65a0337bebe0 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 16 -EXTRAVERSION =-rc6 +EXTRAVERSION =-rc5 NAME=Sliding Snow Leopard # *DOCUMENTATION* diff --git a/trunk/arch/arm/Kconfig b/trunk/arch/arm/Kconfig index 32ba00bd0a2f..9f80fa502f8f 100644 --- a/trunk/arch/arm/Kconfig +++ b/trunk/arch/arm/Kconfig @@ -799,8 +799,6 @@ source "drivers/i2c/Kconfig" source "drivers/spi/Kconfig" -source "drivers/w1/Kconfig" - source "drivers/hwmon/Kconfig" #source "drivers/l3/Kconfig" diff --git a/trunk/arch/arm/kernel/asm-offsets.c b/trunk/arch/arm/kernel/asm-offsets.c index b324dcac1c56..0abbce8c70bc 100644 --- a/trunk/arch/arm/kernel/asm-offsets.c +++ b/trunk/arch/arm/kernel/asm-offsets.c @@ -57,9 +57,7 @@ int main(void) DEFINE(TI_TP_VALUE, offsetof(struct thread_info, tp_value)); DEFINE(TI_FPSTATE, offsetof(struct thread_info, fpstate)); DEFINE(TI_VFPSTATE, offsetof(struct thread_info, vfpstate)); -#ifdef CONFIG_IWMMXT - DEFINE(TI_IWMMXT_STATE, offsetof(struct thread_info, fpstate.iwmmxt)); -#endif + DEFINE(TI_IWMMXT_STATE, (offsetof(struct thread_info, fpstate)+4)&~7); BLANK(); DEFINE(S_R0, offsetof(struct pt_regs, ARM_r0)); DEFINE(S_R1, offsetof(struct pt_regs, ARM_r1)); diff --git a/trunk/arch/arm/kernel/ptrace.c b/trunk/arch/arm/kernel/ptrace.c index bc9e2f8ae326..7b6256bb590e 100644 --- a/trunk/arch/arm/kernel/ptrace.c +++ b/trunk/arch/arm/kernel/ptrace.c @@ -610,12 +610,15 @@ static int ptrace_setfpregs(struct task_struct *tsk, void __user *ufp) static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) { struct thread_info *thread = task_thread_info(tsk); + void *ptr = &thread->fpstate; if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) return -ENODATA; iwmmxt_task_disable(thread); /* force it to ram */ - return copy_to_user(ufp, &thread->fpstate.iwmmxt, IWMMXT_SIZE) - ? -EFAULT : 0; + /* The iWMMXt state is stored doubleword-aligned. */ + if (((long) ptr) & 4) + ptr += 4; + return copy_to_user(ufp, ptr, 0x98) ? -EFAULT : 0; } /* @@ -624,12 +627,15 @@ static int ptrace_getwmmxregs(struct task_struct *tsk, void __user *ufp) static int ptrace_setwmmxregs(struct task_struct *tsk, void __user *ufp) { struct thread_info *thread = task_thread_info(tsk); + void *ptr = &thread->fpstate; if (!test_ti_thread_flag(thread, TIF_USING_IWMMXT)) return -EACCES; iwmmxt_task_release(thread); /* force a reload */ - return copy_from_user(&thead->fpstate.iwmmxt, ufp, IWMMXT_SIZE) - ? -EFAULT : 0; + /* The iWMMXt state is stored doubleword-aligned. */ + if (((long) ptr) & 4) + ptr += 4; + return copy_from_user(ptr, ufp, 0x98) ? -EFAULT : 0; } #endif diff --git a/trunk/arch/arm/lib/muldi3.S b/trunk/arch/arm/lib/muldi3.S index d89c60615794..72d594184b8a 100644 --- a/trunk/arch/arm/lib/muldi3.S +++ b/trunk/arch/arm/lib/muldi3.S @@ -29,8 +29,8 @@ ENTRY(__aeabi_lmul) mul xh, yl, xh mla xh, xl, yh, xh - mov ip, xl, lsr #16 - mov yh, yl, lsr #16 + mov ip, xl, asr #16 + mov yh, yl, asr #16 bic xl, xl, ip, lsl #16 bic yl, yl, yh, lsl #16 mla xh, yh, ip, xh diff --git a/trunk/arch/arm/mach-ixp4xx/Kconfig b/trunk/arch/arm/mach-ixp4xx/Kconfig index 5bf50a2a737d..daadc78e271b 100644 --- a/trunk/arch/arm/mach-ixp4xx/Kconfig +++ b/trunk/arch/arm/mach-ixp4xx/Kconfig @@ -8,9 +8,11 @@ menu "Intel IXP4xx Implementation Options" comment "IXP4xx Platforms" +# This entry is placed on top because otherwise it would have +# been shown as a submenu. config MACH_NSLU2 bool - prompt "Linksys NSLU2" + prompt "NSLU2" if !(MACH_IXDP465 || MACH_IXDPG425 || ARCH_IXDP425 || ARCH_ADI_COYOTE || ARCH_AVILA || ARCH_IXCDP1100 || ARCH_PRPMC1100 || MACH_GTWX5715) help Say 'Y' here if you want your kernel to support Linksys's NSLU2 NAS device. For more information on this platform, diff --git a/trunk/arch/arm/mach-ixp4xx/nas100d-setup.c b/trunk/arch/arm/mach-ixp4xx/nas100d-setup.c index a3b4c6ac5708..856d56f3b2ae 100644 --- a/trunk/arch/arm/mach-ixp4xx/nas100d-setup.c +++ b/trunk/arch/arm/mach-ixp4xx/nas100d-setup.c @@ -113,9 +113,6 @@ static void __init nas100d_init(void) { ixp4xx_sys_init(); - /* gpio 14 and 15 are _not_ clocks */ - *IXP4XX_GPIO_GPCLKR = 0; - nas100d_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); nas100d_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1; diff --git a/trunk/arch/arm/mm/cache-v6.S b/trunk/arch/arm/mm/cache-v6.S index 2c6c2a7c05a0..d921c1024ae0 100644 --- a/trunk/arch/arm/mm/cache-v6.S +++ b/trunk/arch/arm/mm/cache-v6.S @@ -96,16 +96,15 @@ ENTRY(v6_coherent_user_range) #ifdef HARVARD_CACHE bic r0, r0, #CACHE_LINE_SIZE - 1 1: mcr p15, 0, r0, c7, c10, 1 @ clean D line + mcr p15, 0, r0, c7, c5, 1 @ invalidate I line add r0, r0, #CACHE_LINE_SIZE cmp r0, r1 blo 1b #endif - mov r0, #0 + mcr p15, 0, r0, c7, c5, 6 @ invalidate BTB #ifdef HARVARD_CACHE + mov r0, #0 mcr p15, 0, r0, c7, c10, 4 @ drain write buffer - mcr p15, 0, r0, c7, c5, 0 @ I+BTB cache invalidate -#else - mcr p15, 0, r0, c7, c5, 6 @ invalidate BTB #endif mov pc, lr diff --git a/trunk/arch/arm/mm/flush.c b/trunk/arch/arm/mm/flush.c index b103e56806bd..330695b6b19d 100644 --- a/trunk/arch/arm/mm/flush.c +++ b/trunk/arch/arm/mm/flush.c @@ -24,16 +24,14 @@ static void flush_pfn_alias(unsigned long pfn, unsigned long vaddr) { unsigned long to = ALIAS_FLUSH_START + (CACHE_COLOUR(vaddr) << PAGE_SHIFT); - const int zero = 0; set_pte(TOP_PTE(to), pfn_pte(pfn, PAGE_KERNEL)); flush_tlb_kernel_page(to); asm( "mcrr p15, 0, %1, %0, c14\n" - " mcr p15, 0, %2, c7, c10, 4\n" - " mcr p15, 0, %2, c7, c5, 0\n" + " mcrr p15, 0, %1, %0, c5\n" : - : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES), "r" (zero) + : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES) : "cc"); } diff --git a/trunk/drivers/net/3c509.c b/trunk/drivers/net/3c509.c index 830528dce0ca..824e430486c2 100644 --- a/trunk/drivers/net/3c509.c +++ b/trunk/drivers/net/3c509.c @@ -1574,7 +1574,6 @@ MODULE_LICENSE("GPL"); static int __init el3_init_module(void) { - int ret = 0; el3_cards = 0; if (debug >= 0) @@ -1590,16 +1589,14 @@ static int __init el3_init_module(void) } #ifdef CONFIG_EISA - ret = eisa_driver_register(&el3_eisa_driver); + if (eisa_driver_register (&el3_eisa_driver) < 0) { + eisa_driver_unregister (&el3_eisa_driver); + } #endif #ifdef CONFIG_MCA - { - int err = mca_register_driver(&el3_mca_driver); - if (ret == 0) - ret = err; - } + mca_register_driver(&el3_mca_driver); #endif - return ret; + return 0; } static void __exit el3_cleanup_module(void) diff --git a/trunk/drivers/net/Kconfig b/trunk/drivers/net/Kconfig index aa633fa95e64..e45a8f959719 100644 --- a/trunk/drivers/net/Kconfig +++ b/trunk/drivers/net/Kconfig @@ -1087,8 +1087,7 @@ config NE2000 without a specific driver are compatible with NE2000. If you have a PCI NE2000 card however, say N here and Y to "PCI - NE2000 and clone support" under "EISA, VLB, PCI and on board - controllers" below. If you have a NE2000 card and are running on + NE2000 support", above. If you have a NE2000 card and are running on an MCA system (a bus system used on some IBM PS/2 computers and laptops), say N here and Y to "NE/2 (ne2000 MCA version) support", below. diff --git a/trunk/drivers/net/de620.c b/trunk/drivers/net/de620.c index 22fc5b869a60..0069f5fa973a 100644 --- a/trunk/drivers/net/de620.c +++ b/trunk/drivers/net/de620.c @@ -1012,7 +1012,7 @@ static int __init read_eeprom(struct net_device *dev) #ifdef MODULE static struct net_device *de620_dev; -int __init init_module(void) +int init_module(void) { de620_dev = de620_probe(-1); if (IS_ERR(de620_dev)) diff --git a/trunk/drivers/net/dl2k.c b/trunk/drivers/net/dl2k.c index fb9dae302dcc..430c628279b3 100644 --- a/trunk/drivers/net/dl2k.c +++ b/trunk/drivers/net/dl2k.c @@ -50,8 +50,8 @@ */ #define DRV_NAME "D-Link DL2000-based linux driver" -#define DRV_VERSION "v1.17b" -#define DRV_RELDATE "2006/03/10" +#define DRV_VERSION "v1.17a" +#define DRV_RELDATE "2002/10/04" #include "dl2k.h" static char version[] __devinitdata = @@ -765,7 +765,7 @@ rio_free_tx (struct net_device *dev, int irq) break; skb = np->tx_skbuff[entry]; pci_unmap_single (np->pdev, - np->tx_ring[entry].fraginfo & 0xffffffffffff, + np->tx_ring[entry].fraginfo, skb->len, PCI_DMA_TODEVICE); if (irq) dev_kfree_skb_irq (skb); @@ -892,16 +892,14 @@ receive_packet (struct net_device *dev) /* Small skbuffs for short packets */ if (pkt_len > copy_thresh) { - pci_unmap_single (np->pdev, - desc->fraginfo & 0xffffffffffff, + pci_unmap_single (np->pdev, desc->fraginfo, np->rx_buf_sz, PCI_DMA_FROMDEVICE); skb_put (skb = np->rx_skbuff[entry], pkt_len); np->rx_skbuff[entry] = NULL; } else if ((skb = dev_alloc_skb (pkt_len + 2)) != NULL) { pci_dma_sync_single_for_cpu(np->pdev, - desc->fraginfo & - 0xffffffffffff, + desc->fraginfo, np->rx_buf_sz, PCI_DMA_FROMDEVICE); skb->dev = dev; @@ -912,8 +910,7 @@ receive_packet (struct net_device *dev) pkt_len, 0); skb_put (skb, pkt_len); pci_dma_sync_single_for_device(np->pdev, - desc->fraginfo & - 0xffffffffffff, + desc->fraginfo, np->rx_buf_sz, PCI_DMA_FROMDEVICE); } @@ -1799,9 +1796,8 @@ rio_close (struct net_device *dev) np->rx_ring[i].fraginfo = 0; skb = np->rx_skbuff[i]; if (skb) { - pci_unmap_single(np->pdev, - np->rx_ring[i].fraginfo & 0xffffffffffff, - skb->len, PCI_DMA_FROMDEVICE); + pci_unmap_single (np->pdev, np->rx_ring[i].fraginfo, + skb->len, PCI_DMA_FROMDEVICE); dev_kfree_skb (skb); np->rx_skbuff[i] = NULL; } @@ -1809,9 +1805,8 @@ rio_close (struct net_device *dev) for (i = 0; i < TX_RING_SIZE; i++) { skb = np->tx_skbuff[i]; if (skb) { - pci_unmap_single(np->pdev, - np->tx_ring[i].fraginfo & 0xffffffffffff, - skb->len, PCI_DMA_TODEVICE); + pci_unmap_single (np->pdev, np->tx_ring[i].fraginfo, + skb->len, PCI_DMA_TODEVICE); dev_kfree_skb (skb); np->tx_skbuff[i] = NULL; } diff --git a/trunk/drivers/net/e1000/e1000_main.c b/trunk/drivers/net/e1000/e1000_main.c index 4c4db96d0b7b..5b7d0f425af2 100644 --- a/trunk/drivers/net/e1000/e1000_main.c +++ b/trunk/drivers/net/e1000/e1000_main.c @@ -2917,7 +2917,7 @@ e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev) if (!__pskb_pull_tail(skb, pull_size)) { printk(KERN_ERR "__pskb_pull_tail failed.\n"); dev_kfree_skb_any(skb); - return NETDEV_TX_OK; + return -EFAULT; } len = skb->len - skb->data_len; } diff --git a/trunk/drivers/net/sky2.c b/trunk/drivers/net/sky2.c index 73260364cba3..72c1630977d6 100644 --- a/trunk/drivers/net/sky2.c +++ b/trunk/drivers/net/sky2.c @@ -74,7 +74,7 @@ #define TX_RING_SIZE 512 #define TX_DEF_PENDING (TX_RING_SIZE - 1) #define TX_MIN_PENDING 64 -#define MAX_SKB_TX_LE (4 + (sizeof(dma_addr_t)/sizeof(u32))*MAX_SKB_FRAGS) +#define MAX_SKB_TX_LE (4 + 2*MAX_SKB_FRAGS) #define STATUS_RING_SIZE 2048 /* 2 ports * (TX + 2*RX) */ #define STATUS_LE_BYTES (STATUS_RING_SIZE*sizeof(struct sky2_status_le)) @@ -622,8 +622,8 @@ static void sky2_mac_init(struct sky2_hw *hw, unsigned port) /* Configure Rx MAC FIFO */ sky2_write8(hw, SK_REG(port, RX_GMF_CTRL_T), GMF_RST_CLR); - sky2_write32(hw, SK_REG(port, RX_GMF_CTRL_T), - GMF_OPER_ON | GMF_RX_F_FL_ON); + sky2_write16(hw, SK_REG(port, RX_GMF_CTRL_T), + GMF_RX_CTRL_DEF); /* Flush Rx MAC FIFO on any flow control or error */ sky2_write16(hw, SK_REG(port, RX_GMF_FL_MSK), GMR_FS_ANY_ERR); @@ -995,10 +995,6 @@ static int sky2_rx_start(struct sky2_port *sky2) sky2_rx_add(sky2, re->mapaddr); } - /* Truncate oversize frames */ - sky2_write16(hw, SK_REG(sky2->port, RX_GMF_TR_THR), sky2->rx_bufsize - 8); - sky2_write32(hw, SK_REG(sky2->port, RX_GMF_CTRL_T), RX_TRUNC_ON); - /* Tell chip about available buffers */ sky2_write16(hw, Y2_QADDR(rxq, PREF_UNIT_PUT_IDX), sky2->rx_put); sky2->rx_last_put = sky2_read16(hw, Y2_QADDR(rxq, PREF_UNIT_PUT_IDX)); @@ -1149,7 +1145,6 @@ static int sky2_xmit_frame(struct sk_buff *skb, struct net_device *dev) struct sky2_tx_le *le = NULL; struct tx_ring_info *re; unsigned i, len; - int avail; dma_addr_t mapping; u32 addr64; u16 mss; @@ -1292,16 +1287,12 @@ static int sky2_xmit_frame(struct sk_buff *skb, struct net_device *dev) re->idx = sky2->tx_prod; le->ctrl |= EOP; - avail = tx_avail(sky2); - if (mss != 0 || avail < TX_MIN_PENDING) { - le->ctrl |= FRC_STAT; - if (avail <= MAX_SKB_TX_LE) - netif_stop_queue(dev); - } - sky2_put_idx(hw, txqaddr[sky2->port], sky2->tx_prod, &sky2->tx_last_put, TX_RING_SIZE); + if (tx_avail(sky2) <= MAX_SKB_TX_LE) + netif_stop_queue(dev); + out_unlock: spin_unlock(&sky2->tx_lock); @@ -1716,12 +1707,10 @@ static void sky2_tx_timeout(struct net_device *dev) #define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) -/* Want receive buffer size to be multiple of 64 bits - * and incl room for vlan and truncation - */ +/* Want receive buffer size to be multiple of 64 bits, and incl room for vlan */ static inline unsigned sky2_buf_size(int mtu) { - return roundup(mtu + ETH_HLEN + VLAN_HLEN, 8) + 8; + return roundup(mtu + ETH_HLEN + 4, 8); } static int sky2_change_mtu(struct net_device *dev, int new_mtu) @@ -1804,7 +1793,7 @@ static struct sk_buff *sky2_receive(struct sky2_port *sky2, if (!(status & GMR_FS_RX_OK)) goto resubmit; - if (length > sky2->netdev->mtu + ETH_HLEN) + if ((status >> 16) != length || length > sky2->rx_bufsize) goto oversize; if (length < copybreak) { @@ -3254,7 +3243,8 @@ static int __devinit sky2_probe(struct pci_dev *pdev, } } - err = request_irq(pdev->irq, sky2_intr, SA_SHIRQ, DRV_NAME, hw); + err = request_irq(pdev->irq, sky2_intr, SA_SHIRQ | SA_SAMPLE_RANDOM, + DRV_NAME, hw); if (err) { printk(KERN_ERR PFX "%s: cannot assign irq %d\n", pci_name(pdev), pdev->irq); diff --git a/trunk/drivers/net/tg3.c b/trunk/drivers/net/tg3.c index b8f1524da557..15545620ab0e 100644 --- a/trunk/drivers/net/tg3.c +++ b/trunk/drivers/net/tg3.c @@ -10543,6 +10543,8 @@ static char * __devinit tg3_bus_string(struct tg3 *tp, char *str) strcat(str, "66MHz"); else if (clock_ctrl == 6) strcat(str, "100MHz"); + else if (clock_ctrl == 7) + strcat(str, "133MHz"); } else { strcpy(str, "PCI:"); if (tp->tg3_flags & TG3_FLAG_PCI_HIGH_SPEED) diff --git a/trunk/drivers/net/tulip/de2104x.c b/trunk/drivers/net/tulip/de2104x.c index 2d0cfbceee22..d7fb3ffe06ac 100644 --- a/trunk/drivers/net/tulip/de2104x.c +++ b/trunk/drivers/net/tulip/de2104x.c @@ -1362,6 +1362,7 @@ static int de_open (struct net_device *dev) { struct de_private *de = dev->priv; int rc; + unsigned long flags; if (netif_msg_ifup(de)) printk(KERN_DEBUG "%s: enabling interface\n", dev->name); @@ -1375,20 +1376,18 @@ static int de_open (struct net_device *dev) return rc; } - dw32(IntrMask, 0); - - rc = request_irq(dev->irq, de_interrupt, SA_SHIRQ, dev->name, dev); + rc = de_init_hw(de); if (rc) { - printk(KERN_ERR "%s: IRQ %d request failure, err=%d\n", - dev->name, dev->irq, rc); + printk(KERN_ERR "%s: h/w init failure, err=%d\n", + dev->name, rc); goto err_out_free; } - rc = de_init_hw(de); + rc = request_irq(dev->irq, de_interrupt, SA_SHIRQ, dev->name, dev); if (rc) { - printk(KERN_ERR "%s: h/w init failure, err=%d\n", - dev->name, rc); - goto err_out_free_irq; + printk(KERN_ERR "%s: IRQ %d request failure, err=%d\n", + dev->name, dev->irq, rc); + goto err_out_hw; } netif_start_queue(dev); @@ -1396,8 +1395,11 @@ static int de_open (struct net_device *dev) return 0; -err_out_free_irq: - free_irq(dev->irq, dev); +err_out_hw: + spin_lock_irqsave(&de->lock, flags); + de_stop_hw(de); + spin_unlock_irqrestore(&de->lock, flags); + err_out_free: de_free_rings(de); return rc; @@ -1453,8 +1455,6 @@ static void de_tx_timeout (struct net_device *dev) synchronize_irq(dev->irq); de_clean_rings(de); - de_init_rings(de); - de_init_hw(de); netif_wake_queue(dev); diff --git a/trunk/drivers/net/tun.c b/trunk/drivers/net/tun.c index a1ed2d983740..50b8c6754b1e 100644 --- a/trunk/drivers/net/tun.c +++ b/trunk/drivers/net/tun.c @@ -249,11 +249,8 @@ static __inline__ ssize_t tun_get_user(struct tun_struct *tun, struct iovec *iv, if (align) skb_reserve(skb, align); - if (memcpy_fromiovec(skb_put(skb, len), iv, len)) { - tun->stats.rx_dropped++; - kfree_skb(skb); + if (memcpy_fromiovec(skb_put(skb, len), iv, len)) return -EFAULT; - } skb->dev = tun->dev; switch (tun->flags & TUN_TYPE_MASK) { diff --git a/trunk/drivers/scsi/ahci.c b/trunk/drivers/scsi/ahci.c index a800fb51168b..559ff7aae3f1 100644 --- a/trunk/drivers/scsi/ahci.c +++ b/trunk/drivers/scsi/ahci.c @@ -742,23 +742,17 @@ static irqreturn_t ahci_interrupt (int irq, void *dev_instance, struct pt_regs * struct ata_queued_cmd *qc; qc = ata_qc_from_tag(ap, ap->active_tag); if (!ahci_host_intr(ap, qc)) - if (ata_ratelimit()) { - struct pci_dev *pdev = - to_pci_dev(ap->host_set->dev); - dev_printk(KERN_WARNING, &pdev->dev, + if (ata_ratelimit()) + dev_printk(KERN_WARNING, host_set->dev, "unhandled interrupt on port %u\n", i); - } VPRINTK("port %u\n", i); } else { VPRINTK("port %u (no irq)\n", i); - if (ata_ratelimit()) { - struct pci_dev *pdev = - to_pci_dev(ap->host_set->dev); - dev_printk(KERN_WARNING, &pdev->dev, + if (ata_ratelimit()) + dev_printk(KERN_WARNING, host_set->dev, "interrupt on disabled port %u\n", i); - } } irq_ack |= (1 << i); diff --git a/trunk/include/asm-arm/fpstate.h b/trunk/include/asm-arm/fpstate.h index 6246bf83627d..f7430e3aa55d 100644 --- a/trunk/include/asm-arm/fpstate.h +++ b/trunk/include/asm-arm/fpstate.h @@ -55,10 +55,8 @@ struct fp_soft_struct { unsigned int save[FP_SOFT_SIZE]; /* undefined information */ }; -#define IWMMXT_SIZE 0x98 - struct iwmmxt_struct { - unsigned int save[IWMMXT_SIZE / sizeof(unsigned int)]; + unsigned int save[0x98/sizeof(int) + 1]; }; union fp_state { diff --git a/trunk/include/asm-arm/thread_info.h b/trunk/include/asm-arm/thread_info.h index cfbccb63c67b..33a33cbb6329 100644 --- a/trunk/include/asm-arm/thread_info.h +++ b/trunk/include/asm-arm/thread_info.h @@ -59,7 +59,7 @@ struct thread_info { struct cpu_context_save cpu_context; /* cpu context */ __u8 used_cp[16]; /* thread used copro */ unsigned long tp_value; - union fp_state fpstate __attribute__((aligned(8))); + union fp_state fpstate; union vfp_state vfpstate; struct restart_block restart_block; }; diff --git a/trunk/net/bridge/netfilter/Makefile b/trunk/net/bridge/netfilter/Makefile index 905087e0d485..8bf6d9f6e9d3 100644 --- a/trunk/net/bridge/netfilter/Makefile +++ b/trunk/net/bridge/netfilter/Makefile @@ -29,4 +29,4 @@ obj-$(CONFIG_BRIDGE_EBT_SNAT) += ebt_snat.o # watchers obj-$(CONFIG_BRIDGE_EBT_LOG) += ebt_log.o -obj-$(CONFIG_BRIDGE_EBT_ULOG) += ebt_ulog.o +obj-$(CONFIG_BRIDGE_EBT_LOG) += ebt_ulog.o diff --git a/trunk/net/ipv4/tcp_output.c b/trunk/net/ipv4/tcp_output.c index 9f498a6c8895..a7623ead39a8 100644 --- a/trunk/net/ipv4/tcp_output.c +++ b/trunk/net/ipv4/tcp_output.c @@ -1036,10 +1036,6 @@ static int tcp_tso_should_defer(struct sock *sk, struct tcp_sock *tp, struct sk_ limit = min(send_win, cong_win); - /* If a full-sized TSO skb can be sent, do it. */ - if (limit >= 65536) - return 0; - if (sysctl_tcp_tso_win_divisor) { u32 chunk = min(tp->snd_wnd, tp->snd_cwnd * tp->mss_cache); diff --git a/trunk/net/ipv6/addrconf.c b/trunk/net/ipv6/addrconf.c index 19727d941962..b7d8822c1be4 100644 --- a/trunk/net/ipv6/addrconf.c +++ b/trunk/net/ipv6/addrconf.c @@ -822,7 +822,7 @@ struct ipv6_saddr_score { int addr_type; unsigned int attrs; int matchlen; - int scope; + unsigned int scope; unsigned int rule; };