1. 30 1月, 2013 7 次提交
    • J
      tuntap: allow polling/writing/reading when detached · 9e85722d
      Jason Wang 提交于
      We forbid polling, writing and reading when the file were detached, this may
      complex the user in several cases:
      
      - when guest pass some buffers to vhost/qemu and then disable some queues,
        host/qemu needs to do its own cleanup on those buffers which is complex
        sometimes. We can do this simply by allowing a user can still write to an
        disabled queue. Write to an disabled queue will cause the packet pass to the
        kernel and read will get nothing.
      - align the polling behavior with macvtap which never fails when the queue is
        created. This can simplify the polling errors handling of its user (e.g vhost)
      
      We can simply achieve this by don't assign NULL to tfile->tun when detached.
      Signed-off-by: NJason Wang <jasowang@redhat.com>
      Acked-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9e85722d
    • J
      vhost_net: handle polling errors when setting backend · 2b8b328b
      Jason Wang 提交于
      Currently, the polling errors were ignored, which can lead following issues:
      
      - vhost remove itself unconditionally from waitqueue when stopping the poll,
        this may crash the kernel since the previous attempt of starting may fail to
        add itself to the waitqueue
      - userspace may think the backend were successfully set even when the polling
        failed.
      
      Solve this by:
      
      - check poll->wqh before trying to remove from waitqueue
      - report polling errors in vhost_poll_start(), tx_poll_start(), the return value
        will be checked and returned when userspace want to set the backend
      
      After this fix, there still could be a polling failure after backend is set, it
      will addressed by the next patch.
      Signed-off-by: NJason Wang <jasowang@redhat.com>
      Acked-by: NMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      2b8b328b
    • J
      vhost_net: correct error handling in vhost_net_set_backend() · 692a998b
      Jason Wang 提交于
      Currently, when vhost_init_used() fails the sock refcnt and ubufs were
      leaked. Correct this by calling vhost_init_used() before assign ubufs and
      restore the oldsock when it fails.
      Signed-off-by: NJason Wang <jasowang@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      692a998b
    • M
      tun: fix carrier on/off status · af668b3c
      Michael S. Tsirkin 提交于
      Commit c8d68e6b removed carrier off call
      from tun_detach since it's now called on queue disable and not only on
      tun close.  This confuses userspace which used this flag to detect a
      free tun. To fix, put this back but under if (clean).
      Signed-off-by: NMichael S. Tsirkin <mst@redhat.com>
      Tested-by: NJason Wang <jasowang@redhat.com>
      Acked-by: NJason Wang <jasowang@redhat.com>
      Tested-by: NToralf Förster <toralf.foerster@gmx.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      af668b3c
    • C
      pktgen: correctly handle failures when adding a device · 604dfd6e
      Cong Wang 提交于
      The return value of pktgen_add_device() is not checked, so
      even if we fail to add some device, for example, non-exist one,
      we still see "OK:...". This patch fixes it.
      
      After this patch, I got:
      
      	# echo "add_device non-exist" > /proc/net/pktgen/kpktgend_0
      	-bash: echo: write error: No such device
      	# cat /proc/net/pktgen/kpktgend_0
      	Running:
      	Stopped:
      	Result: ERROR: can not add device non-exist
      	# echo "add_device eth0" > /proc/net/pktgen/kpktgend_0
      	# cat /proc/net/pktgen/kpktgend_0
      	Running:
      	Stopped: eth0
      	Result: OK: add_device=eth0
      
      (Candidate for -stable)
      
      Cc: David S. Miller <davem@davemloft.net>
      Signed-off-by: NCong Wang <amwang@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      604dfd6e
    • J
      netem: fix delay calculation in rate extension · a13d3104
      Johannes Naab 提交于
      The delay calculation with the rate extension introduces in v3.3 does
      not properly work, if other packets are still queued for transmission.
      For the delay calculation to work, both delay types (latency and delay
      introduces by rate limitation) have to be handled differently. The
      latency delay for a packet can overlap with the delay of other packets.
      The delay introduced by the rate however is separate, and can only
      start, once all other rate-introduced delays finished.
      
      Latency delay is from same distribution for each packet, rate delay
      depends on the packet size.
      
      .: latency delay
      -: rate delay
      x: additional delay we have to wait since another packet is currently
         transmitted
      
        .....----                    Packet 1
          .....xx------              Packet 2
                     .....------     Packet 3
          ^^^^^
          latency stacks
               ^^
               rate delay doesn't stack
                     ^^
                     latency stacks
      
        -----> time
      
      When a packet is enqueued, we first consider the latency delay. If other
      packets are already queued, we can reduce the latency delay until the
      last packet in the queue is send, however the latency delay cannot be
      <0, since this would mean that the rate is overcommitted.  The new
      reference point is the time at which the last packet will be send. To
      find the time, when the packet should be send, the rate introduces delay
      has to be added on top of that.
      Signed-off-by: NJohannes Naab <jn@stusta.de>
      Acked-by: NHagen Paul Pfeifer <hagen@jauu.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a13d3104
    • T
      l2tp: prevent l2tp_tunnel_delete racing with userspace close · 80d84ef3
      Tom Parkin 提交于
      If a tunnel socket is created by userspace, l2tp hooks the socket destructor
      in order to clean up resources if userspace closes the socket or crashes.  It
      also caches a pointer to the struct sock for use in the data path and in the
      netlink interface.
      
      While it is safe to use the cached sock pointer in the data path, where the
      skb references keep the socket alive, it is not safe to use it elsewhere as
      such access introduces a race with userspace closing the socket.  In
      particular, l2tp_tunnel_delete is prone to oopsing if a multithreaded
      userspace application closes a socket at the same time as sending a netlink
      delete command for the tunnel.
      
      This patch fixes this oops by forcing l2tp_tunnel_delete to explicitly look up
      a tunnel socket held by userspace using sockfd_lookup().
      Signed-off-by: NTom Parkin <tparkin@katalix.com>
      Signed-off-by: NJames Chapman <jchapman@katalix.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      80d84ef3
  2. 29 1月, 2013 12 次提交
    • L
      Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · fc16e884
      Linus Torvalds 提交于
      Pull powerpc fixes from Benjamin Herrenschmidt:
       "Whenever you have a chance between two dives, you might want to
        consider pulling my merge branch to pickup a few fixes for 3.8 that
        have been accumulating for the last couple of weeks (I was myself
        travelling then on vacation).
      
        Nothing major, just a handful of powerpc bug fixes that I consider
        worth getting in before 3.8 goes final."
      
      And I'll have everybody know that I'm not diving for several days yet.
      Snif.
      
      * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
        powerpc: Max next_tb to prevent from replaying timer interrupt
        powerpc: kernel/kgdb.c: Fix memory leakage
        powerpc/book3e: Disable interrupt after preempt_schedule_irq
        powerpc/oprofile: Fix error in oprofile power7_marked_instr_event() function
        powerpc/pasemi: Fix crash on reboot
        powerpc: Fix MAX_STACK_TRACE_ENTRIES too low warning for ppc32
      fc16e884
    • T
      powerpc: Max next_tb to prevent from replaying timer interrupt · 689dfa89
      Tiejun Chen 提交于
      With lazy interrupt, we always call __check_irq_replaysome with
      decrementers_next_tb to check if we need to replay timer interrupt.
      So in hotplug case we also need to set decrementers_next_tb as MAX
      to make sure __check_irq_replay don't replay timer interrupt
      when return as we expect, otherwise we'll trap here infinitely.
      Signed-off-by: NTiejun Chen <tiejun.chen@windriver.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      689dfa89
    • C
      powerpc: kernel/kgdb.c: Fix memory leakage · fefd9e6f
      Cong Ding 提交于
      the variable backup_current_thread_info isn't freed before existing the
      function.
      Signed-off-by: NCong Ding <dinggnu@gmail.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      fefd9e6f
    • T
      powerpc/book3e: Disable interrupt after preempt_schedule_irq · 572177d7
      Tiejun Chen 提交于
      In preempt case current arch_local_irq_restore() from
      preempt_schedule_irq() may enable hard interrupt but we really
      should disable interrupts when we return from the interrupt,
      and so that we don't get interrupted after loading SRR0/1.
      Signed-off-by: NTiejun Chen <tiejun.chen@windriver.com>
      CC: <stable@vger.kernel.org>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      572177d7
    • C
      powerpc/oprofile: Fix error in oprofile power7_marked_instr_event() function · 46ed7a76
      Carl E. Love 提交于
      The calculation for the left shift of the mask OPROFILE_PM_PMCSEL_MSK has an
      error.  The calculation is should be to shift left by (max_cntrs - cntr) times
      the width of the pmsel field width.  However, the #define OPROFILE_MAX_PMC_NUM
      was used instead of OPROFILE_PMSEL_FIELD_WIDTH.  This patch fixes the
      calculation.
      Signed-off-by: NCarl Love <cel@us.ibm.com>
      Acked-by: NPaul Mackerras <paulus@samba.org>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      46ed7a76
    • S
      powerpc/pasemi: Fix crash on reboot · 72640d88
      Steven Rostedt 提交于
      commit f96972f2 "kernel/sys.c: call disable_nonboot_cpus() in
      kernel_restart()"
      
      added a call to disable_nonboot_cpus() on kernel_restart(), which tries
      to shutdown all the CPUs except the first one. The issue with the PA
      Semi, is that it does not support CPU hotplug.
      
      When the call is made to __cpu_down(), it calls the notifiers
      CPU_DOWN_PREPARE, and then tries to take the CPU down.
      
      One of the notifiers to the CPU hotplug code, is the cpufreq. The
      DOWN_PREPARE will call __cpufreq_remove_dev() which calls
      cpufreq_driver->exit. The PA Semi exit handler unmaps regions of I/O
      that is used by an interrupt that goes off constantly
      (system_reset_common, but it goes off during normal system operations
      too). I'm not sure exactly what this interrupt does.
      
      Running a simple function trace, you can see it goes off quite a bit:
      
      # tracer: function
      #
      #           TASK-PID    CPU#    TIMESTAMP  FUNCTION
      #              | |       |          |         |
                <idle>-0     [001]  1558.859363: .pasemi_system_reset_exception <-.system_reset_exception
                <idle>-0     [000]  1558.860112: .pasemi_system_reset_exception <-.system_reset_exception
                <idle>-0     [000]  1558.861109: .pasemi_system_reset_exception <-.system_reset_exception
                <idle>-0     [001]  1558.861361: .pasemi_system_reset_exception <-.system_reset_exception
                <idle>-0     [000]  1558.861437: .pasemi_system_reset_exception <-.system_reset_exception
      
      When the region is unmapped, the system crashes with:
      
      Disabling non-boot CPUs ...
      Error taking CPU1 down: -38
      Unable to handle kernel paging request for data at address 0xd0000800903a0100
      Faulting instruction address: 0xc000000000055fcc
      Oops: Kernel access of bad area, sig: 11 [#1]
      PREEMPT SMP NR_CPUS=64 NUMA PA Semi PWRficient
      Modules linked in: shpchp
      NIP: c000000000055fcc LR: c000000000055fb4 CTR: c0000000000df1fc
      REGS: c0000000012175d0 TRAP: 0300   Not tainted  (3.8.0-rc4-test-dirty)
      MSR: 9000000000009032 <SF,HV,EE,ME,IR,DR,RI>  CR: 24000088  XER: 00000000
      SOFTE: 0
      DAR: d0000800903a0100, DSISR: 42000000
      TASK = c0000000010e9008[0] 'swapper/0' THREAD: c000000001214000 CPU: 0
      GPR00: d0000800903a0000 c000000001217850 c0000000012167e0 0000000000000000
      GPR04: 0000000000000000 0000000000000724 0000000000000724 0000000000000000
      GPR08: 0000000000000000 0000000000000000 0000000000000001 0000000000a70000
      GPR12: 0000000024000080 c00000000fff0000 ffffffffffffffff 000000003ffffae0
      GPR16: ffffffffffffffff 0000000000a21198 0000000000000060 0000000000000000
      GPR20: 00000000008fdd35 0000000000a21258 000000003ffffaf0 0000000000000417
      GPR24: 0000000000a226d0 c000000000000000 0000000000000000 0000000000000000
      GPR28: c00000000138b358 0000000000000000 c000000001144818 d0000800903a0100
      NIP [c000000000055fcc] .set_astate+0x5c/0xa4
      LR [c000000000055fb4] .set_astate+0x44/0xa4
      Call Trace:
      [c000000001217850] [c000000000055fb4] .set_astate+0x44/0xa4 (unreliable)
      [c0000000012178f0] [c00000000005647c] .restore_astate+0x2c/0x34
      [c000000001217980] [c000000000054668] .pasemi_system_reset_exception+0x6c/0x88
      [c000000001217a00] [c000000000019ef0] .system_reset_exception+0x48/0x84
      [c000000001217a80] [c000000000001e40] system_reset_common+0x140/0x180
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      72640d88
    • L
      Merge tag 'md-3.8-fixes' of git://neil.brown.name/md · f94d4fe0
      Linus Torvalds 提交于
      Pull dmraid fix from NeilBrown:
       "Just one fix for md in 3.8
      
        dmraid assess redundancy and replacements slightly inaccurately which
        could lead to some degraded arrays failing to assemble."
      
      * tag 'md-3.8-fixes' of git://neil.brown.name/md:
        DM-RAID: Fix RAID10's check for sufficient redundancy
      f94d4fe0
    • L
      powerpc: Fix MAX_STACK_TRACE_ENTRIES too low warning for ppc32 · 41d82bdb
      Li Zhong 提交于
      This patch fixes MAX_STACK_TRACE_ENTRIES too low warning for ppc32,
      which is similar to commit 12660b17.
      Reported-by: NChristian Kujau <lists@nerdbynature.de>
      Signed-off-by: NLi Zhong <zhong@linux.vnet.ibm.com>
      Tested-by: NChristian Kujau <lists@nerdbynature.de>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      41d82bdb
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes · 45e72af0
      Linus Torvalds 提交于
      Pull GFS2 fix from Steven Whitehouse.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-fixes:
        GFS2: fix skip unlock condition
      45e72af0
    • L
      Merge tag 'iommu-fixes-v3.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · ae2c3d95
      Linus Torvalds 提交于
      Pull IOMMU fix from Joerg Roedel:
       "One fix for the AMD IOMMU driver to work around broken BIOSes found in
        the field.  Some BIOSes forget to enable a workaround for a hardware
        problem which might cause the IOMMU to stop working under high load
        conditions.  The fix makes sure this workaround is enabled."
      
      * tag 'iommu-fixes-v3.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
        IOMMU, AMD Family15h Model10-1Fh erratum 746 Workaround
      ae2c3d95
    • L
      Merge tag 'mfd-for-linus-3.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 · 325a86b6
      Linus Torvalds 提交于
      Pull MFD fixes from Samuel Ortiz:
       "This is the first pull request for MFD fixes for 3.8
      
        We have some build failure fixes (twl4030, vexpress, abx500 and
        tps65910), some actual runtime oops and lockup fixes (rtsx, da9052),
        and some more hypothetical NULL pointers dereferences fixes for
        pcf50633 and max776xx.
      
        Then we also have additional rtsx fixes for a correct switch output
        voltage and clock divider correctness for rtl8411 (rtsx driver), and
        irqdomain fix for db8550-prcmu, and some more cosmetic fixes for
        arizona and wm5102."
      
      * tag 'mfd-for-linus-3.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6:
        mfd: rtsx: Fix oops when rtsx_pci_sdmmc is not probed
        mfd: wm5102: Fix definition of WM5102_MAX_REGISTER
        mfd: twl4030: Don't warn about uninitialized return code
        mfd: da9052/53 lockup fix
        mfd: rtsx: Add clock divider hook
        mmc: rtsx: Call MFD hook to switch output voltage
        mfd: rtsx: Add output voltage switch hook
        mfd: Fix compile errors and warnings when !CONFIG_AB8500_BM
        mfd: vexpress: Export global functions to fix build error
        mfd: arizona: Check errors from regcache_sync()
        mfd: tc3589x: Use simple irqdomain
        mfd: pcf50633: Init pcf->dev before using it
        mfd: max77693: Init max77693->dev before using it
        mfd: max77686: Init max77686->dev before using it
        mfd: db8500-prcmu: Fix irqdomain usage
        mfd: tps65910: Select REGMAP_IRQ in Kconfig to fix build error
        mfd: arizona: Disable control interface reporting for WM5102 and WM5110
      325a86b6
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 22f83798
      Linus Torvalds 提交于
      Pull networking updates from David Miller:
       "Much more accumulated than I would have liked due to an unexpected
        bout with a nasty flu:
      
         1) AH and ESP input don't set ECN field correctly because the
            transport head of the SKB isn't set correctly, fix from Li
            RongQing.
      
         2) If netfilter conntrack zones are disabled, we can return an
            uninitialized variable instead of the proper error code.  Fix from
            Borislav Petkov.
      
         3) Fix double SKB free in ath9k driver beacon handling, from Felix
            Feitkau.
      
         4) Remove bogus assumption about netns cleanup ordering in
            nf_conntrack, from Pablo Neira Ayuso.
      
         5) Remove a bogus BUG_ON in the new TCP fastopen code, from Eric
            Dumazet.  It uses spin_is_locked() in it's test and is therefore
            unsuitable for UP.
      
         6) Fix SELINUX labelling regressions added by the tuntap multiqueue
            changes, from Paul Moore.
      
         7) Fix CRC errors with jumbo frame receive in tg3 driver, from Nithin
            Nayak Sujir.
      
         8) CXGB4 driver sets interrupt coalescing parameters only on first
            queue, rather than all of them.  Fix from Thadeu Lima de Souza
            Cascardo.
      
         9) Fix regression in the dispatch of read/write registers in dm9601
            driver, from Tushar Behera.
      
        10) ipv6_append_data miscalculates header length, from Romain KUNTZ.
      
        11) Fix PMTU handling regressions on ipv4 routes, from Steffen
            Klassert, Timo Teräs, and Julian Anastasov.
      
        12) In 3c574_cs driver, add necessary parenthesis to "x << y & z"
            expression.  From Nickolai Zeldovich.
      
        13) macvlan_get_size() causes underallocation netlink message space,
            fix from Eric Dumazet.
      
        14) Avoid division by zero in xfrm_replay_advance_bmp(), from Nickolai
            Zeldovich.  Amusingly the zero check was already there, we were
            just performing it after the modulus :-)
      
        15) Some more splice bug fixes from Eric Dumazet, which fix things
            mostly eminating from how we now more aggressively use high-order
            pages in SKBs.
      
        16) Fix size calculation bug when freeing hash tables in the IPSEC
            xfrm code, from Michal Kubecek.
      
        17) Fix PMTU event propagation into socket cached routes, from Steffen
            Klassert.
      
        18) Fix off by one in TX buffer release in netxen driver, from Eric
            Dumazet.
      
        19) Fix rediculous memory allocation requirements introduced by the
            tuntap multiqueue changes, from Jason Wang.
      
        20) Remove bogus AMD platform workaround in r8169 driver that causes
            major problems in normal operation, from Timo Teräs.
      
        21) virtio-net set affinity and select queue don't handle
            discontiguous cpu numbers properly, fix from Wanlong Gao.
      
        22) Fix a route refcounting issue in loopback driver, from Eric
            Dumazet.  There's a similar fix coming that we might add to the
            macvlan driver as well.
      
        23) Fix SKB leaks in batman-adv's distributed arp table code, from
            Matthias Schiffer.
      
        24) r8169 driver gives descriptor ownership back the hardware before
            we're done reading the VLAN tag out of it, fix from Francois
            Romieu.
      
        25) Checksums not calculated properly in GRE tunnel driver fix from
            Pravin B Shelar.
      
      26) Fix SCTP memory leak on namespace exit."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (101 commits)
        dm9601: support dm9620 variant
        SCTP: Free the per-net sysctl table on net exit. v2
        net: phy: icplus: fix broken INTR pin settings
        net: phy: icplus: Use the RGMII interface mode to configure clock delays
        IP_GRE: Fix kernel panic in IP_GRE with GRE csum.
        sctp: set association state to established in dupcook_a handler
        ip6mr: limit IPv6 MRT_TABLE identifiers
        r8169: fix vlan tag read ordering.
        net: cdc_ncm: use IAD provided by the USB core
        batman-adv: filter ARP packets with invalid MAC addresses in DAT
        batman-adv: check for more types of invalid IP addresses in DAT
        batman-adv: fix skb leak in batadv_dat_snoop_incoming_arp_reply()
        net: loopback: fix a dst refcounting issue
        virtio-net: reset virtqueue affinity when doing cpu hotplug
        virtio-net: split out clean affinity function
        virtio-net: fix the set affinity bug when CPU IDs are not consecutive
        can: pch_can: fix invalid error codes
        can: ti_hecc: fix invalid error codes
        can: c_can: fix invalid error codes
        r8169: remove the obsolete and incorrect AMD workaround
        ...
      22f83798
  3. 28 1月, 2013 12 次提交
  4. 27 1月, 2013 9 次提交