1. 30 Nov, 2012 1 commit
    • Krzysztof Mazur's avatar
      pppoatm: drop frames to not-ready vcc · 071d9393
      Krzysztof Mazur authored
      The vcc_destroy_socket() closes vcc before the protocol is detached
      from vcc by calling vcc->push() with NULL skb. This leaves some time
      window, where the protocol may call vcc->send() on closed vcc
      and crash.
      
      Now pppoatm_send(), like vcc_sendmsg(), checks for vcc flags that
      indicate that vcc is not ready. If the vcc is not ready we just
      drop frame. Queueing frames is much more complicated because we
      don't have callbacks that inform us about vcc flags changes.
      Signed-off-by: default avatarKrzysztof Mazur <krzysiek@podlesie.net>
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      071d9393
  2. 28 Nov, 2012 4 commits
  3. 26 Nov, 2012 2 commits
    • David Woodhouse's avatar
      atm: br2684: Fix excessive queue bloat · ae088d66
      David Woodhouse authored
      There's really no excuse for an additional wmem_default of buffering
      between the netdev queue and the ATM device. Two packets (one in-flight,
      and one ready to send) ought to be fine. It's not as if it should take
      long to get another from the netdev queue when we need it.
      
      If necessary we can make the queue space configurable later, but I don't
      think it's likely to be necessary.
      
      cf. commit 9d02daf7 (pppoatm: Fix
      excessive queue bloat) which did something very similar for PPPoATM.
      
      Note that there is a tremendously unlikely race condition which may
      result in qspace temporarily going negative. If a CPU running the
      br2684_pop() function goes off into the weeds for a long period of time
      after incrementing qspace to 1, but before calling netdev_wake_queue()...
      and another CPU ends up calling br2684_start_xmit() and *stopping* the
      queue again before the first CPU comes back, the netdev queue could
      end up being woken when qspace has already reached zero.
      
      An alternative approach to coping with this race would be to check in
      br2684_start_xmit() for qspace==0 and return NETDEV_TX_BUSY, but just
      using '> 0' and '< 1' for comparison instead of '== 0' and '!= 0' is
      simpler. It just warranted a mention of *why* we do it that way...
      
      Move the call to atmvcc->send() to happen *after* the accounting and
      potentially stopping the netdev queue, in br2684_xmit_vcc(). This matters
      if the ->send() call suffers an immediate failure, because it'll call
      br2684_pop() with the offending skb before returning. We want that to
      happen *after* we've done the initial accounting for the packet in
      question. Also make it return an appropriate success/failure indication
      while we're at it.
      
      Tested by running 'ping -l 1000 bottomless.aaisp.net.uk' from within my
      network, with only a single PPPoE-over-BR2684 link running. And after
      setting txqueuelen on the nas0 interface to something low (5, in fact).
      Before the patch, we'd see about 15 packets being queued and a resulting
      latency of ~56ms being reached. After the patch, we see only about 8,
      which is fairly much what we expect. And a max latency of ~36ms. On this
      OpenWRT box, wmem_default is 163840.
      Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
      Reviewed-by: default avatarKrzysztof Mazur <krzysiek@podlesie.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ae088d66
    • Ben Hutchings's avatar
      dsa: Hide core config options; make drivers select what they need · b3422a31
      Ben Hutchings authored
      Commit 82167cb8 ('net: dsa/slave: Fix
      compilation warnings') fixed one possible invalid configuration
      (NET_DSA enabled with no trailer formats) but added others: drivers
      can select NET_DSA without its dependencies being met.
      
      It's not very useful to make either the DSA core or the tagging
      formats manually selectable without a driver to use them, so:
      
      1. Define a hidden HAVE_NET_DSA option and move the dependencies of
         NET_DSA to that.  While we're at it, drop the deprecated
         EXPERIMENTAL dependency.
      2. Make NET_DSA and the drivers dependent on HAVE_NET_DSA.
      3. Hide the tagging format options again.
      4. Make drivers select both NET_DSA and the appropriate tagging format
         option.
      Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
      Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b3422a31
  4. 25 Nov, 2012 12 commits
  5. 24 Nov, 2012 4 commits
    • Linus Torvalds's avatar
      Merge tag 'sound-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 194d9831
      Linus Torvalds authored
      Pull sound build error fix from Takashi Iwai:
       "Only a single commit for fixing the build error without CONFIG_PM in
        hda driver."
      
      * tag 'sound-3.7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: hda - Fix build without CONFIG_PM
      194d9831
    • Takashi Iwai's avatar
      ALSA: hda - Fix build without CONFIG_PM · d846b174
      Takashi Iwai authored
      I forgot this again...  codec->in_pm is in #ifdef CONFIG_PM
      Reported-by: default avatarMarkus Trippelsdorf <markus@trippelsdorf.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      d846b174
    • Linus Torvalds's avatar
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2654ad44
      Linus Torvalds authored
      Pull x86 arch fixes from Peter Anvin:
       "Here is a collection of fixes for 3.7-rc7.  This is a superset of
        tglx' earlier pull request."
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86-64: Fix ordering of CFI directives and recent ASM_CLAC additions
        x86, microcode, AMD: Add support for family 16h processors
        x86-32: Export kernel_stack_pointer() for modules
        x86-32: Fix invalid stack address while in softirq
        x86, efi: Fix processor-specific memcpy() build error
        x86: remove dummy long from EFI stub
        x86, mm: Correct vmflag test for checking VM_HUGETLB
        x86, amd: Disable way access filter on Piledriver CPUs
        x86/mce: Do not change worker's running cpu in cmci_rediscover().
        x86/ce4100: Fix PCI configuration register access for devices without interrupts
        x86/ce4100: Fix reboot by forcing the reboot method to be KBD
        x86/ce4100: Fix pm_poweroff
        MAINTAINERS: Update email address for Robert Richter
        x86, microcode_amd: Change email addresses, MAINTAINERS entry
        MAINTAINERS: Change Boris' email address
        EDAC: Change Boris' email address
        x86, AMD: Change Boris' email address
      2654ad44
    • Linus Torvalds's avatar
      Merge tag 'for-linus-20121123' of git://git.infradead.org/mtd-2.6 · 35f95d22
      Linus Torvalds authored
      Pull MTD fixes from David Woodhouse:
       "The most important part of this is that it fixes a regression in
        Samsung NAND chip detection, introduced by some rework which went into
        3.7.  The initial fix wasn't quite complete, so it's in two parts.  In
        fact the first part is committed twice (Artem committed his own copy
        of the same patch) and I've merged Artem's tree into mine which
        already had that fix.
      
        I'd have recommitted that to make it somewhat cleaner, but figured by
        this point in the release cycle it was better to merge *exactly* the
        commits which have been in linux-next.
      
        If I'd recommitted, I'd also omit the sparse warning fix.  But it's
        there, and it's harmless — just marking one function as 'static' in
        onenand code.
      
        This also includes a couple more fixes for stable: an AB-BA deadlock
        in JFFS2, and an invalid range check in slram."
      
      * tag 'for-linus-20121123' of git://git.infradead.org/mtd-2.6:
        mtd: nand: fix Samsung SLC detection regression
        mtd: nand: fix Samsung SLC NAND identification regression
        jffs2: Fix lock acquisition order bug in jffs2_write_begin
        mtd: onenand: Make flexonenand_set_boundary static
        mtd: slram: invalid checking of absolute end address
        mtd: ofpart: Fix incorrect NULL check in parse_ofoldpart_partitions()
        mtd: nand: fix Samsung SLC NAND identification regression
      35f95d22
  6. 23 Nov, 2012 17 commits