1. 26 6月, 2014 16 次提交
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · f40ede39
      Linus Torvalds 提交于
      Pull networking fixes from David Miller:
      
       1) Fix crash in ipvs tot_stats estimator, from Julian Anastasov.
      
       2) Fix OOPS in nf_nat on netns removal, from Florian Westphal.
      
       3) Really really really fix locking issues in slip and slcan tty write
          wakeups, from Tyler Hall.
      
       4) Fix checksum offloading in fec driver, from Fugang Duan.
      
       5) Off by one in BPF instruction limit test, from Kees Cook.
      
       6) Need to clear all TSO capability flags when doing software TSO in
          tg3 driver, from Prashant Sreedharan.
      
       7) Fix memory leak in vlan_reorder_header() error path, from Li
          RongQing.
      
       8) Fix various bugs in xen-netfront and xen-netback multiqueue support,
          from David Vrabel and Wei Liu.
      
       9) Fix deadlock in cxgb4 driver, from Li RongQing.
      
      10) Prevent double free of no-cache DST entries, from Eric Dumazet.
      
      11) Bad csum_start handling in skb_segment() leads to crashes when
          forwarding, from Tom Herbert.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (76 commits)
        net: fix setting csum_start in skb_segment()
        ipv4: fix dst race in sk_dst_get()
        net: filter: Use kcalloc/kmalloc_array to allocate arrays
        trivial: net: filter: Change kerneldoc parameter order
        trivial: net: filter: Fix typo in comment
        net: allwinner: emac: Add missing free_irq
        cxgb4: use dev_port to identify ports
        xen-netback: bookkeep number of active queues in our own module
        tg3: Change nvram command timeout value to 50ms
        cxgb4: Not need to hold the adap_rcu_lock lock when read adap_rcu_list
        be2net: fix qnq mode detection on VFs
        of: mdio: fixup of_phy_register_fixed_link parsing of new bindings
        at86rf230: fix irq setup
        net: phy: at803x: fix coccinelle warnings
        net/mlx4_core: Fix the error flow when probing with invalid VF configuration
        tulip: Poll link status more frequently for Comet chips
        net: huawei_cdc_ncm: increase command buffer size
        drivers: net: cpsw: fix dual EMAC stall when connected to same switch
        xen-netfront: recreate queues correctly when reconnecting
        xen-netfront: fix oops when disconnected from backend
        ...
      f40ede39
    • T
      net: fix setting csum_start in skb_segment() · de843723
      Tom Herbert 提交于
      Dave Jones reported that a crash is occurring in
      
      csum_partial
      tcp_gso_segment
      inet_gso_segment
      ? update_dl_migration
      skb_mac_gso_segment
      __skb_gso_segment
      dev_hard_start_xmit
      sch_direct_xmit
      __dev_queue_xmit
      ? dev_hard_start_xmit
      dev_queue_xmit
      ip_finish_output
      ? ip_output
      ip_output
      ip_forward_finish
      ip_forward
      ip_rcv_finish
      ip_rcv
      __netif_receive_skb_core
      ? __netif_receive_skb_core
      ? trace_hardirqs_on
      __netif_receive_skb
      netif_receive_skb_internal
      napi_gro_complete
      ? napi_gro_complete
      dev_gro_receive
      ? dev_gro_receive
      napi_gro_receive
      
      It looks like a likely culprit is that SKB_GSO_CB()->csum_start is
      not set correctly when doing non-scatter gather. We are using
      offset as opposed to doffset.
      Reported-by: NDave Jones <davej@redhat.com>
      Tested-by: NDave Jones <davej@redhat.com>
      Signed-off-by: NTom Herbert <therbert@google.com>
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Fixes: 7e2b10c1 ("net: Support for multiple checksums with gso")
      Acked-by: NTom Herbert <therbert@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      de843723
    • L
      Merge tag 'nfs-for-3.16-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · ec71feae
      Linus Torvalds 提交于
      Pull NFS client fixes from Trond Myklebust:
       "Highlights include:
      
         - Stable fix for a data corruption case due to incorrect cache
           validation
         - Fix a couple of false positive cache invalidations
         - Fix NFSv4 security negotiation issues"
      
      * tag 'nfs-for-3.16-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
        NFSv4: test SECINFO RPC_AUTH_GSS pseudoflavors for support
        NFS Return -EPERM if no supported or matching SECINFO flavor
        NFS check the return of nfs4_negotiate_security in nfs4_submount
        NFS: Don't mark the data cache as invalid if it has been flushed
        NFS: Clear NFS_INO_REVAL_PAGECACHE when we update the file size
        nfs: Fix cache_validity check in nfs_write_pageuptodate()
      ec71feae
    • E
      ipv4: fix dst race in sk_dst_get() · f8864972
      Eric Dumazet 提交于
      When IP route cache had been removed in linux-3.6, we broke assumption
      that dst entries were all freed after rcu grace period. DST_NOCACHE
      dst were supposed to be freed from dst_release(). But it appears
      we want to keep such dst around, either in UDP sockets or tunnels.
      
      In sk_dst_get() we need to make sure dst refcount is not 0
      before incrementing it, or else we might end up freeing a dst
      twice.
      
      DST_NOCACHE set on a dst does not mean this dst can not be attached
      to a socket or a tunnel.
      
      Then, before actual freeing, we need to observe a rcu grace period
      to make sure all other cpus can catch the fact the dst is no longer
      usable.
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Reported-by: NDormando <dormando@rydia.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f8864972
    • T
      net: filter: Use kcalloc/kmalloc_array to allocate arrays · 99e72a0f
      Tobias Klauser 提交于
      Use kcalloc/kmalloc_array to make it clear we're allocating arrays. No
      integer overflow can actually happen here, since len/flen is guaranteed
      to be less than BPF_MAXINSNS (4096). However, this changed makes sure
      we're not going to get one if BPF_MAXINSNS were ever increased.
      Signed-off-by: NTobias Klauser <tklauser@distanz.ch>
      Acked-by: NDaniel Borkmann <dborkman@redhat.com>
      Acked-by: NAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      99e72a0f
    • T
      trivial: net: filter: Change kerneldoc parameter order · 677a9fd3
      Tobias Klauser 提交于
      Change the order of the parameters to sk_unattached_filter_create() in
      the kerneldoc to reflect the order they appear in the actual function.
      
      This fix is only cosmetic, in the generated doc they still appear in the
      correct order without the fix.
      Signed-off-by: NTobias Klauser <tklauser@distanz.ch>
      Acked-by: NDaniel Borkmann <dborkman@redhat.com>
      Acked-by: NAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      677a9fd3
    • T
    • M
      net: allwinner: emac: Add missing free_irq · b9111328
      Maxime Ripard 提交于
      If the mdio probe function fails in emac_open, the interrupt we just requested
      isn't freed. If emac_open is called again, for example because we try to set up
      the interface again, the kernel will oops because the interrupt wasn't properly
      released.
      Signed-off-by: NMaxime Ripard <maxime.ripard@free-electrons.com>
      Cc: <stable@vger.kernel.org> # 3.11+
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b9111328
    • T
      cxgb4: use dev_port to identify ports · 40c9f8ab
      Thadeu Lima de Souza Cascardo 提交于
      Commit 3f85944f ("net: Add sysfs file
      for port number") introduce dev_port to network devices. cxgb4 adapters
      have multiple ports on the same PCI function, and used dev_id to
      identify those ports. That use was removed by commit
      8c367fcb ("cxgb4: Do not set
      net_device::dev_id to VI index"), since dev_id should be used only when
      devices share the same MAC address.
      
      Using dev_port for cxgb4 allows different ports on the same PCI function
      to be identified.
      Signed-off-by: NThadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      40c9f8ab
    • W
      xen-netback: bookkeep number of active queues in our own module · f7b50c4e
      Wei Liu 提交于
      The original code uses netdev->real_num_tx_queues to bookkeep number of
      queues and invokes netif_set_real_num_tx_queues to set the number of
      queues. However, netif_set_real_num_tx_queues doesn't allow
      real_num_tx_queues to be smaller than 1, which means setting the number
      to 0 will not work and real_num_tx_queues is untouched.
      
      This is bogus when xenvif_free is invoked before any number of queues is
      allocated. That function needs to iterate through all queues to free
      resources. Using the wrong number of queues results in NULL pointer
      dereference.
      
      So we bookkeep the number of queues in xen-netback to solve this
      problem. This fixes a regression introduced by multiqueue patchset in
      3.16-rc1.
      
      There's another bug in original code that the real number of RX queues
      is never set. In current Xen multiqueue design, the number of TX queues
      and RX queues are in fact the same. We need to set the numbers of TX and
      RX queues to the same value.
      
      Also remove xenvif_select_queue and leave queue selection to core
      driver, as suggested by David Miller.
      Reported-by: NBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Signed-off-by: NWei Liu <wei.liu2@citrix.com>
      CC: Ian Campbell <ian.campbell@citrix.com>
      CC: Paul Durrant <paul.durrant@citrix.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f7b50c4e
    • P
      tg3: Change nvram command timeout value to 50ms · 66c965f5
      Prashant Sreedharan 提交于
      Commit 506724c4 "tg3: Override clock,
      link aware and link idle mode during NVRAM dump" changed the timeout
      value for nvram command execution from 100ms to 1ms. But the 1ms
      timeout value was only sufficient for nvram read operations but not
      write operations for most of the devices supported by tg3 driver.
      This patch sets the MAX to 50ms. Also it uses usleep_range instead
      of udelay.
      Signed-off-by: NPrashant Sreedharan <prashant@broadcom.com>
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Suggested-by: NDavid Miller <davem@davemloft.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      66c965f5
    • L
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 456febd2
      Linus Torvalds 提交于
      Pull ARM SoC fixes from Arnd Bergmann:
       "A new set of bug fixes for 3.16, containing patches for seven
        platforms:
      
        at91:
          - drivers/misc fix for Kconfig PWM symbol
          - correction of several values in DT after conversion to CCF
          - fix at91sam9261/at91sam9261ek mistake in slow crystal vs. slow RC osc
      
        imx:
          - Use GPIO for card CD/WP on imx51-babbage and eukrea-mbimxsd51,
            because controller base CD/WP is not working in esdhc driver due to
            runtime PM support
          - A couple of random ventana gw5xxx board fixes
          - Add IMX_IPUV3_CORE back to defconfig, which gets lost when moving
            IPUv3 driver out of staging tree
          - Fix enet/fec clock selection on imx6sl
          - Fix display node on imx53-m53evk board
          - A couple of Cubox-i updates from Russell, which were omitted from
            the merge window due to dependency
      
        integrator:
          - fix an OF-related regression against 3.15
      
        mvebu:
          - mvebu (v7)
             - Fix broken SoC ID detection
             - Select ARM_CPU_SUSPEND for v7
             - Remove armada38x compatible string (no users yet)
             - Enable Dove SoC in mvebu_v7_defconfig
          - kirkwood
             - Fix phy-connection-type on GuruPlug board
      
        qcom:
          - enable gsbi driver in defconfig
          - fix section mismatch warning in serial driver
      
        samsung:
          - use WFI macro in platform_do_lowpower because exynos cpuhotplug
            includes a hardcoded WFI instruction and it causes compile error
            in Thumb-2 mode.
          - fix GIC reg sizes for exynos4 SoCs
          - remove reset timer counter value during boot and resume for mct
            to fix a big jump in printk timestamps
          - fix pm code to check cortex-A9 for another exynos SoCs
          - don't rely on firmware's secondary_cpu_start for mcpm
      
        sti:
          - Ethernet clocks were wrongly defined for STiH415/416 platforms
          - STiH416 B2020 revision E DTS file name contained uppercase, change to
            lowercase"
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (33 commits)
        ARM: at91/dt: sam9261: remove slow RC osc
        ARM: at91/dt: define sam9261ek slow crystal frequency
        ARM: at91/dt: sam9261: correctly define mainck
        ARM: at91/dt: sam9n12: correct PLLA ICPLL and OUT values
        ARM: at91/dt: sam9x5: correct PLLA ICPLL and OUT values
        misc: atmel_pwm: fix Kconfig symbols
        ARM: integrator: fix OF-related regression
        ARM: mvebu: Fix the improper use of the compatible string armada38x using a wildcard
        ARM: dts: kirkwood: fix phy-connection-type for Guruplug
        ARM: EXYNOS: Don't rely on firmware's secondary_cpu_start for mcpm
        ARM: dts: imx51-eukrea-mbimxsd51-baseboard: unbreak esdhc.
        ARM: dts: imx51-babbage: Fix esdhc setup
        ARM: dts: mx5: Move the display out of soc {} node
        ARM: dts: mx5: Fix IPU port node placement
        ARM: mvebu: select ARM_CPU_SUSPEND for Marvell EBU v7 platforms
        ARM: mvebu: Fix broken SoC ID detection
        ARM: imx_v6_v7_defconfig: Enable CONFIG_IMX_IPUV3_CORE
        ARM: multi_v7_defconfig: Add QCOM GSBI driver
        ARM: stih41x: Rename stih416-b2020-revE.dts to stih416-b2020e.dts
        tty: serial: msm: Fix section mismatch warning
        ...
      456febd2
    • A
      Merge tag 'at91-fixes' of git://github.com/at91linux/linux-at91 into fixes · 6c9d1617
      Arnd Bergmann 提交于
      Merge "First AT91 fixes batch for 3.16" from Nicolas Ferre:
      
      - drivers/misc fix for Kconfig PWM symbol
      - correction of several values in DT after conversion to CCF
      - fix at91sam9261/at91sam9261ek mistake in slow crystal vs. slow RC osc
      
      * tag 'at91-fixes' of git://github.com/at91linux/linux-at91:
        ARM: at91/dt: sam9261: remove slow RC osc
        ARM: at91/dt: define sam9261ek slow crystal frequency
        ARM: at91/dt: sam9261: correctly define mainck
        ARM: at91/dt: sam9n12: correct PLLA ICPLL and OUT values
        ARM: at91/dt: sam9x5: correct PLLA ICPLL and OUT values
        misc: atmel_pwm: fix Kconfig symbols
      6c9d1617
    • A
      Merge tag 'mvebu-fixes-3.16' of git://git.infradead.org/linux-mvebu into fixes · 6d12e796
      Arnd Bergmann 提交于
      Merge "mvebu fixes for v3.16" from Jason Cooper:
      
       - mvebu
          - Fix broken SoC ID detection
          - Select ARM_CPU_SUSPEND for v7
          - Remove armada38x compatible string (no users yet)
      
       - kirkwood
          - Fix phy-connection-type on GuruPlug board
      
      * tag 'mvebu-fixes-3.16' of git://git.infradead.org/linux-mvebu:
        ARM: mvebu: Fix the improper use of the compatible string armada38x using a wildcard
        ARM: dts: kirkwood: fix phy-connection-type for Guruplug
        ARM: mvebu: select ARM_CPU_SUSPEND for Marvell EBU v7 platforms
        ARM: mvebu: Fix broken SoC ID detection
      6d12e796
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client · 15e52d9a
      Linus Torvalds 提交于
      Pull Ceph fix from Sage Weil:
       "This fixes a corner case for cloned RBD images"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:
        rbd: handle parent_overlap on writes correctly
      15e52d9a
    • A
      ARM: at91/dt: sam9261: remove slow RC osc · 971dc9ce
      Alexandre Belloni 提交于
      The at91sam9261 doesn't actually have a slow RC oscillator, remove it from the
      dtsi.
      Signed-off-by: NAlexandre Belloni <alexandre.belloni@free-electrons.com>
      Acked-by: NBoris BREZILLON <boris.brezillon@free-electrons.com>
      Signed-off-by: NNicolas Ferre <nicolas.ferre@atmel.com>
      971dc9ce
  2. 25 6月, 2014 22 次提交
    • A
      ARM: at91/dt: define sam9261ek slow crystal frequency · 78ca2ec9
      Alexandre Belloni 提交于
      Define at91sam9261ek's slow crystal frequencies.
      Signed-off-by: NAlexandre Belloni <alexandre.belloni@free-electrons.com>
      Acked-by: NBoris BREZILLON <boris.brezillon@free-electrons.com>
      Signed-off-by: NNicolas Ferre <nicolas.ferre@atmel.com>
      78ca2ec9
    • A
      ARM: at91/dt: sam9261: correctly define mainck · 5de47284
      Alexandre Belloni 提交于
      mainck (CKGR_MCFR register) is actually using main_osc (CKGR_MOR register).
      Signed-off-by: NAlexandre Belloni <alexandre.belloni@free-electrons.com>
      Acked-by: NBoris BREZILLON <boris.brezillon@free-electrons.com>
      Signed-off-by: NNicolas Ferre <nicolas.ferre@atmel.com>
      5de47284
    • A
      ARM: at91/dt: sam9n12: correct PLLA ICPLL and OUT values · 8cbff69c
      Alexandre Belloni 提交于
      ICPLL can only take 0 or 1, it got mixed with OUT which can be in the [0-3]
      range.
      Signed-off-by: NAlexandre Belloni <alexandre.belloni@free-electrons.com>
      Acked-by: NBoris BREZILLON <boris.brezillon@free-electrons.com>
      Signed-off-by: NNicolas Ferre <nicolas.ferre@atmel.com>
      8cbff69c
    • A
      ARM: at91/dt: sam9x5: correct PLLA ICPLL and OUT values · b6616f11
      Alexandre Belloni 提交于
      ICPLL can only take 0 or 1, it got mixed with OUT which can be in the [0-3]
      range.
      Signed-off-by: NAlexandre Belloni <alexandre.belloni@free-electrons.com>
      Acked-by: NBoris BREZILLON <boris.brezillon@free-electrons.com>
      Signed-off-by: NNicolas Ferre <nicolas.ferre@atmel.com>
      b6616f11
    • L
      Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · d91d66e8
      Linus Torvalds 提交于
      Pull powerpc fixes and cleanups from Ben Herrenschmidt:
       "Here are a handful or two of powerpc fixes and simple/trivial
        cleanups.  A bunch of them fix ftrace with the new ABI v2 in Little
        Endian, the rest is a scattering of fairly simple things"
      
      * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
        powerpc: Don't skip ePAPR spin-table CPUs
        powerpc/module: Fix TOC symbol CRC
        powerpc/powernv: Remove OPAL v1 takeover
        powerpc/kmemleak: Do not scan the DART table
        selftests/powerpc: Use the test harness for the TM DSCR test
        powerpc/cell: cbe_thermal.c: Cleaning up a variable is of the wrong type
        powerpc/kprobes: Fix jprobes on ABI v2 (LE)
        powerpc/ftrace: Use pr_fmt() to namespace error messages
        powerpc/ftrace: Fix nop of modules on 64bit LE (ABIv2)
        powerpc/ftrace: Fix inverted check of create_branch()
        powerpc/ftrace: Fix typo in mask of opcode
        powerpc: Add ppc_global_function_entry()
        powerpc/macintosh/smu.c: Fix closing brace followed by if
        powerpc: Remove __arch_swab*
        powerpc: Remove ancient DEBUG_SIG code
        powerpc/kerenl: Enable EEH for IO accessors
      d91d66e8
    • L
      Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost · 07f4695c
      Linus Torvalds 提交于
      Pull vhost cleanups from Michael S Tsirkin:
       "Two cleanup patches removing code duplication that got introduced by
        changes in rc1.  Not fixing crashes, but I'd rather not carry the
        duplicate code until the next merge window"
      
      * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
        vhost-scsi: don't open-code kvfree
        vhost-net: don't open-code kvfree
      07f4695c
    • L
      Merge tag 'trace-fixes-v3.16-rc1-v2' of... · b8e46d22
      Linus Torvalds 提交于
      Merge tag 'trace-fixes-v3.16-rc1-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
      
      Pull tracing cleanups and fixes from Steven Rostedt:
       "This includes three patches from Oleg Nesterov.  The first is a fix to
        a race condition that happens between enabling/disabling syscall
        tracepoints and new process creations (the check to go into the ptrace
        path for a process can be set when it shouldn't, or not set when it
        should).  Not a major bug but one that should be fixed and even
        applied to stable.
      
        The other two patches are cleanup/fixes that are not that critical,
        but for an -rc1 release would be nice to have.  They both deal with
        syscall tracepoints.
      
        It also includes a patch to introduce a new macro for the
        TRACE_EVENT() format called __field_struct().  Originally, __field()
        was used to record any variable into a trace event, but with the
        addition of setting the "is signed" attribute, the check causes
        anything but a primitive variable to fail to compile.  That is,
        structs and unions can't be used as they once were.  When the "is
        signed" check was introduce there were only primitive variables being
        recorded.  But that will change soon and it was reported that
        __field() causes build failures.
      
        To solve the __field() issue, __field_struct() is introduced to allow
        trace_events to be able to record complex types too"
      
      * tag 'trace-fixes-v3.16-rc1-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
        tracing: Add __field_struct macro for TRACE_EVENT()
        tracing: syscall_regfunc() should not skip kernel threads
        tracing: Change syscall_*regfunc() to check PF_KTHREAD and use for_each_process_thread()
        tracing: Fix syscall_*regfunc() vs copy_process() race
      b8e46d22
    • N
      misc: atmel_pwm: fix Kconfig symbols · 8dcd598c
      Nicolas Ferre 提交于
      AT91 symbols AT91SAM9263, AT91SAM9RL, and AT91SAM9G45 do not exist and this
      patch changes them to their correct ARCH_* version.
      These symbols are chosen instead of the SOC_* ones because this driver is not
      converted to DT.
      Anyway, the ATMEL_PWM symbol and the associated driver will be removed soon,
      during the move to the PWM sub-system.
      Reported-by: NPaul Bolle <pebolle@tiscali.nl>
      Acked-by: NAlexandre Belloni <alexandre.belloni@free-electrons.com>
      Signed-off-by: NNicolas Ferre <nicolas.ferre@atmel.com>
      8dcd598c
    • S
      powerpc: Don't skip ePAPR spin-table CPUs · 6663a4fa
      Scott Wood 提交于
      Commit 59a53afe "powerpc: Don't setup
      CPUs with bad status" broke ePAPR SMP booting.  ePAPR says that CPUs
      that aren't presently running shall have status of disabled, with
      enable-method being used to determine whether the CPU can be enabled.
      
      Fix by checking for spin-table, which is currently the only supported
      enable-method.
      Signed-off-by: NScott Wood <scottwood@freescale.com>
      Cc: Michael Neuling <mikey@neuling.org>
      Cc: Emil Medve <Emilian.Medve@Freescale.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      6663a4fa
    • L
      powerpc/module: Fix TOC symbol CRC · c2cbcf53
      Laurent Dufour 提交于
      The commit 71ec7c55 introduced the magic symbol ".TOC." for ELFv2 ABI.
      This symbol is built manually and has no CRC value computed. A zero value
      is put in the CRC section to avoid modpost complaining about a missing CRC.
      Unfortunately, this breaks the kernel module loading when the kernel is
      relocated (kdump case for instance) because of the relocation applied to
      the kcrctab values.
      
      This patch compute a CRC value for the TOC symbol which will match the one
      compute by the kernel when it is relocated - aka '0 - relocate_start' done in
      maybe_relocated called by check_version (module.c).
      Signed-off-by: NLaurent Dufour <ldufour@linux.vnet.ibm.com>
      Cc: Anton Blanchard <anton@samba.org>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      c2cbcf53
    • M
      powerpc/powernv: Remove OPAL v1 takeover · e2500be2
      Michael Ellerman 提交于
      In commit 27f44888 "Add OPAL takeover from PowerVM" we added support
      for "takeover" on OPAL v1 machines.
      
      This was a mode of operation where we would boot under pHyp, and query
      for the presence of OPAL. If detected we would then do a special
      sequence to take over the machine, and the kernel would end up running
      in hypervisor mode.
      
      OPAL v1 was never a supported product, and was never shipped outside
      IBM. As far as we know no one is still using it.
      
      Newer versions of OPAL do not use the takeover mechanism. Although the
      query for OPAL should be harmless on machines with newer OPAL, we have
      seen a machine where it causes a crash in Open Firmware.
      
      The code in early_init_devtree() to copy boot_command_line into cmd_line
      was added in commit 817c21ad "Get kernel command line accross OPAL
      takeover", and AFAIK is only used by takeover, so should also be
      removed.
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      e2500be2
    • L
      cxgb4: Not need to hold the adap_rcu_lock lock when read adap_rcu_list · ee9a33b2
      Li RongQing 提交于
      cxgb4_netdev maybe lead to dead lock, since it uses a spin lock, and be called
      in both thread and softirq context, but not disable BH, the lockdep report is
      below; In fact, cxgb4_netdev only reads adap_rcu_list with RCU protection, so
      not need to hold spin lock again.
      	=================================
      	[ INFO: inconsistent lock state ]
      	3.14.7+ #24 Tainted: G         C O
      	---------------------------------
      	inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
      	radvd/3794 [HC0[0]:SC1[1]:HE1:SE0] takes:
      	 (adap_rcu_lock){+.?...}, at: [<ffffffffa09989ea>] clip_add+0x2c/0x116 [cxgb4]
      	{SOFTIRQ-ON-W} state was registered at:
      	  [<ffffffff810fca81>] __lock_acquire+0x34a/0xe48
      	  [<ffffffff810fd98b>] lock_acquire+0x82/0x9d
      	  [<ffffffff815d6ff8>] _raw_spin_lock+0x34/0x43
      	  [<ffffffffa09989ea>] clip_add+0x2c/0x116 [cxgb4]
      	  [<ffffffffa0998beb>] cxgb4_inet6addr_handler+0x117/0x12c [cxgb4]
      	  [<ffffffff815da98b>] notifier_call_chain+0x32/0x5c
      	  [<ffffffff815da9f9>] __atomic_notifier_call_chain+0x44/0x6e
      	  [<ffffffff815daa32>] atomic_notifier_call_chain+0xf/0x11
      	  [<ffffffff815b1356>] inet6addr_notifier_call_chain+0x16/0x18
      	  [<ffffffffa01f72e5>] ipv6_add_addr+0x404/0x46e [ipv6]
      	  [<ffffffffa01f8df0>] addrconf_add_linklocal+0x5f/0x95 [ipv6]
      	  [<ffffffffa01fc3e9>] addrconf_notify+0x632/0x841 [ipv6]
      	  [<ffffffff815da98b>] notifier_call_chain+0x32/0x5c
      	  [<ffffffff810e09a1>] __raw_notifier_call_chain+0x9/0xb
      	  [<ffffffff810e09b2>] raw_notifier_call_chain+0xf/0x11
      	  [<ffffffff8151b3b7>] call_netdevice_notifiers_info+0x4e/0x56
      	  [<ffffffff8151b3d0>] call_netdevice_notifiers+0x11/0x13
      	  [<ffffffff8151c0a6>] netdev_state_change+0x1f/0x38
      	  [<ffffffff8152f004>] linkwatch_do_dev+0x3b/0x49
      	  [<ffffffff8152f184>] __linkwatch_run_queue+0x10b/0x144
      	  [<ffffffff8152f1dd>] linkwatch_event+0x20/0x27
      	  [<ffffffff810d7bc0>] process_one_work+0x1cb/0x2ee
      	  [<ffffffff810d7e3b>] worker_thread+0x12e/0x1fc
      	  [<ffffffff810dd391>] kthread+0xc4/0xcc
      	  [<ffffffff815dc48c>] ret_from_fork+0x7c/0xb0
      	irq event stamp: 3388
      	hardirqs last  enabled at (3388): [<ffffffff810c6c85>]
      	__local_bh_enable_ip+0xaa/0xd9
      	hardirqs last disabled at (3387): [<ffffffff810c6c2d>]
      	__local_bh_enable_ip+0x52/0xd9
      	softirqs last  enabled at (3288): [<ffffffffa01f1d5b>]
      	rcu_read_unlock_bh+0x0/0x2f [ipv6]
      	softirqs last disabled at (3289): [<ffffffff815ddafc>]
      	do_softirq_own_stack+0x1c/0x30
      
      	other info that might help us debug this:
      	 Possible unsafe locking scenario:
      
      	       CPU0
      	       ----
      	  lock(adap_rcu_lock);
      	  <Interrupt>
      	    lock(adap_rcu_lock);
      
      	 *** DEADLOCK ***
      
      	5 locks held by radvd/3794:
      	 #0:  (sk_lock-AF_INET6){+.+.+.}, at: [<ffffffffa020b85a>]
      	rawv6_sendmsg+0x74b/0xa4d [ipv6]
      	 #1:  (rcu_read_lock){.+.+..}, at: [<ffffffff8151ac6b>]
      	rcu_lock_acquire+0x0/0x29
      	 #2:  (rcu_read_lock){.+.+..}, at: [<ffffffffa01f4cca>]
      	rcu_lock_acquire.constprop.16+0x0/0x30 [ipv6]
      	 #3:  (rcu_read_lock){.+.+..}, at: [<ffffffff810e09b4>]
      	rcu_lock_acquire+0x0/0x29
      	 #4:  (rcu_read_lock){.+.+..}, at: [<ffffffffa0998782>]
      	rcu_lock_acquire.constprop.40+0x0/0x30 [cxgb4]
      
      	stack backtrace:
      	CPU: 7 PID: 3794 Comm: radvd Tainted: G         C O 3.14.7+ #24
      	Hardware name: Supermicro X7DBU/X7DBU, BIOS 6.00 12/03/2007
      	 ffffffff81f15990 ffff88012fdc36a8 ffffffff815d0016 0000000000000006
      	 ffff8800c80dc2a0 ffff88012fdc3708 ffffffff815cc727 0000000000000001
      	 0000000000000001 ffff880100000000 ffffffff81015b02 ffff8800c80dcb58
      	Call Trace:
      	 <IRQ>  [<ffffffff815d0016>] dump_stack+0x4e/0x71
      	 [<ffffffff815cc727>] print_usage_bug+0x1ec/0x1fd
      	 [<ffffffff81015b02>] ? save_stack_trace+0x27/0x44
      	 [<ffffffff810fbfaa>] ? check_usage_backwards+0xa0/0xa0
      	 [<ffffffff810fc640>] mark_lock+0x11b/0x212
      	 [<ffffffff810fca0b>] __lock_acquire+0x2d4/0xe48
      	 [<ffffffff810fbfaa>] ? check_usage_backwards+0xa0/0xa0
      	 [<ffffffff810fbff6>] ? check_usage_forwards+0x4c/0xa6
      	 [<ffffffff810c6c8a>] ? __local_bh_enable_ip+0xaf/0xd9
      	 [<ffffffff810fd98b>] lock_acquire+0x82/0x9d
      	 [<ffffffffa09989ea>] ? clip_add+0x2c/0x116 [cxgb4]
      	 [<ffffffffa0998782>] ? rcu_read_unlock+0x23/0x23 [cxgb4]
      	 [<ffffffff815d6ff8>] _raw_spin_lock+0x34/0x43
      	 [<ffffffffa09989ea>] ? clip_add+0x2c/0x116 [cxgb4]
      	 [<ffffffffa09987b0>] ? rcu_lock_acquire.constprop.40+0x2e/0x30 [cxgb4]
      	 [<ffffffffa0998782>] ? rcu_read_unlock+0x23/0x23 [cxgb4]
      	 [<ffffffffa09989ea>] clip_add+0x2c/0x116 [cxgb4]
      	 [<ffffffffa0998beb>] cxgb4_inet6addr_handler+0x117/0x12c [cxgb4]
      	 [<ffffffff810fd99d>] ? lock_acquire+0x94/0x9d
      	 [<ffffffff810e09b4>] ? raw_notifier_call_chain+0x11/0x11
      	 [<ffffffff815da98b>] notifier_call_chain+0x32/0x5c
      	 [<ffffffff815da9f9>] __atomic_notifier_call_chain+0x44/0x6e
      	 [<ffffffff815daa32>] atomic_notifier_call_chain+0xf/0x11
      	 [<ffffffff815b1356>] inet6addr_notifier_call_chain+0x16/0x18
      	 [<ffffffffa01f72e5>] ipv6_add_addr+0x404/0x46e [ipv6]
      	 [<ffffffff810fde6a>] ? trace_hardirqs_on+0xd/0xf
      	 [<ffffffffa01fb634>] addrconf_prefix_rcv+0x385/0x6ea [ipv6]
      	 [<ffffffffa0207950>] ndisc_rcv+0x9d3/0xd76 [ipv6]
      	 [<ffffffffa020d536>] icmpv6_rcv+0x592/0x67b [ipv6]
      	 [<ffffffff810c6c85>] ? __local_bh_enable_ip+0xaa/0xd9
      	 [<ffffffff810c6c85>] ? __local_bh_enable_ip+0xaa/0xd9
      	 [<ffffffff810fd8dc>] ? lock_release+0x14e/0x17b
      	 [<ffffffffa020df97>] ? rcu_read_unlock+0x21/0x23 [ipv6]
      	 [<ffffffff8150df52>] ? rcu_read_unlock+0x23/0x23
      	 [<ffffffffa01f4ede>] ip6_input_finish+0x1e4/0x2fc [ipv6]
      	 [<ffffffffa01f540b>] ip6_input+0x33/0x38 [ipv6]
      	 [<ffffffffa01f5557>] ip6_mc_input+0x147/0x160 [ipv6]
      	 [<ffffffffa01f4ba3>] ip6_rcv_finish+0x7c/0x81 [ipv6]
      	 [<ffffffffa01f5397>] ipv6_rcv+0x3a1/0x3e2 [ipv6]
      	 [<ffffffff8151ef96>] __netif_receive_skb_core+0x4ab/0x511
      	 [<ffffffff810fdc94>] ? mark_held_locks+0x71/0x99
      	 [<ffffffff8151f0c0>] ? process_backlog+0x69/0x15e
      	 [<ffffffff8151f045>] __netif_receive_skb+0x49/0x5b
      	 [<ffffffff8151f0cf>] process_backlog+0x78/0x15e
      	 [<ffffffff8151f571>] ? net_rx_action+0x1a2/0x1cc
      	 [<ffffffff8151f47b>] net_rx_action+0xac/0x1cc
      	 [<ffffffff810c69b7>] ? __do_softirq+0xad/0x218
      	 [<ffffffff810c69ff>] __do_softirq+0xf5/0x218
      	 [<ffffffff815ddafc>] do_softirq_own_stack+0x1c/0x30
      	 <EOI>  [<ffffffff810c6bb6>] do_softirq+0x38/0x5d
      	 [<ffffffffa01f1d5b>] ? ip6_copy_metadata+0x156/0x156 [ipv6]
      	 [<ffffffff810c6c78>] __local_bh_enable_ip+0x9d/0xd9
      	 [<ffffffffa01f1d88>] rcu_read_unlock_bh+0x2d/0x2f [ipv6]
      	 [<ffffffffa01f28b4>] ip6_finish_output2+0x381/0x3d8 [ipv6]
      	 [<ffffffffa01f49ef>] ip6_finish_output+0x6e/0x73 [ipv6]
      	 [<ffffffffa01f4a70>] ip6_output+0x7c/0xa8 [ipv6]
      	 [<ffffffff815b1bfa>] dst_output+0x18/0x1c
      	 [<ffffffff815b1c9e>] ip6_local_out+0x1c/0x21
      	 [<ffffffffa01f2489>] ip6_push_pending_frames+0x37d/0x427 [ipv6]
      	 [<ffffffff81558af8>] ? skb_orphan+0x39/0x39
      	 [<ffffffffa020b85a>] ? rawv6_sendmsg+0x74b/0xa4d [ipv6]
      	 [<ffffffffa020ba51>] rawv6_sendmsg+0x942/0xa4d [ipv6]
      	 [<ffffffff81584cd2>] inet_sendmsg+0x3d/0x66
      	 [<ffffffff81508930>] __sock_sendmsg_nosec+0x25/0x27
      	 [<ffffffff8150b0d7>] sock_sendmsg+0x5a/0x7b
      	 [<ffffffff810fd8dc>] ? lock_release+0x14e/0x17b
      	 [<ffffffff8116d756>] ? might_fault+0x9e/0xa5
      	 [<ffffffff8116d70d>] ? might_fault+0x55/0xa5
      	 [<ffffffff81508cb1>] ? copy_from_user+0x2a/0x2c
      	 [<ffffffff8150b70c>] ___sys_sendmsg+0x226/0x2d9
      	 [<ffffffff810fcd25>] ? __lock_acquire+0x5ee/0xe48
      	 [<ffffffff810fde01>] ? trace_hardirqs_on_caller+0x145/0x1a1
      	 [<ffffffff8118efcb>] ? slab_free_hook.isra.71+0x50/0x59
      	 [<ffffffff8115c81f>] ? release_pages+0xbc/0x181
      	 [<ffffffff810fd99d>] ? lock_acquire+0x94/0x9d
      	 [<ffffffff81115e97>] ? read_seqcount_begin.constprop.25+0x73/0x90
      	 [<ffffffff8150c408>] __sys_sendmsg+0x3d/0x5b
      	 [<ffffffff8150c433>] SyS_sendmsg+0xd/0x19
      	 [<ffffffff815dc53d>] system_call_fastpath+0x1a/0x1f
      Reported-by: NBen Greear <greearb@candelatech.com>
      Cc: Casey Leedom <leedom@chelsio.com>
      Cc: Hariprasad Shenai <hariprasad@chelsio.com>
      Signed-off-by: NLi RongQing <roy.qing.li@gmail.com>
      Signed-off-by: NEric Dumazet <eric.dumazet@gmail.com>
      Acked-by: NCasey Leedom <leedom@chelsio.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      ee9a33b2
    • A
      NFSv4: test SECINFO RPC_AUTH_GSS pseudoflavors for support · 66b06860
      Andy Adamson 提交于
      Fix nfs4_negotiate_security to create an rpc_clnt used to test each SECINFO
      returned pseudoflavor. Check credential creation  (and gss_context creation)
      which is important for RPC_AUTH_GSS pseudoflavors which can fail for multiple
      reasons including mis-configuration.
      
      Don't call nfs4_negotiate in nfs4_submount as it was just called by
      nfs4_proc_lookup_mountpoint (nfs4_proc_lookup_common)
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      [Trond: fix corrupt return value from nfs_find_best_sec()]
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      66b06860
    • A
      NFS Return -EPERM if no supported or matching SECINFO flavor · 8445cd35
      Andy Adamson 提交于
      Do not return RPC_AUTH_UNIX if SEINFO reply tests fail. This
      prevents an infinite loop of NFS4ERR_WRONGSEC for non RPC_AUTH_UNIX mounts.
      
      Without this patch, a mount with no sec= option to a server
      that does not include RPC_AUTH_UNIX in the
      SECINFO return can be presented with an attemtp to use RPC_AUTH_UNIX
      which will result in an NFS4ERR_WRONG_SEC which will prompt the SECINFO
      call which will again try RPC_AUTH_UNIX....
      Signed-off-by: NAndy Adamson <andros@netapp.com>
      Tested-By: NSteve Dickson <steved@redhat.com>
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      8445cd35
    • A
    • T
      NFS: Don't mark the data cache as invalid if it has been flushed · 6edf9609
      Trond Myklebust 提交于
      Now that we have functions such as nfs_write_pageuptodate() that use
      the cache_validity flags to check if the data cache is valid or not,
      it is a little more important to keep the flags in sync with the
      state of the data cache.
      In particular, we'd like to ensure that if the data cache is empty, we
      don't start marking it as needing revalidation.
      Reported-by: NScott Mayhew <smayhew@redhat.com>
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      6edf9609
    • T
      NFS: Clear NFS_INO_REVAL_PAGECACHE when we update the file size · f2467b6f
      Trond Myklebust 提交于
      In nfs_update_inode(), if the change attribute is seen to change on
      the server, then we set NFS_INO_REVAL_PAGECACHE in order to make
      sure that we check the file size.
      However, if we also update the file size in the same function, we
      don't need to check it again. So make sure that we clear the
      NFS_INO_REVAL_PAGECACHE that was set earlier.
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      f2467b6f
    • S
      nfs: Fix cache_validity check in nfs_write_pageuptodate() · 18dd78c4
      Scott Mayhew 提交于
      NFS_INO_INVALID_DATA cannot be ignored, even if we have a delegation.
      
      We're still having some problems with data corruption when multiple
      clients are appending to a file and those clients are being granted
      write delegations on open.
      
      To reproduce:
      
      Client A:
      vi /mnt/`hostname -s`
      while :; do echo "XXXXXXXXXXXXXXX" >>/mnt/file; sleep $(( $RANDOM % 5 )); done
      
      Client B:
      vi /mnt/`hostname -s`
      while :; do echo "YYYYYYYYYYYYYYY" >>/mnt/file; sleep $(( $RANDOM % 5 )); done
      
      What's happening is that in nfs_update_inode() we're recognizing that
      the file size has changed and we're setting NFS_INO_INVALID_DATA
      accordingly, but then we ignore the cache_validity flags in
      nfs_write_pageuptodate() because we have a delegation.  As a result,
      in nfs_updatepage() we're extending the write to cover the full page
      even though we've not read in the data to begin with.
      Signed-off-by: NScott Mayhew <smayhew@redhat.com>
      Cc: <stable@vger.kernel.org> # v3.11+
      Signed-off-by: NTrond Myklebust <trond.myklebust@primarydata.com>
      18dd78c4
    • L
      Merge git://git.kvack.org/~bcrl/aio-fixes · 10b5b536
      Linus Torvalds 提交于
      Pull aio fixes from Ben LaHaise:
       "These fix a kernel memory disclosure issue (arbitrary kmap() &
        copy_to_user()) revealed in CVE-2014-0206 by changes that were
        introduced in v3.10"
      
      * git://git.kvack.org/~bcrl/aio-fixes:
        aio: fix kernel memory disclosure in io_getevents() introduced in v3.10
        aio: fix aio request leak when events are reaped by userspace
      10b5b536
    • L
      Merge branch 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm · b4b664be
      Linus Torvalds 提交于
      Pull ARM fixes from Russell King:
       "A number of low impact fixes, the most noticable one is the thumb2
        frame pointer fix.  We also fix a regression caused during this merge
        window with ARM925 CPUs running with caches disabled, and fix a number
        of warnings"
      
      * 'fixes' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
        ARM: arm925: ensure assembly sets up writethrough mapping
        ARM: perf: fix compiler warning with gcc 4.6.4 (and tidy code)
        ARM: l2c: fix dependencies on PL310 errata symbols
        ARM: 8069/1: Make thread_save_fp macro aware of THUMB2 mode
        ARM: 8068/1: scoop: Remove unused variable
      b4b664be
    • B
      aio: fix kernel memory disclosure in io_getevents() introduced in v3.10 · edfbbf38
      Benjamin LaHaise 提交于
      A kernel memory disclosure was introduced in aio_read_events_ring() in v3.10
      by commit a31ad380.  The changes made to
      aio_read_events_ring() failed to correctly limit the index into
      ctx->ring_pages[], allowing an attacked to cause the subsequent kmap() of
      an arbitrary page with a copy_to_user() to copy the contents into userspace.
      This vulnerability has been assigned CVE-2014-0206.  Thanks to Mateusz and
      Petr for disclosing this issue.
      
      This patch applies to v3.12+.  A separate backport is needed for 3.10/3.11.
      Signed-off-by: NBenjamin LaHaise <bcrl@kvack.org>
      Cc: Mateusz Guzik <mguzik@redhat.com>
      Cc: Petr Matousek <pmatouse@redhat.com>
      Cc: Kent Overstreet <kmo@daterainc.com>
      Cc: Jeff Moyer <jmoyer@redhat.com>
      Cc: stable@vger.kernel.org
      edfbbf38
    • B
      aio: fix aio request leak when events are reaped by userspace · f8567a38
      Benjamin LaHaise 提交于
      The aio cleanups and optimizations by kmo that were merged into the 3.10
      tree added a regression for userspace event reaping.  Specifically, the
      reference counts are not decremented if the event is reaped in userspace,
      leading to the application being unable to submit further aio requests.
      This patch applies to 3.12+.  A separate backport is required for 3.10/3.11.
      This issue was uncovered as part of CVE-2014-0206.
      Signed-off-by: NBenjamin LaHaise <bcrl@kvack.org>
      Cc: stable@vger.kernel.org
      Cc: Kent Overstreet <kmo@daterainc.com>
      Cc: Mateusz Guzik <mguzik@redhat.com>
      Cc: Petr Matousek <pmatouse@redhat.com>
      f8567a38
  3. 24 6月, 2014 2 次提交