Skip to content
Snippets Groups Projects
  1. Jun 18, 2011
    • Daniel J Blueman's avatar
      drm/i915: Fix gen6 (SNB) missed BLT ring interrupts. · 498e720b
      Daniel J Blueman authored
      
      The failure appeared in dmesg as:
      
      [drm:i915_hangcheck_ring_idle] *ERROR* Hangcheck timer elapsed... blt
      ring idle [waiting on 35064155, at 35064155], missed IRQ?
      
      This works around that problem on by making the blitter command
      streamer write interrupt state to the Hardware Status Page when a
      MI_USER_INTERRUPT command is decoded, which appears to force the seqno
      out to memory before the interrupt happens.
      
      v1->v2: Moved to prior interrupt handler installation and RMW flags as
      per feedback.
      v2->v3: Removed RMW of flags (by anholt)
      
      Cc: stable@kernel.org
      Signed-off-by: default avatarDaniel J Blueman <daniel.blueman@gmail.com>
      Signed-off-by: default avatarEric Anholt <eric@anholt.net>
      Tested-by: Chris Wilson <chris@chris-wilson.co.uk> [v1]
      Tested-by: Eric Anholt <eric@anholt.net> [v1,v3]
      	   (incidence of the bug with a testcase went from avg 2/1000 to
      	   0/12651 in the latest test run (plus more for v1))
      Tested-by: Kenneth Graunke <kenneth@whitecape.org> [v1]
      Tested-by: Robert Hooker <robert.hooker@canonical.com> [v1]
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=33394
      
      
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      498e720b
  2. Jun 17, 2011
  3. Jun 16, 2011
    • Torsten Schenk's avatar
      ALSA: 6fire - Fix signedness bug · 0ec5258d
      Torsten Schenk authored
      
      Fixed remaining issues of the signedness bug discovered by Dan Carpenter.
      A check was remaining that tests if unsigned rt->rate is >= 0.
      Changed that so that rt->rate now consistently uses ARRAY_SIZE(rates)
      as invalid rate value and not -1.
      
      Signed-off-by: default avatarTorsten Schenk <torsten.schenk@zoho.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      0ec5258d
    • Linus Torvalds's avatar
      Merge branch 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6 · 7cc2ed05
      Linus Torvalds authored
      * 'rc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:
        kbuild: Call depmod.sh via shell
        perf: clear out make flags when calling kernel make kernelver
      7cc2ed05
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 · 8dac6bee
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
        AFS: Use i_generation not i_version for the vnode uniquifier
        AFS: Set s_id in the superblock to the volume name
        vfs: Fix data corruption after failed write in __block_write_begin()
        afs: afs_fill_page reads too much, or wrong data
        VFS: Fix vfsmount overput on simultaneous automount
        fix wrong iput on d_inode introduced by e6bc45d6
        Delay struct net freeing while there's a sysfs instance refering to it
        afs: fix sget() races, close leak on umount
        ubifs: fix sget races
        ubifs: split allocation of ubifs_info into a separate function
        fix leak in proc_set_super()
      8dac6bee
    • Linus Torvalds's avatar
      Merge branch 'sh-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-3.x · f8f44f09
      Linus Torvalds authored
      * 'sh-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-3.x:
        sh: sh7724: Add USBHS DMAEngine support
        sh: ecovec: Add renesas_usbhs support
        sh, exec: remove redundant set_fs(USER_DS)
        drivers: sh: resume enabled clocks fix
        dmaengine: shdma: SH_DMAC_MAX_CHANNELS message fix
        sh: Fix up xchg/cmpxchg corruption with gUSA RB.
        sh: Remove compressed kernel libgcc dependency.
        sh: fix wrong icache/dcache address-array start addr in cache-debugfs.
      f8f44f09
    • Linus Torvalds's avatar
      Merge branch 'rmobile-fixes-for-linus' of... · f49cc57c
      Linus Torvalds authored
      Merge branch 'rmobile-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-3.x
      
      * 'rmobile-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-3.x:
        ARM: mach-shmobile: mackerel: tidyup usbhs driver settings
        ARM: mach-shmobile: Correct SCIF port types for SH7367.
        ARM: mach-shmobile: sh73a0 gic_arch_extn.irq_set_wake() fix
        ARM: mach-shmobile: Mackerel USB platform data update
        ARM: mach-shmobile: AG5EVM SDHI1 platform data update
      f49cc57c
    • Linus Torvalds's avatar
      Merge branch 'fbdev-fixes-for-linus' of... · f4ef0842
      Linus Torvalds authored
      Merge branch 'fbdev-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-3.x
      
      * 'fbdev-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/fbdev-3.x:
        fbdev: sh_mobile_hdmi: fix regression: statically enable RTPM
        fbdev/atyfb: Fix 2 defined-but-not-used warnings
        efifb: Fix call to wrong unregister function
        video: s3c-fb: move enabling channel for window
        video: s3c-fb: fix virtual resolution checking
        video: s3c-fb: fix misleading kfree in remove function
      f4ef0842
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of... · df9d030c
      Linus Torvalds authored
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:
        SELinux: skip file_name_trans_write() when policy downgraded.
        selinux: fix case of names with whitespace/multibytes on /selinux/create
      df9d030c
    • Christoph Hellwig's avatar
      xfs: make log devices with write back caches work · a27a263b
      Christoph Hellwig authored
      
      There's no reason not to support cache flushing on external log devices.
      The only thing this really requires is flushing the data device first
      both in fsync and log commits.  A side effect is that we also have to
      remove the barrier write test during mount, which has been superflous
      since the new FLUSH+FUA code anyway.  Also use the chance to flush the
      RT subvolume write cache before the fsync commit, which is required
      for correct semantics.
      
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
      a27a263b
    • David Howells's avatar
      AFS: Use i_generation not i_version for the vnode uniquifier · d6e43f75
      David Howells authored
      
      Store the AFS vnode uniquifier in the i_generation field, not the i_version
      field of the inode struct.  i_version can then be given the AFS data version
      number.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      d6e43f75
    • David Howells's avatar
      AFS: Set s_id in the superblock to the volume name · 2e41ae22
      David Howells authored
      
      Set s_id in the superblock to the name of the AFS volume that this superblock
      corresponds to.
      
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      2e41ae22
    • Jan Kara's avatar
      vfs: Fix data corruption after failed write in __block_write_begin() · f9f07b6c
      Jan Kara authored
      
      I've got a report of a file corruption from fsxlinux on ext3. The important
      operations to the page were:
      mapwrite to a hole
      partial write to the page
      read - found the page zeroed from the end of the normal write
      
      The culprit seems to be that if get_block() fails in __block_write_begin()
      (e.g. transient ENOSPC in ext3), the function does ClearPageUptodate(page).
      Thus when we retry the write, the logic in __block_write_begin() thinks zeroing
      of the page is needed and overwrites old data.  In fact, I don't see why we
      should ever need to zero the uptodate bit here - either the page was uptodate
      when we entered __block_write_begin() and it should stay so when we leave it,
      or it was not uptodate and noone had right to set it uptodate during
      __block_write_begin() so it remains !uptodate when we leave as well. So just
      remove clearing of the bit.
      
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      f9f07b6c
    • Anton Blanchard's avatar
      afs: afs_fill_page reads too much, or wrong data · 5e7f2337
      Anton Blanchard authored
      
      afs_fill_page should read the page that is about to be written but
      the current implementation has a number of issues. If we aren't
      extending the file we always read PAGE_CACHE_SIZE at offset 0. If we
      are extending the file we try to read the entire file.
      
      Change afs_fill_page to read PAGE_CACHE_SIZE at the right offset,
      clamped to i_size.
      
      While here, avoid calling afs_fill_page when we are doing a
      PAGE_CACHE_SIZE write.
      
      Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      5e7f2337
    • Randy Dunlap's avatar
      staging: fix iio builds when IIO_RING_BUFFER is not enabled · e1d76719
      Randy Dunlap authored
      
      Fix build by moving enum list outside of
      #ifdef CONFIG_IIO_RING_BUFFER.
      
        drivers/staging/iio/accel/adis16201_core.c:413: error: 'ADIS16201_SCAN_SUPPLY' undeclared here (not in a function)
        drivers/staging/iio/accel/adis16201_core.c:417: error: 'ADIS16201_SCAN_TEMP' undeclared here (not in a function)
        ..
      
        drivers/staging/iio/accel/adis16203_core.c:374: error: 'ADIS16203_SCAN_SUPPLY' undeclared here (not in a function)
        drivers/staging/iio/accel/adis16203_core.c:378: error: 'ADIS16203_SCAN_AUX_ADC' undeclared here (not in a function)
        ..
      
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Acked-by: default avatarJonathan Cameron <jic23@cam.ac.uk>
      Cc: linux-iio@vger.kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e1d76719
    • Al Viro's avatar
      VFS: Fix vfsmount overput on simultaneous automount · 8aef1884
      Al Viro authored
      
      [Kudos to dhowells for tracking that crap down]
      
      If two processes attempt to cause automounting on the same mountpoint at the
      same time, the vfsmount holding the mountpoint will be left with one too few
      references on it, causing a BUG when the kernel tries to clean up.
      
      The problem is that lock_mount() drops the caller's reference to the
      mountpoint's vfsmount in the case where it finds something already mounted on
      the mountpoint as it transits to the mounted filesystem and replaces path->mnt
      with the new mountpoint vfsmount.
      
      During a pathwalk, however, we don't take a reference on the vfsmount if it is
      the same as the one in the nameidata struct, but do_add_mount() doesn't know
      this.
      
      The fix is to make sure we have a ref on the vfsmount of the mountpoint before
      calling do_add_mount().  However, if lock_mount() doesn't transit, we're then
      left with an extra ref on the mountpoint vfsmount which needs releasing.
      We can handle that in follow_managed() by not making assumptions about what
      we can and what we cannot get from lookup_mnt() as the current code does.
      
      The callers of follow_managed() expect that reference to path->mnt will be
      grabbed iff path->mnt has been changed.  follow_managed() and follow_automount()
      keep track of whether such reference has been grabbed and assume that it'll
      happen in those and only those cases that'll have us return with changed
      path->mnt.  That assumption is almost correct - it breaks in case of
      racing automounts and in even harder to hit race between following a mountpoint
      and a couple of mount --move.  The thing is, we don't need to make that
      assumption at all - after the end of loop in follow_manage() we can check
      if path->mnt has ended up unchanged and do mntput() if needed.
      
      The BUG can be reproduced with the following test program:
      
      	#include <stdio.h>
      	#include <sys/types.h>
      	#include <sys/stat.h>
      	#include <unistd.h>
      	#include <sys/wait.h>
      	int main(int argc, char **argv)
      	{
      		int pid, ws;
      		struct stat buf;
      		pid = fork();
      		stat(argv[1], &buf);
      		if (pid > 0) wait(&ws);
      		return 0;
      	}
      
      and the following procedure:
      
       (1) Mount an NFS volume that on the server has something else mounted on a
           subdirectory.  For instance, I can mount / from my server:
      
      	mount warthog:/ /mnt -t nfs4 -r
      
           On the server /data has another filesystem mounted on it, so NFS will see
           a change in FSID as it walks down the path, and will mark /mnt/data as
           being a mountpoint.  This will cause the automount code to be triggered.
      
           !!! Do not look inside the mounted fs at this point !!!
      
       (2) Run the above program on a file within the submount to generate two
           simultaneous automount requests:
      
      	/tmp/forkstat /mnt/data/testfile
      
       (3) Unmount the automounted submount:
      
      	umount /mnt/data
      
       (4) Unmount the original mount:
      
      	umount /mnt
      
           At this point the kernel should throw a BUG with something like the
           following:
      
      	BUG: Dentry ffff880032e3c5c0{i=2,n=} still in use (1) [unmount of nfs4 0:12]
      
      Note that the bug appears on the root dentry of the original mount, not the
      mountpoint and not the submount because sys_umount() hasn't got to its final
      mntput_no_expire() yet, but this isn't so obvious from the call trace:
      
       [<ffffffff8117cd82>] shrink_dcache_for_umount+0x69/0x82
       [<ffffffff8116160e>] generic_shutdown_super+0x37/0x15b
       [<ffffffffa00fae56>] ? nfs_super_return_all_delegations+0x2e/0x1b1 [nfs]
       [<ffffffff811617f3>] kill_anon_super+0x1d/0x7e
       [<ffffffffa00d0be1>] nfs4_kill_super+0x60/0xb6 [nfs]
       [<ffffffff81161c17>] deactivate_locked_super+0x34/0x83
       [<ffffffff811629ff>] deactivate_super+0x6f/0x7b
       [<ffffffff81186261>] mntput_no_expire+0x18d/0x199
       [<ffffffff811862a8>] mntput+0x3b/0x44
       [<ffffffff81186d87>] release_mounts+0xa2/0xbf
       [<ffffffff811876af>] sys_umount+0x47a/0x4ba
       [<ffffffff8109e1ca>] ? trace_hardirqs_on_caller+0x1fd/0x22f
       [<ffffffff816ea86b>] system_call_fastpath+0x16/0x1b
      
      as do_umount() is inlined.  However, you can see release_mounts() in there.
      
      Note also that it may be necessary to have multiple CPU cores to be able to
      trigger this bug.
      
      Tested-by: default avatarJeff Layton <jlayton@redhat.com>
      Tested-by: default avatarIan Kent <raven@themaw.net>
      Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      8aef1884
    • Török Edwin's avatar
      fix wrong iput on d_inode introduced by e6bc45d6 · 50338b88
      Török Edwin authored
      Git bisection shows that commit e6bc45d6 causes
      BUG_ONs under high I/O load:
      
      kernel BUG at fs/inode.c:1368!
      [ 2862.501007] Call Trace:
      [ 2862.501007]  [<ffffffff811691d8>] d_kill+0xf8/0x140
      [ 2862.501007]  [<ffffffff81169c19>] dput+0xc9/0x190
      [ 2862.501007]  [<ffffffff8115577f>] fput+0x15f/0x210
      [ 2862.501007]  [<ffffffff81152171>] filp_close+0x61/0x90
      [ 2862.501007]  [<ffffffff81152251>] sys_close+0xb1/0x110
      [ 2862.501007]  [<ffffffff814c14fb>] system_call_fastpath+0x16/0x1b
      
      A reliable way to reproduce this bug is:
      Login to KDE, run 'rsnapshot sync', and apt-get install openjdk-6-jdk,
      and apt-get remove openjdk-6-jdk.
      
      The buggy part of the patch is this:
      	struct inode *inode = NULL;
      .....
      -               if (nd.last.name[nd.last.len])
      -                       goto slashes;
                      inode = dentry->d_inode;
      -               if (inode)
      -                       ihold(inode);
      +               if (nd.last.name[nd.last.len] || !inode)
      +                       goto slashes;
      +               ihold(inode)
      ...
      	if (inode)
      		iput(inode);	/* truncate the inode here */
      
      If nd.last.name[nd.last.len] is nonzero (and thus goto slashes branch is taken),
      and dentry->d_inode is non-NULL, then this code now does an additional iput on
      the inode, which is wrong.
      
      Fix this by only setting the inode variable if nd.last.name[nd.last.len] is 0.
      
      Reference: https://lkml.org/lkml/2011/6/15/50
      
      
      Reported-by: default avatarNorbert Preining <preining@logic.at>
      Reported-by: default avatarTörök Edwin <edwintorok@gmail.com>
      Cc: "Theodore Ts'o" <tytso@mit.edu>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarTörök Edwin <edwintorok@gmail.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      50338b88
    • Randy Dunlap's avatar
      gpio: add GPIOF_ values regardless on kconfig settings · c001fb72
      Randy Dunlap authored
      
      Make GPIOF_ defined values available even when GPIOLIB nor GENERIC_GPIO
      is enabled by moving them to <linux/gpio.h>.
      
      Fixes these build errors in linux-next:
      sound/soc/codecs/ak4641.c:524: error: 'GPIOF_OUT_INIT_LOW' undeclared (first use in this function)
      sound/soc/codecs/wm8915.c:2921: error: 'GPIOF_OUT_INIT_LOW' undeclared (first use in this function)
      
      Signed-off-by: default avatarRandy Dunlap <randy.dunlap@oracle.com>
      Signed-off-by: default avatarGrant Likely <grant.likely@secretlab.ca>
      c001fb72
Loading