1. 08 Nov, 2006 5 commits
  2. 07 Nov, 2006 10 commits
  3. 05 Nov, 2006 10 commits
    • Adrian Bunk's avatar
      Linux 2.6.16.31-rc1 · afaa018c
      Adrian Bunk authored
      afaa018c
    • Patrick McHardy's avatar
      [NETFILTER]: Fix ip6_tables extension header bypass bug (CVE-2006-4572) · 0ddfcc96
      Patrick McHardy authored
      As reported by Mark Dowd <Mark_Dowd@McAfee.com>, ip6_tables is susceptible
      to a fragmentation attack causing false negatives on extension header
      matches.
      
      When extension headers occur in the non-first fragment after the fragment
      header (possibly with an incorrect nexthdr value in the fragment header)
      a rule looking for this extension header will never match.
      
      Drop fragments that are at offset 0 and don't contain the final protocol
      header regardless of the ruleset, since this should not happen normally.
      Since all extension headers are before the protocol header this makes sure
      an extension header is either not present or in the first fragment, where
      we can properly parse it.
      
      With help from Yasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp>.
      Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      0ddfcc96
    • Patrick McHardy's avatar
      [NETFILTER]: Fix ip6_tables protocol bypass bug (CVE-2006-4572) · 6ac62be8
      Patrick McHardy authored
      As reported by Mark Dowd <Mark_Dowd@McAfee.com>, ip6_tables is susceptible
      to a fragmentation attack causing false negatives on protocol matches.
      
      When the protocol header doesn't follow the fragment header immediately,
      the fragment header contains the protocol number of the next extension
      header. When the extension header and the protocol header are sent in
      a second fragment a rule like "ip6tables .. -p udp -j DROP" will never
      match.
      
      Drop fragments that are at offset 0 and don't contain the final protocol
      header regardless of the ruleset, since this should not happen normally.
      
      With help from Yasuyuki KOZAKAI <yasuyuki.kozakai@toshiba.co.jp>.
      Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      6ac62be8
    • Neil Brown's avatar
      knfsd: Fix race that can disable NFS server. · 0ac0a208
      Neil Brown authored
      This is a long standing bug that seems to have only recently become
      apparent, presumably due to increasing use of NFS over TCP - many
      distros seem to be making it the default.
      
      The SK_CONN bit gets set when a listening socket may be ready
      for an accept, just as SK_DATA is set when data may be available.
      
      It is entirely possible for svc_tcp_accept to be called with neither
      of these set.  It doesn't happen often but there is a small race in
      svc_sock_enqueue as SK_CONN and SK_DATA are tested outside the
      spin_lock.  They could be cleared immediately after the test and
      before the lock is gained.
      
      This normally shouldn't be a problem.  The sockets are non-blocking so
      trying to read() or accept() when ther is nothing to do is not a problem.
      
      However: svc_tcp_recvfrom makes the decision "Should I accept() or
      should I read()" based on whether SK_CONN is set or not.  This usually
      works but is not safe.  The decision should be based on whether it is
      a TCP_LISTEN socket or a TCP_CONNECTED socket.
      Signed-off-by: default avatarNeil Brown <neilb@suse.de>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      0ac0a208
    • Thomas Gleixner's avatar
      posix-cpu-timers: prevent signal delivery starvation · fe8187b8
      Thomas Gleixner authored
      The integer divisions in the timer accounting code can round the result
      down to 0.  Adding 0 is without effect and the signal delivery stops.
      
      Clamp the division result to minimum 1 to avoid this.
      
      Problem was reported by Seongbae Park <spark@google.com>, who provided
      also an inital patch.
      
      Roland sayeth:
      
        I have had some more time to think about the problem, and to reproduce it
        using Toyo's test case.  For the record, if my understanding of the problem
        is correct, this happens only in one very particular case.  First, the
        expiry time has to be so soon that in cputime_t units (usually 1s/HZ ticks)
        it's < nthreads so the division yields zero.  Second, it only affects each
        thread that is so new that its CPU time accumulation is zero so now+0 is
        still zero and ->it_*_expires winds up staying zero.  For the VIRT and PROF
        clocks when cputime_t is tick granularity (or the SCHED clock on
        configurations where sched_clock's value only advances on clock ticks), this
        is not hard to arrange with new threads starting up and blocking before they
        accumulate a whole tick of CPU time.  That's what happens in Toyo's test
        case.
      
        Note that in general it is fine for that division to round down to zero,
        and set each thread's expiry time to its "now" time.  The problem only
        arises with thread's whose "now" value is still zero, so that now+0 winds up
        0 and is interpreted as "not set" instead of ">= now".  So it would be a
        sufficient and more precise fix to just use max(ticks, 1) inside the loop
        when setting each it_*_expires value.
      
        But, it does no harm to round the division up to one and always advance
        every thread's expiry time.  If the thread didn't already fire timers for
        the expiry time of "now", there is no expectation that it will do so before
        the next tick anyway.  So I followed Thomas's patch in lifting the max out
        of the loops.
      
        This patch also covers the reload cases, which are harder to write a test
        for (and I didn't try).  I've tested it with Toyo's case and it fixes that.
      
      [toyoa@mvista.com: fix: min_t -> max_t]
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarRoland McGrath <roland@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      fe8187b8
    • James Morris's avatar
      [IPV6]: fix lockup via /proc/net/ip6_flowlabel (CVE-2006-5619) · d1ce361a
      James Morris authored
      There's a bug in the seqfile handling for /proc/net/ip6_flowlabel, where,
      after finding a flowlabel, the code will loop forever not finding any
      further flowlabels, first traversing the rest of the hash bucket then just
      looping.
      
      This patch fixes the problem by breaking after the hash bucket has been
      traversed.
      
      Note that this bug can cause lockups and oopses, and is trivially invoked
      by an unpriveleged user.
      Signed-off-by: default avatarJames Morris <jmorris@namei.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      d1ce361a
    • Shaohua Li's avatar
    • Al Viro's avatar
      fix RARP ic_servaddr breakage · c6cc8f7c
      Al Viro authored
      memcpy 4 bytes to address of auto unsigned long variable followed
      by comparison with u32 is a bloody bad idea.
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      c6cc8f7c
    • Martin Schwidefsky's avatar
      [S390] fix user readable uninitialised kernel memory, take 2. · e77b3496
      Martin Schwidefsky authored
      The previous patch to correct the copy_from_user padding is quite
      broken. The execute instruction needs to be done via the register %r4,
      not via %r2 and 31 bit doesn't know the instructions lgr and ahji.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      e77b3496
    • Martin Schwidefsky's avatar
      [S390] fix user readable uninitialised kernel memory (CVE-2006-5174) · dfa2e9e7
      Martin Schwidefsky authored
      A user space program can read uninitialised kernel memory
      by appending to a file from a bad address and then reading
      the result back. The cause is the copy_from_user function
      that does not clear the remaining bytes of the kernel
      buffer after it got a fault on the user space address.
      Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      dfa2e9e7
  4. 02 Nov, 2006 1 commit
  5. 17 Oct, 2006 2 commits
  6. 14 Oct, 2006 8 commits
  7. 13 Oct, 2006 4 commits
    • YOSHIFUJI Hideaki's avatar
      [ATM] CLIP: Do not refer freed skbuff in clip_mkip() (CVE-2006-4997) · cffa5ffe
      YOSHIFUJI Hideaki authored
      In clip_mkip(), skb->dev is dereferenced after clip_push(),
      which frees up skb.
      
      Advisory: AD_LAB-06009 (<adlab@venustech.com.cn>).
      Signed-off-by: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      cffa5ffe
    • Olaf Hering's avatar
      fbdev: add modeline for 1680x1050@60 · 601c7cf7
      Olaf Hering authored
      Add a modeline for the Philips 200W display.  aty128fb does not do DDC, it
      picks 1920x1440 or similar.  It works ok with nvidiafb because it can ask
      for DDC data.
      
      mode "1680x1050-60"
          # D: 146.028 MHz, H: 65.191 kHz, V: 59.863 Hz
          geometry 1680 1050 1680 1050 16
          timings 6848 280 104 30 3 176 6
          hsync high
          vsync high
          rgba 5/11,6/5,5/0,0/0
      endmode
      
      hwinfo --monitor
      20: None 00.0: 10000 Monitor
      [Created at monitor.206]
        Unique ID: rdCR.pzUFTofo1S4
        Parent ID: 002j.bJRsY88eNSC
        Hardware Class: monitor
        Model: "PHILIPS Philips 200W"
        Vendor: PHL "PHILIPS"
        Device: eisa 0x0832 "Philips 200W"
        Serial ID: "VN  016596"
        Resolution: 720x400@70Hz
        Resolution: 640x480@60Hz
        Resolution: 640x480@67Hz
        Resolution: 640x480@72Hz
        Resolution: 640x480@75Hz
        Resolution: 800x600@56Hz
        Resolution: 800x600@60Hz
        Resolution: 800x600@72Hz
        Resolution: 800x600@75Hz
        Resolution: 832x624@75Hz
        Resolution: 1024x768@60Hz
        Resolution: 1024x768@70Hz
        Resolution: 1024x768@75Hz
        Resolution: 1280x1024@75Hz
        Resolution: 1152x864@70Hz
        Resolution: 1152x864@75Hz
        Resolution: 1280x960@60Hz
        Resolution: 1280x1024@60Hz
        Resolution: 1680x1050@60Hz
        Size: 433x271 mm
        Driver Info #0:
          Max. Resolution: 1680x1050
          Vert. Sync Range: 56-85 Hz
          Hor. Sync Range: 30-93 kHz
        Config Status: cfg=new, avail=yes, need=no, active=unknown
        Attached to: #5 (VGA compatible controller)
      Signed-off-by: default avatarOlaf Hering <olh@suse.de>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      601c7cf7
    • Stephen Hemminger's avatar
      sky2: accept flow control · 84668d93
      Stephen Hemminger authored
      Don't program the GMAC to reject flow control packets.
      This maybe the cause of some of the transmit hangs.
      Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      84668d93
    • Stephen Hemminger's avatar
      sky2: fix fiber support · 7a07c009
      Stephen Hemminger authored
      Fix support for fiber based devices.  Needed to keep track of PMD type to
      add workaround in setup. Add support for gigabit half duplex fiber.
      Signed-off-by: default avatarStephen Hemminger <shemminger@osdl.org>
      Signed-off-by: default avatarAdrian Bunk <bunk@stusta.de>
      7a07c009