1. 17 5月, 2006 6 次提交
  2. 16 5月, 2006 6 次提交
  3. 13 5月, 2006 1 次提交
    • S
      [NEIGH]: Fix IP-over-ATM and ARP interaction. · bd89efc5
      Simon Kelley 提交于
      The classical IP over ATM code maintains its own IPv4 <-> <ATM stuff>
      ARP table, using the standard neighbour-table code. The
      neigh_table_init function adds this neighbour table to a linked list
      of all neighbor tables which is used by the functions neigh_delete()
      neigh_add() and neightbl_set(), all called by the netlink code.
      
      Once the ATM neighbour table is added to the list, there are two
      tables with family == AF_INET there, and ARP entries sent via netlink
      go into the first table with matching family. This is indeterminate
      and often wrong.
      
      To see the bug, on a kernel with CLIP enabled, create a standard IPv4
      ARP entry by pinging an unused address on a local subnet. Then attempt
      to complete that entry by doing
      
      ip neigh replace <ip address> lladdr <some mac address> nud reachable
      
      Looking at the ARP tables by using 
      
      ip neigh show
      
      will reveal two ARP entries for the same address. One of these can be
      found in /proc/net/arp, and the other in /proc/net/atm/arp.
      
      This patch adds a new function, neigh_table_init_no_netlink() which
      does everything the neigh_table_init() does, except add the table to
      the netlink all-arp-tables chain. In addition neigh_table_init() has a
      check that all tables on the chain have a distinct address family.
      The init call in clip.c is changed to call
      neigh_table_init_no_netlink().
      
      Since ATM ARP tables are rather more complicated than can currently be
      handled by the available rtattrs in the netlink protocol, no
      functionality is lost by this patch, and non-ATM ARP manipulation via
      netlink is rescued. A more complete solution would involve a rtattr
      for ATM ARP entries and some way for the netlink code to give
      neigh_add and friends more information than just address family with
      which to find the correct ARP table.
      
      [ I've changed the assertion checking in neigh_table_init() to not
        use BUG_ON() while holding neigh_tbl_lock.  Instead we remember that
        we found an existing tbl with the same family, and after dropping
        the lock we'll give a diagnostic kernel log message and a stack dump.
        -DaveM ]
      Signed-off-by: NSimon Kelley <simon@thekelleys.org.uk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bd89efc5
  4. 11 5月, 2006 2 次提交
  5. 09 5月, 2006 4 次提交
    • P
      powerpc/32: Define an is_kernel_addr() to fix ARCH=ppc compilation · e4de0021
      Paul Mackerras 提交于
      My commit 6bfd93c3 broke the ARCH=ppc
      compilation by using the is_kernel_addr() macro in asm/uaccess.h.
      This fixes it by defining a suitable is_kernel_addr() for ARCH=ppc.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      e4de0021
    • S
      sky2: backout NAPI reschedule · d3240312
      Stephen Hemminger 提交于
      This is a backout of earlier patch.
      
      The whole rescheduling hack was a bad idea. It doesn't really solve
      the problem and it makes the code more complicated for no good reason.
      Signed-off-by: NStephen Hemminger <shemminger@osdl.org>
      d3240312
    • A
      [PATCH] x86_64: Avoid EBDA area in early boot allocator · ac71d12c
      Andi Kleen 提交于
      Based on analysis&patch from Robert Hentosch
      
      Observed on a Dell PE6850 with 16GB
      
      The problem occurs very early on, when the kernel allocates space for the
      temporary memory map called bootmap. The bootmap overlaps the EBDA region.
      EBDA region is not historically reserved in the e820 mapping. When the
      bootmap is freed it marks the EBDA region as usable.
      
      If you notice in setup.c there is already code to work around the EBDA
      in reserve_ebda_region(), this check however occurs after the bootmap
      is allocated and doesn't prevent the bootmap from using this range.
      
      AK: I redid the original patch. Thanks also to Jan Beulich for
      spotting some mistakes.
      
      Cc: Robert_Hentosch@dell.com
      Cc: jbeulich@novell.com
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      ac71d12c
    • K
      [PATCH] x86_64: avoid IRQ0 ioapic pin collision · e0c1e9bf
      Kimball Murray 提交于
      The patch addresses a problem with ACPI SCI interrupt entry, which gets
      re-used, and the IRQ is assigned to another unrelated device.  The patch
      corrects the code such that SCI IRQ is skipped and duplicate entry is
      avoided.  Second issue came up with VIA chipset, the problem was caused by
      original patch assigning IRQs starting 16 and up.  The VIA chipset uses
      4-bit IRQ register for internal interrupt routing, and therefore cannot
      handle IRQ numbers assigned to its devices.  The patch corrects this
      problem by allowing PCI IRQs below 16.
      
      Cc: len.brown@intel.com
      
      Signed-off by: Natalie Protasevich <Natalie.Protasevich@unisys.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      e0c1e9bf
  6. 08 5月, 2006 3 次提交
  7. 07 5月, 2006 2 次提交
  8. 06 5月, 2006 6 次提交
  9. 05 5月, 2006 1 次提交
  10. 04 5月, 2006 7 次提交
  11. 03 5月, 2006 2 次提交
    • P
      powerpc: Fix incorrect might_sleep in __get_user/__put_user on kernel addresses · 6bfd93c3
      Paul Mackerras 提交于
      We have a case where __get_user and __put_user can validly be used
      on kernel addresses in interrupt context - namely, the alignment
      exception handler, as our get/put_unaligned just do a single access
      and rely on the alignment exception handler to fix things up in the
      rare cases where the cpu can't handle it in hardware.  Thus we can
      get alignment exceptions in the network stack at interrupt level.
      The alignment exception handler does a __get_user to read the
      instruction and blows up in might_sleep().
      
      Since a __get_user on a kernel address won't actually ever sleep,
      this makes the might_sleep conditional on the address being less
      than PAGE_OFFSET.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      6bfd93c3
    • V
      [PATCH] ppc32 CPM_UART: fixes and improvements · 6e197696
      Vitaly Bordug 提交于
      A number of small issues are fixed, and added the header file, missed from the
      original series. With this, driver should be pretty stable as tested among
      both platform-device-driven and "old way" boards. Also added missing GPL
      statement , and updated year field on existing ones to reflect
      code update.
      Signed-off-by: NVitaly Bordug <vbordug@ru.mvista.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      6e197696