1. 17 3月, 2012 2 次提交
    • A
      afs: Remote abort can cause BUG in rxrpc code · c0173863
      Anton Blanchard 提交于
      When writing files to afs I sometimes hit a BUG:
      
      kernel BUG at fs/afs/rxrpc.c:179!
      
      With a backtrace of:
      
      	afs_free_call
      	afs_make_call
      	afs_fs_store_data
      	afs_vnode_store_data
      	afs_write_back_from_locked_page
      	afs_writepages_region
      	afs_writepages
      
      The cause is:
      
      	ASSERT(skb_queue_empty(&call->rx_queue));
      
      Looking at a tcpdump of the session the abort happens because we
      are exceeding our disk quota:
      
      	rx abort fs reply store-data error diskquota exceeded (32)
      
      So the abort error is valid. We hit the BUG because we haven't
      freed all the resources for the call.
      
      By freeing any skbs in call->rx_queue before calling afs_free_call
      we avoid hitting leaking memory and avoid hitting the BUG.
      Signed-off-by: NAnton Blanchard <anton@samba.org>
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Cc: <stable@kernel.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c0173863
    • A
      afs: Read of file returns EBADMSG · 2c724fb9
      Anton Blanchard 提交于
      A read of a large file on an afs mount failed:
      
      # cat junk.file > /dev/null
      cat: junk.file: Bad message
      
      Looking at the trace, call->offset wrapped since it is only an
      unsigned short. In afs_extract_data:
      
              _enter("{%u},{%zu},%d,,%zu", call->offset, len, last, count);
      ...
      
              if (call->offset < count) {
                      if (last) {
                              _leave(" = -EBADMSG [%d < %zu]", call->offset, count);
                              return -EBADMSG;
                      }
      
      Which matches the trace:
      
      [cat   ] ==> afs_extract_data({65132},{524},1,,65536)
      [cat   ] <== afs_extract_data() = -EBADMSG [0 < 65536]
      
      call->offset went from 65132 to 0. Fix this by making call->offset an
      unsigned int.
      Signed-off-by: NAnton Blanchard <anton@samba.org>
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Cc: <stable@kernel.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      2c724fb9
  2. 16 3月, 2012 17 次提交
  3. 15 3月, 2012 11 次提交
  4. 14 3月, 2012 10 次提交
    • X
      block: fix ioc leak in put_io_context · ff8c1474
      Xiaotian Feng 提交于
      When put_io_context is called, if ioc->icq_list is empty and refcount
      is 1, kernel will not free the ioc.
      
      This is caught by following kmemleak:
      
      unreferenced object 0xffff880036349fe0 (size 216):
        comm "sh", pid 2137, jiffies 4294931140 (age 290579.412s)
        hex dump (first 32 bytes):
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
          01 00 01 00 ad 4e ad de ff ff ff ff 00 00 00 00  .....N..........
        backtrace:
          [<ffffffff8169f926>] kmemleak_alloc+0x26/0x50
          [<ffffffff81195a9c>] kmem_cache_alloc_node+0x1cc/0x2a0
          [<ffffffff81356b67>] create_io_context_slowpath+0x27/0x130
          [<ffffffff81356d2b>] get_task_io_context+0xbb/0xf0
          [<ffffffff81055f0e>] copy_process+0x188e/0x18b0
          [<ffffffff8105609b>] do_fork+0x11b/0x420
          [<ffffffff810247f8>] sys_clone+0x28/0x30
          [<ffffffff816d3373>] stub_clone+0x13/0x20
          [<ffffffffffffffff>] 0xffffffffffffffff
      
      ioc should be freed if ioc->icq_list is empty.
      Signed-off-by: NXiaotian Feng <dannyfeng@tencent.com>
      Acked-by: NVivek Goyal <vgoyal@redhat.com>
      Acked-by: NTejun Heo <tj@kernel.org>
      Signed-off-by: NJens Axboe <axboe@kernel.dk>
      ff8c1474
    • N
      iscsi-target: Fix reservation conflict -EBUSY response handling bug · 00fdc6bb
      Nicholas Bellinger 提交于
      This patch addresses a iscsi-target specific bug related to reservation conflict
      handling in iscsit_handle_scsi_cmd() that has been causing reservation conflicts
      to complete and not fail as expected due to incorrect errno checking.  The problem
      occured with the change to return -EBUSY from transport_generic_cmd_sequencer() ->
      transport_generic_allocate_tasks() failures, that broke iscsit_handle_scsi_cmd()
      checking for -EINVAL in order to invoke a non GOOD status response.
      
      This was manifesting itself as data corruption with legacy SPC-2 reservations,
      but also effects iscsi-target LUNs with SPC-3 persistent reservations.
      
      This bug was originally introduced in lio-core commit:
      
      commit 03e98c9e
      Author: Nicholas Bellinger <nab@linux-iscsi.org>
      Date:   Fri Nov 4 02:36:16 2011 -0700
      
          target: Address legacy PYX_TRANSPORT_* return code breakage
      Reported-by: NMartin Svec <martin.svec@zoner.cz>
      Cc: Martin Svec <martin.svec@zoner.cz>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: stable@vger.kernel.org
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      00fdc6bb
    • N
      target: Fix compatible reservation handling (CRH=1) with legacy RESERVE/RELEASE · 087a03b3
      Nicholas Bellinger 提交于
      This patch addresses a bug with target_check_scsi2_reservation_conflict()
      return checking in target_scsi2_reservation_[reserve,release]() that was
      preventing CRH=1 operation from silently succeeding in the two special
      cases defined by SPC-3, and not failing with reservation conflict status
      when dealing with legacy RESERVE/RELEASE + active SPC-3 PR logic.
      
      Also explictly set cmd->scsi_status = SAM_STAT_RESERVATION_CONFLICT during
      the early non reservation holder failure from pr_ops->t10_seq_non_holder()
      check in transport_generic_cmd_sequencer() for fabrics that already expect
      it to be set.
      
      This bug was originally introduced in mainline commit:
      
      commit eacac00c
      Author: Christoph Hellwig <hch@infradead.org>
      Date:   Thu Nov 3 17:50:40 2011 -0400
      
          target: split core_scsi2_emulate_crh
      Reported-by: NMartin Svec <martin.svec@zoner.cz>
      Cc: Martin Svec <martin.svec@zoner.cz>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: stable@vger.kernel.org
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      087a03b3
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 762ad8a5
      Linus Torvalds 提交于
      Pull sparc updates from David Miller:
       "Please pull to get this fix for the sparc32 build when using a more
        recent binutils."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc32: Add -Av8 to assembler command line.
      762ad8a5
    • D
      sparc32: Add -Av8 to assembler command line. · e0adb990
      David S. Miller 提交于
      Newer version of binutils are more strict about specifying the
      correct options to enable certain classes of instructions.
      
      The sparc32 build is done for v7 in order to support sun4c systems
      which lack hardware integer multiply and divide instructions.
      
      So we have to pass -Av8 when building the assembler routines that
      use these instructions and get patched into the kernel when we find
      out that we have a v8 capable cpu.
      Reported-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e0adb990
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · b8fa7d41
      Linus Torvalds 提交于
      Pull networking changes from David Miller:
       "The most important bit here is the TCP syncookies issue, which seems
        to have been busted for some time.  That fix has been verified in
        production by the reporter.
      
        1) Persistent TUN devices erroneously hold on to the network namespace
           in such a way that it cannot be shutdown.  Fix from Stanislav
           Kinsbursky with help from Eric Dumazet.
      
        2) TCP SYN cookies have been broken for a while due to how the route
           lookup flow key is managed, connections can be delayed by as much
           as 20 seconds due to this bug.  Fix from Eric Dumazet.
      
        3) Missing jiffies.h include in lib/dynamic_queue_limits.c can break
           the build, from Tom Herbert.
      
        4) Add USB device ID for Sitecom LN-031, from Joerg Neikes.
      
        5) Fix OOPS in delayed workqueue in iwlegacy, from Stanislaw Gruszka.
      
        6) rt2x00 TX queue can be disabled forever due to races, fix by
           synchronizing pause/unpause with a lock.  Also from Stanislaw
           Gruszka.
      
        7) Statistics and endian fix in bnx2x driver from Yuval Mintz, Eilon
           Greenstein, and Ariel Elior."
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
        tun: don't hold network namespace by tun sockets
        bnx2x: FCoE statistics id fixed
        bnx2x: dcb bit indices flags used as bits
        bnx2x: added cpu_to_le16 when preparing ramrod's data
        bnx2x: pfc statistics counts pfc events twice
        rt2x00: fix random stalls
        iwl3945: fix possible il->txq NULL pointer dereference in delayed works
        dql: Fix undefined jiffies
        tcp: fix syncookie regression
        usb: asix: Patch for Sitecom LN-031
      b8fa7d41
    • L
      Merge branch 'stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile · 69539ab1
      Linus Torvalds 提交于
      Pull arch/tile update from Chris Metcalf
       "These include a couple of queued-up minor bug fixes from the
        community, a fix to unbreak the sysfs hooks in tile, and syncing up
        the defconfigs."
      
      Ugh.  defconfigs updates without "make minconfig".  Tons of ugly
      pointless lines there, I suspect.
      
      * 'stable' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
        tile: Use set_current_blocked() and block_sigmask()
        arch/tile: misplaced parens near likely
        arch/tile: sync up the defconfig files to the tip
        arch/tile: Fix up from commit 8a25a2fd
      69539ab1
    • L
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 0a49aeca
      Linus Torvalds 提交于
      Pull perf fixes from Ingo Molnar.
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf record: Fix buffer overrun bug in tracepoint_id_to_path()
        perf/x86: Fix local vs remote memory events for NHM/WSM
      0a49aeca
    • L
      Merge git://git.samba.org/sfrench/cifs-2.6 · 8e8bb96d
      Linus Torvalds 提交于
      Pull CIFS fixes from Steve French.
      
      * git://git.samba.org/sfrench/cifs-2.6:
        CIFS: Do not kmalloc under the flocks spinlock
        cifs: possible memory leak in xattr.
      8e8bb96d
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · cd794539
      Linus Torvalds 提交于
      Pull vfs fixes from Al Viro:
       "A bunch of assorted fixes; Jan's freezing stuff still _not_ in there
        and neither is mm fun ;-/"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        restore smp_mb() in unlock_new_inode()
        vfs: fix return value from do_last()
        vfs: fix double put after complete_walk()
        udf: Fix deadlock in udf_release_file()
        vfs: Correctly set the dir i_mutex lockdep class
      cd794539