1. 09 3月, 2012 6 次提交
  2. 07 3月, 2012 8 次提交
  3. 27 2月, 2012 10 次提交
    • I
      carma-fpga: fix race between data dumping and DMA callback · 6c15d7af
      Ira Snyder 提交于
      When the system is under heavy load, we occasionally saw a problem where
      the system would get a legitimate interrupt when they should be
      disabled.
      
      This was caused by the data_dma_cb() DMA callback unconditionally
      re-enabling FPGA interrupts even when data dumping is disabled. When
      data dumping was re-enabled, the irq handler would fire while a DMA was
      in progress. The "BUG_ON(priv->inflight != NULL);" during the second
      invocation of the DMA callback caused the system to crash.
      
      To fix the issue, the priv->enabled boolean is moved under the
      protection of the priv->lock spinlock. The DMA callback checks the
      boolean to know whether to re-enable FPGA interrupts before it returns.
      
      Now that it is fixed, the driver keeps FPGA interrupts disabled when it
      expects that they are disabled, fixing the bug.
      Signed-off-by: NIra W. Snyder <iws@ovro.caltech.edu>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      6c15d7af
    • I
      carma-fpga: fix lockdep warning · 75ff85a8
      Ira Snyder 提交于
      Lockdep occasionally complains with the message:
      INFO: HARDIRQ-safe -> HARDIRQ-unsafe lock order detected
      
      This is caused by calling videobuf_dma_unmap() under spin_lock_irq(). To
      fix the warning, we drop the lock before unmapping and freeing the
      buffer.
      Signed-off-by: NIra W. Snyder <iws@ovro.caltech.edu>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      75ff85a8
    • M
      macintosh: Fix typo in mediabay.c · 6d45584f
      Masanari Iida 提交于
      Fix typo "unsuported" to "unsupported" in
      drivers/machintosh/mediabay.c
      
      Signed-off-by: Masanari Iida<standby24x7@gmail.com>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      6d45584f
    • D
      arch/powerpc/platforms/powernv/setup.c: included asm/xics.h twice · 0a167e0a
      Danny Kukawka 提交于
      arch/powerpc/platforms/powernv/setup.c: included 'asm/xics.h' twice,
      remove the duplicate.
      Signed-off-by: NDanny Kukawka <danny.kukawka@bisect.de>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      0a167e0a
    • D
      arch/powerpc/kvm/book3s_hv.c: included linux/sched.h twice · ed7e3d1c
      Danny Kukawka 提交于
      arch/powerpc/kvm/book3s_hv.c: included 'linux/sched.h' twice,
      remove the duplicate.
      Signed-off-by: NDanny Kukawka <danny.kukawka@bisect.de>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      ed7e3d1c
    • S
      powerpc: remove CONFIG_PPC_ISERIES from the architecture Kconfig files · 3d066d77
      Stephen Rothwell 提交于
      After this, we can remove the legacy iSeries code more easily.
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      3d066d77
    • B
      powerpc/mpic: Fix allocation of reverse-map for multi-ISU mpics · fe83364f
      Benjamin Herrenschmidt 提交于
      When using a multi-ISU MPIC, we can interrupts up to
      isu_size * MPIC_MAX_ISU, not just isu_size, so allocate
      the right size reverse map.
      
      Without this, the code will constantly fallback to
      a linear search.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      fe83364f
    • B
      f851013c
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 203738e5
      Linus Torvalds 提交于
      1) ICMP sockets leave err uninitialized but we try to return it for the
         unsupported MSG_OOB case, reported by Dave Jones.
      
      2) Add new Zaurus device ID entries, from Dave Jones.
      
      3) Pointer calculation in hso driver memset is wrong, from Dan
         Carpenter.
      
      4) ks8851_probe() checks unsigned value as negative, fix also from Dan
         Carpenter.
      
      5) Fix crashes in atl1c driver due to TX queue handling, from Eric
         Dumazet.  I anticipate some TX side locking fixes coming in the near
         future for this driver as well.
      
      6) The inline directive fix in Bluetooth which was breaking the build
         only with very new versions of GCC, from Johan Hedberg.
      
      7) Fix crashes in the ATP CLIP code due to ARP cleanups this merge
         window, reported by Meelis Roos and fixed by Eric Dumazet.
      
      8) JME driver doesn't flush RX FIFO correctly, from Guo-Fu Tseng.
      
      9) Some ip6_route_output() callers test the return value for NULL, but
         this never happens as the convention is to return a dst entry with
         dst->error set.  Fixes from RonQing Li.
      
      10) Logitech Harmony 900 should be handled by zaurus driver not
         cdc_ether, update white lists and black lists accordingly.  From
         Scott Talbert.
      
      11) Receiving from certain kinds of devices there won't be a MAC header,
         so there is no MAC header to fixup in the IPSEC code, and if we try
         to do it we'll crash.  Fix from Eric Dumazet.
      
      12) Port type array indexing off-by-one in mlx4 driver, fix from Yevgeny
         Petrilin.
      
      13) Fix regression in link-down handling in davinci_emac which causes
         all RX descriptors to be freed up and therefore RX to wedge
         completely, from Christian Riesch.
      
      14) It took two attempts, but ctnetlink soft lockups seem to be
         cured now, from Pablo Neira Ayuso.
      
      15) Endianness bug fix in ENIC driver, from Santosh Nayak.
      
      16) The long ago conversion of the PPP fragmentation code over to
         abstracted SKB list handling wasn't perfect, once we get an
         out of sequence SKB we don't flush the rest of them like we
         should.  From Ben McKeegan.
      
      17) Fix regression of ->ip_summed initialization in sfc driver.
         From Ben Hutchings.
      
      18) Bluetooth timeout mistakenly using msecs instead of jiffies,
         from Andrzej Kaczmarek.
      
      19) Using _sync variant of work cancellation results in deadlocks,
         use the non _sync variants instead.  From Andre Guedes.
      
      20) Bluetooth rfcomm code had reference counting problems leading
         to crashes, fix from Octavian Purdila.
      
      21) The conversion of netem over to classful qdisc handling added
         two bugs to netem_dequeue(), fixes from Eric Dumazet.
      
      22) Missing pci_iounmap() in ATM Solos driver.  Fix from Julia Lawall.
      
      23) b44_pci_exit() should not have __exit tag since it's invoked from
         non-__exit code.  From Nikola Pajkovsky.
      
      24) The conversion of the neighbour hash tables over to RCU added a
         race, fixed here by adding the necessary reread of tbl->nht, fix
         from Michel Machado.
      
      25) When we added VF (virtual function) attributes for network device
         dumps, this potentially bloats up the size of the dump of one
         network device such that the dump size is too large for the buffer
         allocated by properly written netlink applications.
      
         In particular, if you add 255 VFs to a network device, parts of
         GLIBC stop working.
      
         To fix this, we add an attribute that is used to turn on these
         extended portions of the network device dump.  Sophisticaed
         applications like 'ip' that want to see this stuff  will be changed
         to set the attribute, whereas things like GLIBC that don't care
         about VFs simply will not, and therefore won't be busted by the
         mere presence of VFs on a network device.
      
         Thanks to the tireless work of Greg Rose on this fix.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (53 commits)
        sfc: Fix assignment of ip_summed for pre-allocated skbs
        ppp: fix 'ppp_mp_reconstruct bad seq' errors
        enic: Fix endianness bug.
        gre: fix spelling in comments
        netfilter: ctnetlink: fix soft lockup when netlink adds new entries (v2)
        Revert "netfilter: ctnetlink: fix soft lockup when netlink adds new entries"
        davinci_emac: Do not free all rx dma descriptors during init
        mlx4_core: Fixing array indexes when setting port types
        phy: IC+101G and PHY_HAS_INTERRUPT flag
        netdev/phy/icplus: Correct broken phy_init code
        ipsec: be careful of non existing mac headers
        Move Logitech Harmony 900 from cdc_ether to zaurus
        hso: memsetting wrong data in hso_get_count()
        netfilter: ip6_route_output() never returns NULL.
        ethernet/broadcom: ip6_route_output() never returns NULL.
        ipv6: ip6_route_output() never returns NULL.
        jme: Fix FIFO flush issue
        atm: clip: remove clip_tbl
        ipv4: ping: Fix recvmsg MSG_OOB error handling.
        rtnetlink: Fix problem with buffer allocation
        ...
      203738e5
    • L
      Fix autofs compile without CONFIG_COMPAT · 3c761ea0
      Linus Torvalds 提交于
      The autofs compat handling fix caused a compile failure when
      CONFIG_COMPAT isn't defined.
      
      Instead of adding random #ifdef'fery in autofs, let's just make the
      compat helpers earlier to use: without CONFIG_COMPAT, is_compat_task()
      just hardcodes to zero.
      
      We could probably do something similar for a number of other cases where
      we have #ifdef's in code, but this is the low-hanging fruit.
      Reported-and-tested-by: NAndreas Schwab <schwab@linux-m68k.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      3c761ea0
  4. 26 2月, 2012 4 次提交
    • L
      Linux 3.3-rc5 · 6b21d18e
      Linus Torvalds 提交于
      6b21d18e
    • L
      Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · 00b10ecf
      Linus Torvalds 提交于
      Couple of minor driver fixes.
      
      * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (max34440) Fix resetting temperature history
        hwmon: (f75375s) Fix register write order when setting fans to full speed
        hwmon: (ads1015) Fix file leak in probe function
        hwmon: (max6639) Fix PPR register initialization to set both channels
        hwmon: (max6639) Fix FAN_FROM_REG calculation
      00b10ecf
    • L
      Merge branch 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild · 1e73fde5
      Linus Torvalds 提交于
      three kbuild fixes for 3.3:
       - make deb-pkg symlink race fix.
       - make coccicheck fix.
       - Dropping the check for modutils.  This is not a regression, but
         allows the module-init-tools replacement kmod work with the 3.3
         kernel.
      
      * 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
        coccicheck: change handling of C={1,2} when M= is set
        builddeb: Don't create files in /tmp with predictable names
        kbuild: do not check for ancient modutils tools
      1e73fde5
    • I
      autofs: work around unhappy compat problem on x86-64 · a32744d4
      Ian Kent 提交于
      When the autofs protocol version 5 packet type was added in commit
      5c0a32fc ("autofs4: add new packet type for v5 communications"), it
      obvously tried quite hard to be word-size agnostic, and uses explicitly
      sized fields that are all correctly aligned.
      
      However, with the final "char name[NAME_MAX+1]" array at the end, the
      actual size of the structure ends up being not very well defined:
      because the struct isn't marked 'packed', doing a "sizeof()" on it will
      align the size of the struct up to the biggest alignment of the members
      it has.
      
      And despite all the members being the same, the alignment of them is
      different: a "__u64" has 4-byte alignment on x86-32, but native 8-byte
      alignment on x86-64.  And while 'NAME_MAX+1' ends up being a nice round
      number (256), the name[] array starts out a 4-byte aligned.
      
      End result: the "packed" size of the structure is 300 bytes: 4-byte, but
      not 8-byte aligned.
      
      As a result, despite all the fields being in the same place on all
      architectures, sizeof() will round up that size to 304 bytes on
      architectures that have 8-byte alignment for u64.
      
      Note that this is *not* a problem for 32-bit compat mode on POWER, since
      there __u64 is 8-byte aligned even in 32-bit mode.  But on x86, 32-bit
      and 64-bit alignment is different for 64-bit entities, and as a result
      the structure that has exactly the same layout has different sizes.
      
      So on x86-64, but no other architecture, we will just subtract 4 from
      the size of the structure when running in a compat task.  That way we
      will write the properly sized packet that user mode expects.
      
      Not pretty.  Sadly, this very subtle, and unnecessary, size difference
      has been encoded in user space that wants to read packets of *exactly*
      the right size, and will refuse to touch anything else.
      Reported-and-tested-by: NThomas Meyer <thomas@m3y3r.de>
      Signed-off-by: NIan Kent <raven@themaw.net>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a32744d4
  5. 25 2月, 2012 12 次提交
    • L
      Merge tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · b52b8002
      Linus Torvalds 提交于
      One InfiniBand/RDMA regression fix for 3.3:
      
       - mlx4 SR-IOV changes added static exported functions, which doesn't
         build on powerpc at least.  Fix from Doug Ledford for this.
      
      * tag 'rdma-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband:
        mlx4_core: Exported functions can't be static
      b52b8002
    • D
    • B
      sfc: Fix assignment of ip_summed for pre-allocated skbs · ff3bc1e7
      Ben Hutchings 提交于
      When pre-allocating skbs for received packets, we set ip_summed =
      CHECKSUM_UNNCESSARY.  We used to change it back to CHECKSUM_NONE when
      the received packet had an incorrect checksum or unhandled protocol.
      
      Commit bc8acf2c ('drivers/net: avoid
      some skb->ip_summed initializations') mistakenly replaced the latter
      assignment with a DEBUG-only assertion that ip_summed ==
      CHECKSUM_NONE.  This assertion is always false, but it seems no-one
      has exercised this code path in a DEBUG build.
      
      Fix this by moving our assignment of CHECKSUM_UNNECESSARY into
      efx_rx_packet_gro().
      Signed-off-by: NBen Hutchings <bhutchings@solarflare.com>
      ff3bc1e7
    • L
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6 · 16bca1d5
      Linus Torvalds 提交于
      SCSI fixes on 20120224:
       "This is a set of assorted bug fixes for power management, mpt2sas,
        ipr, the rdac device handler and quite a big chunk for qla2xxx (plus a
        use after free of scsi_host in scsi_scan.c). "
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
        [SCSI] scsi_dh_rdac: Fix for unbalanced reference count
        [SCSI] scsi_pm: Fix bug in the SCSI power management handler
        [SCSI] scsi_scan: Fix 'Poison overwritten' warning caused by using freed 'shost'
        [SCSI] qla2xxx: Update version number to 8.03.07.13-k.
        [SCSI] qla2xxx: Proper detection of firmware abort error code for ISP82xx.
        [SCSI] qla2xxx: Remove resetting memory during device initialization for ISP82xx.
        [SCSI] qla2xxx: Complete mailbox command timedout to avoid initialization failures during next reset cycle.
        [SCSI] qla2xxx: Remove check for null fcport from host reset handler.
        [SCSI] qla2xxx: Correct out of bounds read of ISP2200 mailbox registers.
        [SCSI] qla2xxx: Remove errant clearing of MBX_INTERRUPT flag during CT-IOCB processing.
        [SCSI] qla2xxx: Clear options-flags while issuing stop-firmware mbx command.
        [SCSI] qla2xxx: Add an "is reset active" helper.
        [SCSI] qla2xxx: Add check for null fcport references in qla2xxx_queuecommand.
        [SCSI] qla2xxx: Propagate up abort failures.
        [SCSI] isci: Fix NULL ptr dereference when no firmware is being loaded
        [SCSI] ipr: fix eeh recovery for 64-bit adapters
        [SCSI] mpt2sas: Fix mismatch in mpt2sas_base_hard_reset_handler() mutex lock-unlock
      16bca1d5
    • B
      ppp: fix 'ppp_mp_reconstruct bad seq' errors · 8a49ad6e
      Ben McKeegan 提交于
      This patch fixes a (mostly cosmetic) bug introduced by the patch
      'ppp: Use SKB queue abstraction interfaces in fragment processing'
      found here: http://www.spinics.net/lists/netdev/msg153312.html
      
      The above patch rewrote and moved the code responsible for cleaning
      up discarded fragments but the new code does not catch every case
      where this is necessary.  This results in some discarded fragments
      remaining in the queue, and triggering a 'bad seq' error on the
      subsequent call to ppp_mp_reconstruct.  Fragments are discarded
      whenever other fragments of the same frame have been lost.
      This can generate a lot of unwanted and misleading log messages.
      
      This patch also adds additional detail to the debug logging to
      make it clearer which fragments were lost and which other fragments
      were discarded as a result of losses. (Run pppd with 'kdebug 1'
      option to enable debug logging.)
      Signed-off-by: NBen McKeegan <ben@netservers.co.uk>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      8a49ad6e
    • S
      enic: Fix endianness bug. · 21ca54e9
      Santosh Nayak 提交于
      Sparse complaints the endian bug.
      Signed-off-by: NSantosh Nayak <santoshprasadnayak@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      21ca54e9
    • G
      coccicheck: change handling of C={1,2} when M= is set · 42f1c01b
      Greg Dietsche 提交于
      This patch reverts a portion of d0bc1fb4 so that coccicheck will
      work properly when C=1 or C=2.
      Reported-and-tested-by: NBrice Goglin <Brice.Goglin@inria.fr>
      Signed-off-by: NGreg Dietsche <Gregory.Dietsche@cuw.edu>
      Signed-off-by: NJulia Lawall <Julia.Lawall@lip6.fr>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      42f1c01b
    • D
      Merge branch 'master' of git://1984.lsi.us.es/net · e807e566
      David S. Miller 提交于
      e807e566
    • S
      gre: fix spelling in comments · bff52857
      stephen hemminger 提交于
      The original spelling and bad word choice makes these comments hard to read.
      Signed-off-by: NStephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bff52857
    • L
      Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · e98092be
      Linus Torvalds 提交于
      * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        [media] hdpvr: update picture controls to support firmware versions > 0.15
        [media] wl128x: fix build errors when GPIOLIB is not enabled
        [media] hdpvr: fix race conditon during start of streaming
        [media] omap3isp: Fix crash caused by subdevs now having a pointer to devnodes
        [media] imon: don't wedge hardware after early callbacks
      e98092be
    • O
      epoll: ep_unregister_pollwait() can use the freed pwq->whead · 971316f0
      Oleg Nesterov 提交于
      signalfd_cleanup() ensures that ->signalfd_wqh is not used, but
      this is not enough. eppoll_entry->whead still points to the memory
      we are going to free, ep_unregister_pollwait()->remove_wait_queue()
      is obviously unsafe.
      
      Change ep_poll_callback(POLLFREE) to set eppoll_entry->whead = NULL,
      change ep_unregister_pollwait() to check pwq->whead != NULL under
      rcu_read_lock() before remove_wait_queue(). We add the new helper,
      ep_remove_wait_queue(), for this.
      
      This works because sighand_cachep is SLAB_DESTROY_BY_RCU and because
      ->signalfd_wqh is initialized in sighand_ctor(), not in copy_sighand.
      ep_unregister_pollwait()->remove_wait_queue() can play with already
      freed and potentially reused ->sighand, but this is fine. This memory
      must have the valid ->signalfd_wqh until rcu_read_unlock().
      Reported-by: NMaxime Bizon <mbizon@freebox.fr>
      Cc: <stable@kernel.org>
      Signed-off-by: NOleg Nesterov <oleg@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      971316f0
    • O
      epoll: introduce POLLFREE to flush ->signalfd_wqh before kfree() · d80e731e
      Oleg Nesterov 提交于
      This patch is intentionally incomplete to simplify the review.
      It ignores ep_unregister_pollwait() which plays with the same wqh.
      See the next change.
      
      epoll assumes that the EPOLL_CTL_ADD'ed file controls everything
      f_op->poll() needs. In particular it assumes that the wait queue
      can't go away until eventpoll_release(). This is not true in case
      of signalfd, the task which does EPOLL_CTL_ADD uses its ->sighand
      which is not connected to the file.
      
      This patch adds the special event, POLLFREE, currently only for
      epoll. It expects that init_poll_funcptr()'ed hook should do the
      necessary cleanup. Perhaps it should be defined as EPOLLFREE in
      eventpoll.
      
      __cleanup_sighand() is changed to do wake_up_poll(POLLFREE) if
      ->signalfd_wqh is not empty, we add the new signalfd_cleanup()
      helper.
      
      ep_poll_callback(POLLFREE) simply does list_del_init(task_list).
      This make this poll entry inconsistent, but we don't care. If you
      share epoll fd which contains our sigfd with another process you
      should blame yourself. signalfd is "really special". I simply do
      not know how we can define the "right" semantics if it used with
      epoll.
      
      The main problem is, epoll calls signalfd_poll() once to establish
      the connection with the wait queue, after that signalfd_poll(NULL)
      returns the different/inconsistent results depending on who does
      EPOLL_CTL_MOD/signalfd_read/etc. IOW: apart from sigmask, signalfd
      has nothing to do with the file, it works with the current thread.
      
      In short: this patch is the hack which tries to fix the symptoms.
      It also assumes that nobody can take tasklist_lock under epoll
      locks, this seems to be true.
      
      Note:
      
      	- we do not have wake_up_all_poll() but wake_up_poll()
      	  is fine, poll/epoll doesn't use WQ_FLAG_EXCLUSIVE.
      
      	- signalfd_cleanup() uses POLLHUP along with POLLFREE,
      	  we need a couple of simple changes in eventpoll.c to
      	  make sure it can't be "lost".
      Reported-by: NMaxime Bizon <mbizon@freebox.fr>
      Cc: <stable@kernel.org>
      Signed-off-by: NOleg Nesterov <oleg@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      d80e731e