Skip to content
  1. Oct 21, 2011
    • Nick Bowler's avatar
      crypto: ghash - Avoid null pointer dereference if no key is set · 7ed47b7d
      Nick Bowler authored
      
      
      The ghash_update function passes a pointer to gf128mul_4k_lle which will
      be NULL if ghash_setkey is not called or if the most recent call to
      ghash_setkey failed to allocate memory.  This causes an oops.  Fix this
      up by returning an error code in the null case.
      
      This is trivially triggered from unprivileged userspace through the
      AF_ALG interface by simply writing to the socket without setting a key.
      
      The ghash_final function has a similar issue, but triggering it requires
      a memory allocation failure in ghash_setkey _after_ at least one
      successful call to ghash_update.
      
        BUG: unable to handle kernel NULL pointer dereference at 00000670
        IP: [<d88c92d4>] gf128mul_4k_lle+0x23/0x60 [gf128mul]
        *pde = 00000000
        Oops: 0000 [#1] PREEMPT SMP
        Modules linked in: ghash_generic gf128mul algif_hash af_alg nfs lockd nfs_acl sunrpc bridge ipv6 stp llc
      
        Pid: 1502, comm: hashatron Tainted: G        W   3.1.0-rc9-00085-ge9308cf #32 Bochs Bochs
        EIP: 0060:[<d88c92d4>] EFLAGS: 00000202 CPU: 0
        EIP is at gf128mul_4k_lle+0x23/0x60 [gf128mul]
        EAX: d69db1f0 EBX: d6b8ddac ECX: 00000004 EDX: 00000000
        ESI: 00000670 EDI: d6b8ddac EBP: d6b8ddc8 ESP: d6b8dda4
         DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
        Process hashatron (pid: 1502, ti=d6b8c000 task=d6810000 task.ti=d6b8c000)
        Stack:
         00000000 d69db1f0 00000163 00000000 d6b8ddc8 c101a520 d69db1f0 d52aa000
         00000ff0 d6b8dde8 d88d310f d6b8a3f8 d52aa000 00001000 d88d502c d6b8ddfc
         00001000 d6b8ddf4 c11676ed d69db1e8 d6b8de24 c11679ad d52aa000 00000000
        Call Trace:
         [<c101a520>] ? kmap_atomic_prot+0x37/0xa6
         [<d88d310f>] ghash_update+0x85/0xbe [ghash_generic]
         [<c11676ed>] crypto_shash_update+0x18/0x1b
         [<c11679ad>] shash_ahash_update+0x22/0x36
         [<c11679cc>] shash_async_update+0xb/0xd
         [<d88ce0ba>] hash_sendpage+0xba/0xf2 [algif_hash]
         [<c121b24c>] kernel_sendpage+0x39/0x4e
         [<d88ce000>] ? 0xd88cdfff
         [<c121b298>] sock_sendpage+0x37/0x3e
         [<c121b261>] ? kernel_sendpage+0x4e/0x4e
         [<c10b4dbc>] pipe_to_sendpage+0x56/0x61
         [<c10b4e1f>] splice_from_pipe_feed+0x58/0xcd
         [<c10b4d66>] ? splice_from_pipe_begin+0x10/0x10
         [<c10b51f5>] __splice_from_pipe+0x36/0x55
         [<c10b4d66>] ? splice_from_pipe_begin+0x10/0x10
         [<c10b6383>] splice_from_pipe+0x51/0x64
         [<c10b63c2>] ? default_file_splice_write+0x2c/0x2c
         [<c10b63d5>] generic_splice_sendpage+0x13/0x15
         [<c10b4d66>] ? splice_from_pipe_begin+0x10/0x10
         [<c10b527f>] do_splice_from+0x5d/0x67
         [<c10b6865>] sys_splice+0x2bf/0x363
         [<c129373b>] ? sysenter_exit+0xf/0x16
         [<c104dc1e>] ? trace_hardirqs_on_caller+0x10e/0x13f
         [<c129370c>] sysenter_do_call+0x12/0x32
        Code: 83 c4 0c 5b 5e 5f c9 c3 55 b9 04 00 00 00 89 e5 57 8d 7d e4 56 53 8d 5d e4 83 ec 18 89 45 e0 89 55 dc 0f b6 70 0f c1 e6 04 01 d6 <f3> a5 be 0f 00 00 00 4e 89 d8 e8 48 ff ff ff 8b 45 e0 89 da 0f
        EIP: [<d88c92d4>] gf128mul_4k_lle+0x23/0x60 [gf128mul] SS:ESP 0068:d6b8dda4
        CR2: 0000000000000670
        ---[ end trace 4eaa2a86a8e2da24 ]---
        note: hashatron[1502] exited with preempt_count 1
        BUG: scheduling while atomic: hashatron/1502/0x10000002
        INFO: lockdep is turned off.
        [...]
      
      Signed-off-by: default avatarNick Bowler <nbowler@elliptictech.com>
      Cc: stable@kernel.org [2.6.37+]
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      7ed47b7d
  2. Sep 22, 2011
    • Linus Torvalds's avatar
      Linux 3.1-rc7 · d93dc5c4
      Linus Torvalds authored
      v3.1-rc7
      d93dc5c4
    • Lasse Collin's avatar
      XZ: Fix incorrect XZ_BUF_ERROR · 9c1f8594
      Lasse Collin authored
      xz_dec_run() could incorrectly return XZ_BUF_ERROR if all of the
      following was true:
      
       - The caller knows how many bytes of output to expect and only provides
         that much output space.
      
       - When the last output bytes are decoded, the caller-provided input
         buffer ends right before the LZMA2 end of payload marker.  So LZMA2
         won't provide more output anymore, but it won't know it yet and thus
         won't return XZ_STREAM_END yet.
      
       - A BCJ filter is in use and it hasn't left any unfiltered bytes in the
         temp buffer.  This can happen with any BCJ filter, but in practice
         it's more likely with filters other than the x86 BCJ.
      
      This fixes <https://bugzilla.redhat.com/show_bug.cgi?id=735408
      
      > where
      Squashfs thinks that a valid file system is corrupt.
      
      This also fixes a similar bug in single-call mode where the uncompressed
      size of a block using BCJ + LZMA2 was 0 bytes and caller provided no
      output space.  Many empty .xz files don't contain any blocks and thus
      don't trigger this bug.
      
      This also tweaks a closely related detail: xz_dec_bcj_run() could call
      xz_dec_lzma2_run() to decode into temp buffer when it was known to be
      useless.  This was harmless although it wasted a minuscule number of CPU
      cycles.
      
      Signed-off-by: default avatarLasse Collin <lasse.collin@tukaani.org>
      Cc: stable <stable@kernel.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9c1f8594
    • Linus Torvalds's avatar
      Merge git://github.com/davem330/net · e5b26a88
      Linus Torvalds authored
      * git://github.com/davem330/net: (27 commits)
        xfrm: Perform a replay check after return from async codepaths
        fib:fix BUG_ON in fib_nl_newrule when add new fib rule
        ixgbe: fix possible null buffer error
        tg3: fix VLAN tagging regression
        net: pxa168: Fix build errors by including interrupt.h
        netconsole: switch init_netconsole() to late_initcall
        gianfar: Fix overflow check and return value for gfar_get_cls_all()
        ppp_generic: fix multilink fragment MTU calculation (again)
        GRETH: avoid overwrite IP-stack's IP-frags checksum
        GRETH: RX/TX bytes were never increased
        ipv6: fix a possible double free
        b43: Fix beacon problem in ad-hoc mode
        Bluetooth: add support for 2011 mac mini
        Bluetooth: Add MacBookAir4,1 support
        Bluetooth: Fixed BT ST Channel reg order
        r8169: do not enable the TBI for anything but the original 8169.
        r8169: remove erroneous processing of always set bit.
        r8169: fix WOL setting for 8105 and 8111evl
        r8169: add MODULE_FIRMWARE for the firmware of 8111evl
        r8169: fix the reset setting for 8111evl
        ...
      e5b26a88
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · fed678dc
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.dk/linux-block:
        floppy: use del_timer_sync() in init cleanup
        blk-cgroup: be able to remove the record of unplugged device
        block: Don't check QUEUE_FLAG_SAME_COMP in __blk_complete_request
        mm: Add comment explaining task state setting in bdi_forker_thread()
        mm: Cleanup clearing of BDI_pending bit in bdi_forker_thread()
        block: simplify force plug flush code a little bit
        block: change force plug flush call order
        block: Fix queue_flag update when rq_affinity goes from 2 to 1
        block: separate priority boosting from REQ_META
        block: remove READ_META and WRITE_META
        xen-blkback: fixed indentation and comments
        xen-blkback: Don't disconnect backend until state switched to XenbusStateClosed.
      fed678dc
    • Alexander Sverdlin's avatar
      init: carefully handle loglevel option on kernel cmdline. · 808bf29b
      Alexander Sverdlin authored
      
      
      When a malformed loglevel value (for example "${abc}") is passed on the
      kernel cmdline, the loglevel itself is being set to 0.
      
      That then suppresses all following messages, including all the errors
      and crashes caused by other malformed cmdline options.  This could make
      debugging process quite tricky.
      
      This patch leaves the previous value of loglevel if the new value is
      incorrect and reports an error code in this case.
      
      Signed-off-by: default avatarAlexander Sverdlin <alexander.sverdlin@sysgo.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      808bf29b
    • Dave Hansen's avatar
      teach /proc/$pid/numa_maps about transparent hugepages · 32ef4384
      Dave Hansen authored
      
      
      This is modeled after the smaps code.
      
      It detects transparent hugepages and then does a single gather_stats()
      for the page as a whole.  This has two benifits:
       1. It is more efficient since it does many pages in a single shot.
       2. It does not have to break down the huge page.
      
      Signed-off-by: default avatarDave Hansen <dave@linux.vnet.ibm.com>
      Acked-by: default avatarHugh Dickins <hughd@google.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      32ef4384
    • Dave Hansen's avatar
      break out numa_maps gather_pte_stats() checks · 3200a8aa
      Dave Hansen authored
      
      
      gather_pte_stats() does a number of checks on a target page
      to see whether it should even be considered for statistics.
      This breaks that code out in to a separate function so that
      we can use it in the transparent hugepage case in the next
      patch.
      
      Signed-off-by: default avatarDave Hansen <dave@linux.vnet.ibm.com>
      Acked-by: default avatarHugh Dickins <hughd@google.com>
      Reviewed-by: default avatarChristoph Lameter <cl@gentwo.org>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3200a8aa
    • Dave Hansen's avatar
      make /proc/$pid/numa_maps gather_stats() take variable page size · eb4866d0
      Dave Hansen authored
      
      
      We need to teach the numa_maps code about transparent huge pages.  The
      first step is to teach gather_stats() that the pte it is dealing with
      might represent more than one page.
      
      Note that will we use this in a moment for transparent huge pages since
      they have use a single pmd_t which _acts_ as a "surrogate" for a bunch
      of smaller pte_t's.
      
      I'm a _bit_ unhappy that this interface counts in hugetlbfs page sizes
      for hugetlbfs pages and PAGE_SIZE for normal pages.  That means that to
      figure out how many _bytes_ "dirty=1" means, you must first know the
      hugetlbfs page size.  That's easier said than done especially if you
      don't have visibility in to the mount.
      
      But, that's probably a discussion for another day especially since it
      would change behavior to fix it.  But, just in case anyone wonders why
      this patch only passes a '1' in the hugetlb case...
      
      Signed-off-by: default avatarDave Hansen <dave@linux.vnet.ibm.com>
      Acked-by: default avatarHugh Dickins <hughd@google.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      eb4866d0
    • Steffen Klassert's avatar
      xfrm: Perform a replay check after return from async codepaths · bcf66bf5
      Steffen Klassert authored
      
      
      When asyncronous crypto algorithms are used, there might be many
      packets that passed the xfrm replay check, but the replay advance
      function is not called yet for these packets. So the replay check
      function would accept a replay of all of these packets. Also the
      system might crash if there are more packets in async processing
      than the size of the anti replay window, because the replay advance
      function would try to update the replay window beyond the bounds.
      
      This pach adds a second replay check after resuming from the async
      processing to fix these issues.
      
      Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
      Acked-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bcf66bf5
    • Gao feng's avatar
      fib:fix BUG_ON in fib_nl_newrule when add new fib rule · 561dac2d
      Gao feng authored
      
      
      add new fib rule can cause BUG_ON happen
      the reproduce shell is
      ip rule add pref 38
      ip rule add pref 38
      ip rule add to 192.168.3.0/24 goto 38
      ip rule del pref 38
      ip rule add to 192.168.3.0/24 goto 38
      ip rule add pref 38
      
      then the BUG_ON will happen
      del BUG_ON and use (ctarget == NULL) identify whether this rule is unresolved
      
      Signed-off-by: default avatarGao feng <gaofeng@cn.fujitsu.com>
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      561dac2d
  3. Sep 21, 2011
  4. Sep 20, 2011