1. 10 Dec, 2011 7 commits
    • Thomas Meyer's avatar
      usb: gadget: renesas_usbhs: Use kcalloc instead of kzalloc to allocate array · 87763842
      Thomas Meyer authored
      The advantage of kcalloc is, that will prevent integer overflows which could
      result from the multiplication of number of elements and size and it is also
      a bit nicer to read.
      
      The semantic patch that makes this change is available
      in https://lkml.org/lkml/2011/11/25/107Signed-off-by: default avatarThomas Meyer <thomas@m3y3r.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      87763842
    • Greg Kroah-Hartman's avatar
      USB: isight: fix kernel bug when loading firmware · 59bf5cf9
      Greg Kroah-Hartman authored
      We were sending data on the stack when uploading firmware, which causes
      some machines fits, and is not allowed.  Fix this by using the buffer we
      already had around for this very purpose.
      Reported-by: default avatarWouter M. Koolen <wmkoolen@cwi.nl>
      Tested-by: default avatarWouter M. Koolen <wmkoolen@cwi.nl>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      59bf5cf9
    • Clemens Ladisch's avatar
      usb: fix number of mapped SG DMA entries · bc677d5b
      Clemens Ladisch authored
      Add a new field num_mapped_sgs to struct urb so that we have a place to
      store the number of mapped entries and can also retain the original
      value of entries in num_sgs.  Previously, usb_hcd_map_urb_for_dma()
      would overwrite this with the number of mapped entries, which would
      break dma_unmap_sg() because it requires the original number of entries.
      
      This fixes warnings like the following when using USB storage devices:
       ------------[ cut here ]------------
       WARNING: at lib/dma-debug.c:902 check_unmap+0x4e4/0x695()
       ehci_hcd 0000:00:12.2: DMA-API: device driver frees DMA sg list with different entry count [map count=4] [unmap count=1]
       Modules linked in: ohci_hcd ehci_hcd
       Pid: 0, comm: kworker/0:1 Not tainted 3.2.0-rc2+ #319
       Call Trace:
        <IRQ>  [<ffffffff81036d3b>] warn_slowpath_common+0x80/0x98
        [<ffffffff81036de7>] warn_slowpath_fmt+0x41/0x43
        [<ffffffff811fa5ae>] check_unmap+0x4e4/0x695
        [<ffffffff8105e92c>] ? trace_hardirqs_off+0xd/0xf
        [<ffffffff8147208b>] ? _raw_spin_unlock_irqrestore+0x33/0x50
        [<ffffffff811fa84a>] debug_dma_unmap_sg+0xeb/0x117
        [<ffffffff8137b02f>] usb_hcd_unmap_urb_for_dma+0x71/0x188
        [<ffffffff8137b166>] unmap_urb_for_dma+0x20/0x22
        [<ffffffff8137b1c5>] usb_hcd_giveback_urb+0x5d/0xc0
        [<ffffffffa0000d02>] ehci_urb_done+0xf7/0x10c [ehci_hcd]
        [<ffffffffa0001140>] qh_completions+0x429/0x4bd [ehci_hcd]
        [<ffffffffa000340a>] ehci_work+0x95/0x9c0 [ehci_hcd]
        ...
       ---[ end trace f29ac88a5a48c580 ]---
       Mapped at:
        [<ffffffff811faac4>] debug_dma_map_sg+0x45/0x139
        [<ffffffff8137bc0b>] usb_hcd_map_urb_for_dma+0x22e/0x478
        [<ffffffff8137c494>] usb_hcd_submit_urb+0x63f/0x6fa
        [<ffffffff8137d01c>] usb_submit_urb+0x2c7/0x2de
        [<ffffffff8137dcd4>] usb_sg_wait+0x55/0x161
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      bc677d5b
    • Dave Martin's avatar
      USB: isp1760: Fix endianness-sensitivity in of_isp1760_probe() · 8ad028bd
      Dave Martin authored
      Data read direct from device tree properties will be in the device
      tree's native endianness (i.e., big-endian).
      
      This patch uses of_property_read_u32() to read the bus-width
      property in host byte order instead.
      Signed-off-by: default avatarDave Martin <dave.martin@linaro.org>
      Acked-by: default avatarPawel Moll <pawel.moll@arm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      8ad028bd
    • Havard Skinnemoen's avatar
      USB: cdc-acm: Fix potential deadlock (lockdep warning) · 7fb57a01
      Havard Skinnemoen authored
      Rework the locking and lifecycle management in the cdc-acm driver.
      Instead of using a global mutex to prevent the 'acm' object from being
      freed, use the tty_port kref to keep the device alive when either the
      USB side or TTY side is still active.
      
      This allows us to use the global mutex purely for protecting the
      acm_table, while use acm->mutex to guard against disconnect during
      TTY port activation and shutdown.
      
      The USB-side kref is taken during port initialization in probe(), and
      released at the end of disconnect(). The TTY-side kref is taken in
      install() and released in cleanup(). On disconnect, tty_vhangup() is
      called instead of tty_hangup() to ensure the TTY hangup processing is
      completed before the USB device is taken down.
      
      The TTY open and close handlers have been gutted and replaced with
      tty_port_open() and tty_port_close() respectively. The driver-specific
      code which used to be there was spread across install(), activate() and
      shutdown().
      Reported-by: default avatarDave Jones <davej@redhat.com>
      Cc: Alan Cox <alan@linux.intel.com>
      Cc: Jiri Slaby <jslaby@suse.cz>
      Signed-off-by: default avatarHavard Skinnemoen <hskinnemoen@google.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      7fb57a01
    • Greg Kroah-Hartman's avatar
      Merge branch 'for-usb' of... · 332ceddb
      Greg Kroah-Hartman authored
      Merge branch 'for-usb' of git://git.kernel.org/pub/scm/linux/kernel/git/geoff/ps3-linux into usb-next
      
      * 'for-usb' of git://git.kernel.org/pub/scm/linux/kernel/git/geoff/ps3-linux:
        usb: PS3 EHCI QH read work-around
        usb: Fix PS3 EHCI suspend
        usb: PS3 EHCI HC reset work-around
        usb: Remove ehci_reset call from ehci_run
      332ceddb
    • Greg Kroah-Hartman's avatar
      Merge v3.2-rc4 into usb-next · a36ae95c
      Greg Kroah-Hartman authored
      This lets us handle the PS3 merge easier, as well as syncing up with
      other USB fixes already in the -rc4 tree.
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
      a36ae95c
  2. 09 Dec, 2011 1 commit
  3. 08 Dec, 2011 3 commits
    • Geoff Levand's avatar
      usb: Fix PS3 EHCI suspend · df7c1ca2
      Geoff Levand authored
      The EHCI USB controller of the Cell Super Companion Chip used in the PS3
      will stop the root hub after all root hub ports are suspended.  When in
      this condition the ehci-hcd handshake routine will return -ETIMEDOUT and
      the USB runtime suspend sequence will fail.  The STS_HLT bit will not be
      set, so inspection of the frame index is used to test for the condition.
      
      Add a new routine handshake_for_broken_root_hub() that is called after
      an unsuccessful -ETIMEDOUT handshake.  On PS3 handshake_for_broken_root_hub()
      will test for the condition, and if found will return success to allow the
      USB suspend to complete.  For all other platforms
      handshake_for_broken_root_hub() will return -ETIMEDOUT
      Signed-off-by: default avatarGeoff Levand <geoff@infradead.org>
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      df7c1ca2
    • Geoff Levand's avatar
      usb: PS3 EHCI HC reset work-around · 9187bef2
      Geoff Levand authored
      PS3 EHCI HC errata fix 316 - The PS3 EHCI HC will reset its
      internal INSNREGXX setup regs back to the chip default values
      on Host Controller Reset (CMD_RESET) or Light Host Controller
      Reset (CMD_LRESET).  The work-around for this is for the HC
      driver to re-initialise these regs when ever the HC is reset.
      
      Adds a new helper routine ps3_ehci_setup_insnreg() which is
      called from ps3_ehci_hc_reset().
      Signed-off-by: default avatarGeoff Levand <geoff@infradead.org>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      9187bef2
    • Geoff Levand's avatar
      usb: Remove ehci_reset call from ehci_run · 876e0df9
      Geoff Levand authored
      Remove the ehci_reset() call done in the ehci_run() routine of the
      USB EHCI host controller driver and add an ehci_reset() call to the
      probe processing of all EHCI platform drivers that do not already call
      ehci_reset().
      
      The call to ehci_reset() from ehci_run() was problematic for several
      platform drivers, and unnecessary for others.  This change moves the
      decision to call ehci_reset() at driver startup to the platform
      driver code.
      Signed-off-by: default avatarGeoff Levand <geoff@infradead.org>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      876e0df9
  4. 01 Dec, 2011 10 commits
    • Linus Torvalds's avatar
      Linux 3.2-rc4 · 5611cc45
      Linus Torvalds authored
      5611cc45
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2 · 0a4ebed7
      Linus Torvalds authored
      * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2: (31 commits)
        ocfs2: avoid unaligned access to dqc_bitmap
        ocfs2: Use filemap_write_and_wait() instead of write_inode_now()
        ocfs2: honor O_(D)SYNC flag in fallocate
        ocfs2: Add a missing journal credit in ocfs2_link_credits() -v2
        ocfs2: send correct UUID to cleancache initialization
        ocfs2: Commit transactions in error cases -v2
        ocfs2: make direntry invalid when deleting it
        fs/ocfs2/dlm/dlmlock.c: free kmem_cache_zalloc'd data using kmem_cache_free
        ocfs2: Avoid livelock in ocfs2_readpage()
        ocfs2: serialize unaligned aio
        ocfs2: Implement llseek()
        ocfs2: Fix ocfs2_page_mkwrite()
        ocfs2: Add comment about orphan scanning
        ocfs2: Clean up messages in the fs
        ocfs2/cluster: Cluster up now includes network connections too
        ocfs2/cluster: Add new function o2net_fill_node_map()
        ocfs2/cluster: Fix output in file elapsed_time_in_ms
        ocfs2/dlm: dlmlock_remote() needs to account for remastery
        ocfs2/dlm: Take inflight reference count for remotely mastered resources too
        ocfs2/dlm: Cleanup dlm_wait_for_node_death() and dlm_wait_for_node_recovery()
        ...
      0a4ebed7
    • Akinobu Mita's avatar
      ocfs2: avoid unaligned access to dqc_bitmap · 93925579
      Akinobu Mita authored
      The dqc_bitmap field of struct ocfs2_local_disk_chunk is 32-bit aligned,
      but not 64-bit aligned.  The dqc_bitmap is accessed by ocfs2_set_bit(),
      ocfs2_clear_bit(), ocfs2_test_bit(), or ocfs2_find_next_zero_bit().  These
      are wrapper macros for ext2_*_bit() which need to take an unsigned long
      aligned address (though some architectures are able to handle unaligned
      address correctly)
      
      So some 64bit architectures may not be able to access the dqc_bitmap
      correctly.
      
      This avoids such unaligned access by using another wrapper functions for
      ext2_*_bit().  The code is taken from fs/ext4/mballoc.c which also need to
      handle unaligned bitmap access.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Acked-by: default avatarJoel Becker <jlbec@evilplan.org>
      Cc: Mark Fasheh <mfasheh@suse.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarJoel Becker <jlbec@evilplan.org>
      93925579
    • Linus Torvalds's avatar
      Merge branch 'fixes' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm · 3b120ab7
      Linus Torvalds authored
      * 'fixes' of http://ftp.arm.linux.org.uk/pub/linux/arm/kernel/git-cur/linux-2.6-arm:
        ARM: 7182/1: ARM cpu topology: fix warning
        ARM: 7181/1: Restrict kprobes probing SWP instructions to ARMv5 and below
        ARM: 7180/1: Change kprobes testcase with unpredictable STRD instruction
        ARM: 7177/1: GIC: avoid skipping non-existent PPIs in irq_start calculation
        ARM: 7176/1: cpu_pm: register GIC PM notifier only once
        ARM: 7175/1: add subname parameter to mfp_set_groupg callers
        ARM: 7174/1: Fix build error in kprobes test code on Thumb2 kernels
        ARM: 7172/1: dma: Drop GFP_COMP for DMA memory allocations
        ARM: 7171/1: unwind: add unwind directives to bitops assembly macros
        ARM: 7170/2: fix compilation breakage in entry-armv.S
        ARM: 7168/1: use cache type functions for arch_get_unmapped_area
        ARM: perf: check that we have a platform device when reserving PMU
        ARM: 7166/1: Use PMD_SHIFT instead of PGDIR_SHIFT in dma-consistent.c
        ARM: 7165/2: PL330: Fix typo in _prepare_ccr()
        ARM: 7163/2: PL330: Only register usable channels
        ARM: 7162/1: errata: tidy up Kconfig options for PL310 errata workarounds
        ARM: 7161/1: errata: no automatic store buffer drain
        ARM: perf: initialise used_mask for fake PMU during validation
        ARM: PMU: remove pmu_init declaration
        ARM: PMU: re-export release_pmu symbol to modules
      3b120ab7
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs · b930c264
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
        Btrfs: fix meta data raid-repair merge problem
        Btrfs: skip allocation attempt from empty cluster
        Btrfs: skip block groups without enough space for a cluster
        Btrfs: start search for new cluster at the beginning
        Btrfs: reset cluster's max_size when creating bitmap
        Btrfs: initialize new bitmaps' list
        Btrfs: fix oops when calling statfs on readonly device
        Btrfs: Don't error on resizing FS to same size
        Btrfs: fix deadlock on metadata reservation when evicting a inode
        Fix URL of btrfs-progs git repository in docs
        btrfs scrub: handle -ENOMEM from init_ipath()
      b930c264
    • Jan Schmidt's avatar
      Btrfs: fix meta data raid-repair merge problem · f4a8e656
      Jan Schmidt authored
      Commit 4a54c8c1 introduced raid-repair, killing the individual
      readpage_io_failed_hook entries from inode.c and disk-io.c. Commit
      4bb31e92 introduced new readahead code, adding a readpage_io_failed_hook to
      disk-io.c.
      
      The raid-repair commit had logic to disable raid-repair, if
      readpage_io_failed_hook is set. Thus, the readahead commit effectively
      disabled raid-repair for meta data.
      
      This commit changes the logic to always attempt raid-repair when needed and
      call the readpage_io_failed_hook in case raid-repair fails. This is much
      more straight forward and should have been like that from the beginning.
      Signed-off-by: default avatarJan Schmidt <list.btrfs@jan-o-sch.net>
      Reported-by: default avatarStefan Behrens <sbehrens@giantdisaster.de>
      Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
      f4a8e656
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 11d814a2
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
        IB: Fix RCU lockdep splats
        IB/ipoib: Prevent hung task or softlockup processing multicast response
        IB/qib: Fix over-scheduling of QSFP work
        RDMA/cxgb4: Fix retry with MPAv1 logic for MPAv2
        RDMA/cxgb4: Fix iw_cxgb4 count_rcqes() logic
        IB/qib: Don't use schedule_work()
      11d814a2
    • Linus Torvalds's avatar
      Merge branch 'dt-for-linus' of git://sources.calxeda.com/kernel/linux · c290b2f2
      Linus Torvalds authored
      * 'dt-for-linus' of git://sources.calxeda.com/kernel/linux:
        of: Add Silicon Image vendor prefix
        of/irq: of_irq_init: add check for parent equal to child node
      c290b2f2
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator · d6e92d36
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
        regulator: twl: fix twl4030 support for smps regulators
        regulator: fix use after free bug
        regulator: aat2870: Fix the logic of checking if no id is matched in aat2870_get_regulator
      d6e92d36
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · cd5b49bc
      Linus Torvalds authored
      * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (45 commits)
        ARM: ux500: update defconfig
        ARM: u300: update defconfig
        ARM: at91: enable additional boards in existing soc defconfig files
        ARM: at91: refresh soc defconfig files for 3.2
        ARM: at91: rename defconfig files appropriately
        ARM: OMAP2+: Fix Compilation error when omap_l3_noc built as module
        ARM: OMAP2+: Remove empty io.h
        ARM: OMAP2: select ARM_AMBA if OMAP3_EMU is defined
        ARM: OMAP: smartreflex: fix IRQ handling bug
        ARM: OMAP: PM: only register TWL with voltage layer when device is present
        ARM: OMAP: hwmod: Fix the addr space, irq, dma count APIs
        arm: mx28: fix bit operation in clock setting
        ARM: imx: export imx_ioremap
        ARM: imx/mm-imx3: conditionally compile i.MX31 and i.MX35 code
        ARM: mx5: Fix checkpatch warnings in cpu-imx5.c
        MAINTAINERS: Add missing directory
        ARM: imx: drop 'ARCH_MX31' and 'ARCH_MX35'
        ARM: imx6q: move clock register map to machine_desc.map_io
        ARM: pxa168/gplugd: add the correct SSP device
        ARM: Update mach-types to fix mxs build breakage
        ...
      cd5b49bc
  5. 30 Nov, 2011 15 commits
  6. 29 Nov, 2011 4 commits
    • Linus Torvalds's avatar
      Merge branch 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 8cd79203
      Linus Torvalds authored
      * 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        PM: Update comments describing device power management callbacks
        PM / Sleep: Update documentation related to system wakeup
        PM / Runtime: Make documentation follow the new behavior of irq_safe
        PM / Sleep: Correct inaccurate information in devices.txt
        PM / Domains: Document how PM domains are used by the PM core
        PM / Hibernate: Do not leak memory in error/test code paths
      8cd79203
    • Eric Dumazet's avatar
      IB: Fix RCU lockdep splats · 580da35a
      Eric Dumazet authored
      Commit f2c31e32 ("net: fix NULL dereferences in check_peer_redir()")
      forgot to take care of infiniband uses of dst neighbours.
      
      Many thanks to Marc Aurele who provided a nice bug report and feedback.
      Reported-by: default avatarMarc Aurele La France <tsi@ualberta.ca>
      Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
      Cc: David Miller <davem@davemloft.net>
      Cc: <stable@kernel.org>
      Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
      580da35a
    • Mike Marciniszyn's avatar
      IB/ipoib: Prevent hung task or softlockup processing multicast response · 3874397c
      Mike Marciniszyn authored
      This following can occur with ipoib when processing a multicast reponse:
      
          BUG: soft lockup - CPU#0 stuck for 67s! [ib_mad1:982]
          Modules linked in: ...
          CPU 0:
          Modules linked in: ...
          Pid: 982, comm: ib_mad1 Not tainted 2.6.32-131.0.15.el6.x86_64 #1 ProLiant DL160 G5
          RIP: 0010:[<ffffffff814ddb27>]  [<ffffffff814ddb27>] _spin_unlock_irqrestore+0x17/0x20
          RSP: 0018:ffff8802119ed860  EFLAGS: 00000246
          0000000000000004 RBX: ffff8802119ed860 RCX: 000000000000a299
          RDX: ffff88021086c700 RSI: 0000000000000246 RDI: 0000000000000246
          RBP: ffffffff8100bc8e R08: ffff880210ac229c R09: 0000000000000000
          R10: ffff88021278aab8 R11: 0000000000000000 R12: ffff8802119ed860
          R13: ffffffff8100be6e R14: 0000000000000001 R15: 0000000000000003
          FS:  0000000000000000(0000) GS:ffff880028200000(0000) knlGS:0000000000000000
          CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
          CR2: 00000000006d4840 CR3: 0000000209aa5000 CR4: 00000000000406f0
          DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
          DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
          Call Trace:
          [<ffffffffa032c247>] ? ipoib_mcast_send+0x157/0x480 [ib_ipoib]
          [<ffffffff8100bc8e>] ? apic_timer_interrupt+0xe/0x20
          [<ffffffff8100bc8e>] ? apic_timer_interrupt+0xe/0x20
          [<ffffffffa03283d4>] ? ipoib_path_lookup+0x124/0x2d0 [ib_ipoib]
          [<ffffffffa03286fc>] ? ipoib_start_xmit+0x17c/0x430 [ib_ipoib]
          [<ffffffff8141e758>] ? dev_hard_start_xmit+0x2c8/0x3f0
          [<ffffffff81439d0a>] ? sch_direct_xmit+0x15a/0x1c0
          [<ffffffff81423098>] ? dev_queue_xmit+0x388/0x4d0
          [<ffffffffa032d6b7>] ? ipoib_mcast_join_finish+0x2c7/0x510 [ib_ipoib]
          [<ffffffffa032dab8>] ? ipoib_mcast_sendonly_join_complete+0x1b8/0x1f0 [ib_ipoib]
          [<ffffffffa02a0946>] ? mcast_work_handler+0x1a6/0x710 [ib_sa]
          [<ffffffffa015f01e>] ? ib_send_mad+0xfe/0x3c0 [ib_mad]
          [<ffffffffa00f6c93>] ? ib_get_cached_lmc+0xa3/0xb0 [ib_core]
          [<ffffffffa02a0f9b>] ? join_handler+0xeb/0x200 [ib_sa]
          [<ffffffffa029e4fc>] ? ib_sa_mcmember_rec_callback+0x5c/0xa0 [ib_sa]
          [<ffffffffa029e79c>] ? recv_handler+0x3c/0x70 [ib_sa]
          [<ffffffffa01603a4>] ? ib_mad_completion_handler+0x844/0x9d0 [ib_mad]
          [<ffffffffa015fb60>] ? ib_mad_completion_handler+0x0/0x9d0 [ib_mad]
          [<ffffffff81088830>] ? worker_thread+0x170/0x2a0
          [<ffffffff8108e160>] ? autoremove_wake_function+0x0/0x40
          [<ffffffff810886c0>] ? worker_thread+0x0/0x2a0
          [<ffffffff8108ddf6>] ? kthread+0x96/0xa0
          [<ffffffff8100c1ca>] ? child_rip+0xa/0x20
      
      Coinciding with stack trace is the following message:
      
          ib0: ib_address_create failed
      
      The code below in ipoib_mcast_join_finish() will note the above
      failure in the address handle but otherwise continue:
      
                      ah = ipoib_create_ah(dev, priv->pd, &av);
                      if (!ah) {
                              ipoib_warn(priv, "ib_address_create failed\n");
                      } else {
      
      The while loop at the bottom of ipoib_mcast_join_finish() will attempt
      to send queued multicast packets in mcast->pkt_queue and eventually
      end up in ipoib_mcast_send():
      
              if (!mcast->ah) {
                      if (skb_queue_len(&mcast->pkt_queue) < IPOIB_MAX_MCAST_QUEUE)
                              skb_queue_tail(&mcast->pkt_queue, skb);
                      else {
                              ++dev->stats.tx_dropped;
                              dev_kfree_skb_any(skb);
                      }
      
      My read is that the code will requeue the packet and return to the
      ipoib_mcast_join_finish() while loop and the stage is set for the
      "hung" task diagnostic as the while loop never sees a non-NULL ah, and
      will do nothing to resolve.
      
      There are GFP_ATOMIC allocates in the provider routines, so this is
      possible and should be dealt with.
      
      The test that induced the failure is associated with a host SM on the
      same server during a shutdown.
      
      This patch causes ipoib_mcast_join_finish() to exit with an error
      which will flush the queued mcast packets.  Nothing is done to unwind
      the QP attached state so that subsequent sends from above will retry
      the join.
      Reviewed-by: default avatarRam Vepa <ram.vepa@qlogic.com>
      Reviewed-by: default avatarGary Leshner <gary.leshner@qlogic.com>
      Signed-off-by: default avatarMike Marciniszyn <mike.marciniszyn@qlogic.com>
      Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
      3874397c
    • Linus Torvalds's avatar
      Merge branch 'slab/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux · 57db53b0
      Linus Torvalds authored
      * 'slab/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux:
        slub: avoid potential NULL dereference or corruption
        slub: use irqsafe_cpu_cmpxchg for put_cpu_partial
        slub: move discard_slab out of node lock
        slub: use correct parameter to add a page to partial list tail
      57db53b0