1. 11 Oct, 2007 9 commits
    • Bartlomiej Zolnierkiewicz's avatar
      ide: mode limiting fixes for user requested speed changes · 7670df73
      Bartlomiej Zolnierkiewicz authored
      * Add an extra argument to ide_max_dma_mode() for passing requested transfer
        mode.  Use it as an upper limit when finding the best DMA for device/host.
      
      * Rename ide_max_dma_mode() to ide_find_dma_mode() and at the same time add
        ide_max_dma_mode() wrapper which passes XFER_UDMA_6 as a requested mode to
        ide_find_dma_mode().  Also add inline ide_find_dma_mode() version for
        CONFIG_BLK_DEV_IDEDMA=n case.
      
      * Pass requested transfer mode from ide_find_dma_mode() to ide_get_mode_mask()
        to avoid false warning from eighty_ninty_three().
      
      * Use ide_find_dma_mode() to limit the user requested transfer mode in
        ide_rate_filter().  Also limit the requested mode by host max PIO mode.
      
      
      Above changes make ide_rate_filter() to:
      
      * Clip desired transfer mode down if it is invalid (values 0x0F, 0x13-0x19
        and 0x25-0x39, values > 0x46 were already clipped down, same for values
        0x25-0x39 but iff UDMA was not supported by the host).
      
      * Clip desired transfer mode down if it is currently unsupported by IDE core
        (PIO6 and MWDMA3-4, the latter were already clipped down but iff UDMA was
        not supported by the host).
      
      * Clip desired transfer mode down according to the host capabilities
        (UDMA modes were already clipped down but MWDMA/SWDMA/PIO weren't,
        also ->atapi_dma flag was not respected).
      
      * Clip desired transfer mode down according to the device capabilities
        (except PIO modes for now which require mode work) - shouldn't be a
        problem since ide_set_xfer_rate() is called _after_ device has accepted
        given transfer mode.
      
      and also result in a number of host driver specific bugfixes:
      
      * icside
        - clip unsupported PIO5 mode down
        - fix unsupported/invalid modes being set in drive->current_speed
      
      * ide-cris
        - clip unsupported PIO5 and SWDMA0-2 modes down
        - clip DMA modes down for ATAPI devices
        - fix BUG() on unsupported/invalid modes
      
      * au1xxx-ide
        - clip unsupported PIO5, SWDMA0-2 and MWDMA0-2
          (if BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA=n) modes down
      
      * aec62xx
        - clip unsupported PIO5 and SWDMA0-2 modes down
        - clip DMA modes down for ATAPI devices
        - fix 0x00 being programmed as PIO timing for unsupported/invalid modes
        - fix unsupported/invalid modes being set on the device
      
      * alim15x3
        - clip DMA modes down for ATAPI devices (chipset revision == 0x20 only)
        - fix theoretical OOPS for 0x0F mode
        - fix unsupported/invalid modes being set on the device
      
      * amd74xx
        - clip unsupported SWDMA0-2 (on COBRA_7401 revs <= 7) modes down
        - fix random PIO timings being set for unsupported/invalid modes
        - fix unsupported/invalid modes being set on the device
      
      * atiixp
        - clip unsupported PIO5 and SWDMA0-2 modes down
        - fix cached MWDMA mode being cleared for unsupported/invalid modes
        - fix PIO{0,2} timings being programmed for unsupported/invalid modes
        - fix theoretical OOPS for PIO5-6 and 0x0F modes
        - fix unsupported/invalid modes being set on the device
      
      * cmd64x
        - clip unsupported SWDMA0-2 modes down
      
      * cs5530
        - clip unsupported PIO5 and SWDMA0-2 modes down
        - fix unsupported/invalid modes being set on the device
        - fix BUG() on unsupported/invalid modes
          (which happened if the device accepted the setting)
      
      * cs5535
        - clip unsupported PIO5 and SWDMA0-2 modes down
        - fix unsupported/invalid modes being set on the device
        - fix theoretical OOPS for PIO5-6 and 0x0F modes
      
      * hpt34x
        - clip DMA modes down for ATAPI devices
        - fix invalid timings being programmed for unsupported/invalid modes
        - fix unsupported/invalid modes being set on the device
      
      * hpt366
        - clip unsupported PIO5 and SWDMA0-2 modes down
        - fix PIO0 timings being programmed for unsupported/invalid modes
        - fix DMA timings being cleared for MWDMA3-4 and 0x25-0x39 modes
        - fix unsupported/invalid modes being set on the device
      
      * it8213
        - clip unsupported PIO5, SWDMA0-1 and MWDMA0 modes down
      
      * it821x
        - clip unsupported PIO5 and SWDMA0-2 modes down
        - clip DMA modes down for ATAPI devices
          (chipset in smart mode and revision 0x10 in pass-through mode)
      
      * jmicron
        - clip unsupported SWDMA0-2 modes down
        - fix unsupported/invalid modes being set on the device
      
      * pdc202xx_new
        - clip unsupported PIO5 and SWDMA0-2 modes down
        - fix unsupported/invalid modes being set on the device
      
      * pdc202xx_old
        - clip unsupported PIO5 mode down
        - fix incorrect timings being set for unsupported/invalid modes
        - fix unsupported/invalid modes being set on the device
      
      * piix
        - clip unsupported PIO5, SWDMA0-1 and MWDMA0 modes down
      
      * sc1200
        - clip unsupported PIO5 and SWDMA0-2 modes down
        - fix unsupported/invalid modes being set on the device
        - fix BUG() on unsupported/invalid modes
          (which happened if the device accepted the setting)
      
      * scc_pata
        - clip unsupported PIO5, SWDMA0-2 and MWDMA0-2 modes down
      
      * serverworks
        - clip unsupported PIO5 and SWDMA0-2 modes down
        - fix DMA/UDMA timings/settings being cleared for unsupported/invalid modes
        - fix unsupported/invalid modes being set on the device
      
      * siimage
        - clip unsupported PIO5 and SWDMA0-2 modes down
        - clip DMA modes down for ATAPI devices (SATA chipsets)
      
      * sis5513
        - clip unsupported PIO5 mode down
        - fix BUG() on unsupported/invalid modes
      
      * sl82c105
        - clip unsupported SWDMA0-2 modes down
      
      * slc90e66
        - clip unsupported PIO5, SWDMA0-1 and MWDMA0 modes down
      
      * tc86c001
        - clip unsupported PIO5 and SWDMA0-2 modes down
        - fix PIO0 timings being programmed for PIO5/0x0F/SWDMA0-2/0x13-0x19 modes
        - fix invalid 0x00 DMA timing being programmed for MWDMA3-4/0x25-0x39 modes
        - fix unsupported/invalid modes being set on the device
      
      * triflex
        - clip unsupported PIO5 mode down
      
      * via82cxxx
        - fix random PIO timings being set for unsupported/invalid modes
        - fix unsupported/invalid modes being set on the device
      
      * pmac
        - clip unsupported PIO5 and SWDMA0-2 modes down
      
      * cmd640/ht6560b
        - clip DMA modes down (if CONFIG_BLK_DEV_IDEDMA=y)
        - fix PIO5 being clipped to PIO4 (if CONFIG_BLK_DEV_IDEDMA=n)
      
      * opti621
        - clip DMA modes down (if CONFIG_BLK_DEV_IDEDMA=y)
        - clip unsupported PIO4 to PIO3 (if CONFIG_BLK_DEV_IDEDMA=n)
      
      
      While at it:
      
      * Use ide_rate_filter() in cs5520.c::cs5520_tune_chipset().
      
      * Remove no longer needed checks from hpt366.c::hpt3{6,7}x_tune_chipset().
      Acked-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      7670df73
    • Bartlomiej Zolnierkiewicz's avatar
      ide: add missing ide_rate_filter() calls to ->speedproc()-s · a8028fcb
      Bartlomiej Zolnierkiewicz authored
      * Fix icside, cris-ide, au1xxx-ide, amd74xx, via82cxxx and pmac host drivers
        to use ide_rate_filter().
      
        This results in the following modes (from user requests) being clipped down:
        - invalid modes (values 0x46-0xFF)  [ for all hosts ]
        - unsupported by a host UDMA modes  [ for hosts which support UDMA]
        - all UDMA modes and MWDMA3-4 modes [ for hosts which don't support UDMA ]
        - invalid modes (values 0x25-0x39)  [ for hosts which don't support UDMA ]
      
      * Host driver specific changes in behavior:
      
        icside:
          - no change
      
        cris-ide
          - clip unsupported UDMA3-6 modes down
          - fix BUG() on trying to set unsupported UDMA3-6 modes
      
        au1xxx-ide/pmac
          - clip unsupported UDMA modes down
      
        amd74xx/via82cxxx
          - clip unsupported UDMA modes down
          - fix random PIO timings being set for unsupported/invalid modes
          - fix unsupported/invalid modes being set on the device
      
      * While at it remove no longer needed checks from pmac.c driver.
      Acked-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      a8028fcb
    • Sergei Shtylyov's avatar
      ide: call udma_filter() before resorting to the UltraDMA mask · 851dd33b
      Sergei Shtylyov authored
      Give the udma_filter() method call precedence over using the mode masks.
      Signed-off-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      851dd33b
    • Tejun Heo's avatar
      ide: make jmicron match vendor and device class · bda7970c
      Tejun Heo authored
      PATA part of all current JMB controllers behave the same way and
      JMicron confirms that all future ones will stay compatible.  Matching
      vendor and device class is enough.
      
      For backward compatibility, jmicron still needs to match 361,3,5,6,8
      DIDs regardless of device class if libata is not configured but won't
      need further DID update from this point.
      
      Bart: cosmetic fixes to jmicron_chipset
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Cc: Ethan Hsiao <ethanhsiao@jmicron.com>
      Cc: Justin Tsai <justin@jmicron.com>
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      bda7970c
    • Sergei Shtylyov's avatar
      pdc202xx_new: switch to using pci_get_slot() (take 2) · 07047935
      Sergei Shtylyov authored
      Switch to using pci_get_slot() in init_setup_pdc20270() to get to the mate chip
      behind DC21150 bridge as there's no need for the driver itself to walk the list
      of the PCI devices (and the driver didn't check the bus # of the found device).
      While at it, make it emit warning about IRQ # being fixed up (just like hpt366.c
      does) and "beautify" this whole function as well as init_setup_pdc20276()...
      Signed-off-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      07047935
    • Shaohua Li's avatar
      ide: hook ACPI _PSx method to IDE power on/off · 5e32132b
      Shaohua Li authored
      ACPI spec defines the sequence of IDE power on/off:
      Powering down:
      	Call _GTM.
      	Power down drive (calls _PS3 method and turns off power planes).
      Powering up:
      	Power up drive (calls _PS0 method if present and turns on power planes).
      	Call _STM passing info from _GTM (possibly modified), with ID data from
      	each drive.
      	Initialize the channel.
      	May modify the results of _GTF.
      	For each drive:
      		Call _GTF.
      		Execute task file (possibly modified).
      This patch adds the missed _PS0/_PS3 methods call.
      Signed-off-by: default avatarShaohua Li <shaohua.li@intel.com>
      Acked-by: default avatarLen Brown <len.brown@intel.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      5e32132b
    • Anton Vorontsov's avatar
      ide: Platform IDE driver · 8cb1f567
      Anton Vorontsov authored
      This is now very similar to pata_platform.c, they both use
      same platform data structure and same resources.
      
      To achieve that, byte_lanes_swapping platform data variable
      and platform specified iops removed from that driver. It's fine,
      since those were never used anyway.
      
      pata_platform and ide_platform are carrying same driver names,
      to easily switch between these drivers, without need to touch
      platform code.
      
      Bart:
      - build fix from Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
      Signed-off-by: default avatarVitaly Bordug <vitb@kernel.crashing.org>
      Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
      Acked-by: default avatarAlan Cox <alan@redhat.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      8cb1f567
    • Sergei Shtylyov's avatar
      hpt366: MWDMA filter for SATA cards (take 2) · b4e44369
      Sergei Shtylyov authored
      The Marvell bridge chips used on HighPoint SATA cards do not seem to support
      the MWDMA modes (at least that could be seen in their so-called drivers :-),
      so the driver needs to account for this -- to achieve this:
      
      - add mdma_filter() method from the original patch by Bartlomiej Zolnierkiewicz
        with his consent;
      
      - install the method for all chips to only return empty mask if a SATA drive
        is detected on HPT372{AN]/374 chips...
      Signed-off-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      b4e44369
    • Shane Huang's avatar
      atiixp: SB700 contains more than one IDE channel · 7cfa7168
      Shane Huang authored
      SB700 supports one physical IDE channel, but SB700 SATA controller
      supports combined mode.  When the SATA combined mode is enabled,
      two SATA ports (port4 and port5) share one IDE channel from IDE
      controller, and PATA will share the other IDE channel.
      
      Our previous patch adding SB700 IDE device ID only supports one
      IDE channel, which contains bug.  The attached patch fixes the bug.
      Signed-off-by: default avatar"Shane Huang" <Shane.Huang@amd.com>
      Acked-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
      7cfa7168
  2. 09 Oct, 2007 7 commits
  3. 08 Oct, 2007 11 commits
    • Maarten Bressers's avatar
      Correct Makefile rule for generating custom keymap · e2a57a81
      Maarten Bressers authored
      When building a custom keymap, after setting GENERATE_KEYMAP := 1 in
      drivers/char/Makefile, the kernel build fails like this:
      
          CC      drivers/char/vt.o
        make[2]: *** No rule to make target `drivers/char/%.map', needed by `drivers/char/defkeymap.c'.  Stop.
        make[1]: *** [drivers/char] Error 2
        make: *** [drivers] Error 2
      
      This was caused by commit af8b1287, which
      deleted a necessary colon from the Makefile rule that generates the keymap,
      since that rule contains both a target and a target-pattern.  The following
      patch puts the colon back:
      Signed-off-by: default avatarMaarten Bressers <mbres@gentoo.org>
      Cc: Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e2a57a81
    • Karsten Keil's avatar
      ISDN: Fix data access out of array bounds · d39d5ed9
      Karsten Keil authored
      Fix against access random data bytes outside the dev->chanmap array.
      Thanks to Oliver Neukum for pointing me to this issue.
      Signed-off-by: default avatarKarsten Keil <kkeil@suse.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d39d5ed9
    • Linus Torvalds's avatar
      Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 · e46dc1da
      Linus Torvalds authored
      * 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
        [IPv6]: Fix ICMPv6 redirect handling with target multicast address
        [PKT_SCHED] cls_u32: error code isn't been propogated properly
        [ROSE]: Fix rose.ko oops on unload
        [TCP]: Fix fastpath_cnt_hint when GSO skb is partially ACKed
      e46dc1da
    • Yan Zheng's avatar
      AIO: fix cleanup in io_submit_one(...) · 87e2831c
      Yan Zheng authored
      When IOCB_FLAG_RESFD flag is set and iocb->aio_resfd is incorrect,
      statement 'goto out_put_req' is executed. At label 'out_put_req',
      aio_put_req(..) is called, which requires 'req->ki_filp' set.
      
      Signed-off-by: Yan Zheng<yanzheng@21cn.com>
      Cc: Zach Brown <zach.brown@oracle.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      87e2831c
    • Yan Zheng's avatar
      fix page release issue in filemap_fault · 745ad48e
      Yan Zheng authored
      find_lock_page increases page's usage count, we should decrease it
      before return VM_FAULT_SIGBUS
      
      Signed-off-by: Yan Zheng<yanzheng@21cn.com>
      Cc: Nick Piggin <nickpiggin@yahoo.com.au>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      745ad48e
    • Yan Zheng's avatar
      fix VM_CAN_NONLINEAR check in sys_remap_file_pages · dd204d63
      Yan Zheng authored
      The test for VM_CAN_NONLINEAR always fails
      
      Signed-off-by: Yan Zheng<yanzheng@21cn.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      dd204d63
    • Peter Zijlstra's avatar
      mm: set_page_dirty_balance() vs ->page_mkwrite() · a200ee18
      Peter Zijlstra authored
      All the current page_mkwrite() implementations also set the page dirty. Which
      results in the set_page_dirty_balance() call to _not_ call balance, because the
      page is already found dirty.
      
      This allows us to dirty a _lot_ of pages without ever hitting
      balance_dirty_pages().  Not good (tm).
      
      Force a balance call if ->page_mkwrite() was successful.
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a200ee18
    • Brian Haley's avatar
      [IPv6]: Fix ICMPv6 redirect handling with target multicast address · bf0b48df
      Brian Haley authored
      When the ICMPv6 Target address is multicast, Linux processes the 
      redirect instead of dropping it.  The problem is in this code in 
      ndisc_redirect_rcv():
      
               if (ipv6_addr_equal(dest, target)) {
                       on_link = 1;
               } else if (!(ipv6_addr_type(target) & IPV6_ADDR_LINKLOCAL)) {
                       ND_PRINTK2(KERN_WARNING
                                  "ICMPv6 Redirect: target address is not 
      link-local.\n");
                       return;
               }
      
      This second check will succeed if the Target address is, for example, 
      FF02::1 because it has link-local scope.  Instead, it should be checking 
      if it's a unicast link-local address, as stated in RFC 2461/4861 Section 
      8.1:
      
             - The ICMP Target Address is either a link-local address (when
               redirected to a router) or the same as the ICMP Destination
               Address (when redirected to the on-link destination).
      
      I know this doesn't explicitly say unicast link-local address, but it's 
      implied.
      
      This bug is preventing Linux kernels from achieving IPv6 Logo Phase II 
      certification because of a recent error that was found in the TAHI test 
      suite - Neighbor Disovery suite test 206 (v6LC.2.3.6_G) had the 
      multicast address in the Destination field instead of Target field, so 
      we were passing the test.  This won't be the case anymore.
      
      The patch below fixes this problem, and also fixes ndisc_send_redirect() 
      to not send an invalid redirect with a multicast address in the Target 
      field.  I re-ran the TAHI Neighbor Discovery section to make sure Linux 
      passes all 245 tests now.
      Signed-off-by: default avatarBrian Haley <brian.haley@hp.com>
      Acked-by: default avatarDavid L Stevens <dlstevens@us.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bf0b48df
    • Stephen Hemminger's avatar
    • Alexey Dobriyan's avatar
      [ROSE]: Fix rose.ko oops on unload · 891e6a93
      Alexey Dobriyan authored
      Commit a3d38402 aka
      "[AX.25]: Fix unchecked rose_add_loopback_neigh uses"
      transformed rose_loopback_neigh var into statically allocated one.
      However, on unload it will be kfree's which can't work.
      
      Steps to reproduce:
      
      	modprobe rose
      	rmmod rose
      
      BUG: unable to handle kernel NULL pointer dereference at virtual address 00000008
       printing eip:
      c014c664
      *pde = 00000000
      Oops: 0000 [#1]
      PREEMPT DEBUG_PAGEALLOC
      Modules linked in: rose ax25 fan ufs loop usbhid rtc snd_intel8x0 snd_ac97_codec ehci_hcd ac97_bus uhci_hcd thermal usbcore button processor evdev sr_mod cdrom
      CPU:    0
      EIP:    0060:[<c014c664>]    Not tainted VLI
      EFLAGS: 00210086   (2.6.23-rc9 #3)
      EIP is at kfree+0x48/0xa1
      eax: 00000556   ebx: c1734aa0   ecx: f6a5e000   edx: f7082000
      esi: 00000000   edi: f9a55d20   ebp: 00200287   esp: f6a5ef28
      ds: 007b   es: 007b   fs: 0000  gs: 0033  ss: 0068
      Process rmmod (pid: 1823, ti=f6a5e000 task=f7082000 task.ti=f6a5e000)
      Stack: f9a55d20 f9a5200c 00000000 00000000 00000000 f6a5e000 f9a5200c f9a55a00 
             00000000 bf818cf0 f9a51f3f f9a55a00 00000000 c0132c60 65736f72 00000000 
             f69f9630 f69f9528 c014244a f6a4e900 00200246 f7082000 c01025e6 00000000 
      Call Trace:
       [<f9a5200c>] rose_rt_free+0x1d/0x49 [rose]
       [<f9a5200c>] rose_rt_free+0x1d/0x49 [rose]
       [<f9a51f3f>] rose_exit+0x4c/0xd5 [rose]
       [<c0132c60>] sys_delete_module+0x15e/0x186
       [<c014244a>] remove_vma+0x40/0x45
       [<c01025e6>] sysenter_past_esp+0x8f/0x99
       [<c012bacf>] trace_hardirqs_on+0x118/0x13b
       [<c01025b6>] sysenter_past_esp+0x5f/0x99
       =======================
      Code: 05 03 1d 80 db 5b c0 8b 03 25 00 40 02 00 3d 00 40 02 00 75 03 8b 5b 0c 8b 73 10 8b 44 24 18 89 44 24 04 9c 5d fa e8 77 df fd ff <8b> 56 08 89 f8 e8 84 f4 fd ff e8 bd 32 06 00 3b 5c 86 60 75 0f 
      EIP: [<c014c664>] kfree+0x48/0xa1 SS:ESP 0068:f6a5ef28
      Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      891e6a93
    • Ilpo Järvinen's avatar
      [TCP]: Fix fastpath_cnt_hint when GSO skb is partially ACKed · 48611c47
      Ilpo Järvinen authored
      When only GSO skb was partially ACKed, no hints are reset,
      therefore fastpath_cnt_hint must be tweaked too or else it can
      corrupt fackets_out. The corruption to occur, one must have
      non-trivial ACK/SACK sequence, so this bug is not very often
      that harmful. There's a fackets_out state reset in TCP because
      fackets_out is known to be inaccurate and that fixes the issue
      eventually anyway.
      
      In case there was also at least one skb that got fully ACKed,
      the fastpath_skb_hint is set to NULL which causes a recount for
      fastpath_cnt_hint (the old value won't be accessed anymore),
      thus it can safely be decremented without additional checking.
      
      Reported by Cedric Le Goater <clg@fr.ibm.com>
      Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      48611c47
  4. 07 Oct, 2007 12 commits
  5. 06 Oct, 2007 1 commit