1. 02 Mar, 2007 24 commits
  2. 01 Mar, 2007 16 commits
    • Linus Torvalds's avatar
      Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev · 562aa1d4
      Linus Torvalds authored
      * 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev:
        ahci: improve spurious SDB FIS handling
        ahci/pata_jmicron: match class not function number
        jmicron ATA: reimplement jmicron ATA quirk
        pata_jmicron: drop unnecessary device programming in [re]init
        libata: blacklist FUJITSU MHT2060BH for NCQ
        sata_sil24: kill unused local variable idx in sil24_fill_sg()
        libata: clear drvdata in ata_host_release(), take#2
      562aa1d4
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jikos/hid · b4350861
      Linus Torvalds authored
      * 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jikos/hid:
        HID: fix Logitech DiNovo Edge touchwheel and Logic3 /SpectraVideo middle button
        HID: add git tree information to MAINTAINERS
        HID: fix broken Logitech S510 keyboard report descriptor; make extra keys work
        HID: fix possible double-free on error path in hid parser
        HID: hid-debug.c should #include <linux/hid-debug.h>
        HID: fix bug in zeroing the last field byte in output reports
        USB HID: use CONFIG_HID_DEBUG for outputting report descriptor
        USB HID: Fix USB vendor and product IDs endianness for USB HID devices
      b4350861
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6 · 132a69c6
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6:
        [SPARC64]: Fix parport_pc build.
        [SPARC64]: Update defconfig.
      132a69c6
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 · fb7d4045
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
        [TCP]: Fix minisock tcp_create_openreq_child() typo.
        [TCP]: Document several sysctls.
        [NET]: Fix kfree(skb)
        [NET]: Handle disabled preemption in gfp_any()
        [BRIDGE]: Fix locking of set path cost.
        [IPV6]: /proc/net/anycast6 unbalanced inet6_dev refcnt
        [IPX]: Remove ancient changelog
        [IPX]: Remove outdated information from Kconfig
        [NET]: Revert socket.h/stat.h ifdef hacks.
        [IPV6]: anycast refcnt fix
        [XFRM] xfrm_user: Fix return values of xfrm_add_sa_expire.
      fb7d4045
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb · 100b4254
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb:
        V4L/DVB (5305): Mark VIDIOC_DBG_S/G_REGISTER as experimental
        V4L/DVB (5271): Add VIDIOC_TRY_ENCODER_CMD and VIDIOC_ENCODER_CMD ioctls.
        V4L/DVB (5270): Add VIDIOC_G_ENC_INDEX ioctl
        V4L/DVB (5276): Cxusb: fix firmware patch for big endian systems
        V4L/DVB (5258): Cafe_ccic: fix compiler warning
        V4L/DVB (5295): Digitv: open nxt6000 i2c_gate for TDED4 tuner handling
        V4L/DVB (5304): Improve chip matching in v4l2_register
        V4L/DVB (5255): Fix cx25840 firmware loading.
      100b4254
    • Ralf Baechle's avatar
      [PATCH] Fix sysfs build breakage if !CONFIG_SYSFS · d701d8a3
      Ralf Baechle authored
      B0rkage introduced by dfa87c82.
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d701d8a3
    • Tejun Heo's avatar
      ahci: improve spurious SDB FIS handling · afb2d552
      Tejun Heo authored
      Spurious SDB FIS during NCQ might not contain spurious completions.
      It could be spurious TF update or invalid async notification.  Treat
      as HSM violation iff a spurious SDB FIS contains spurious completions;
      otherwise, just whine once about it.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      afb2d552
    • Tejun Heo's avatar
      ahci/pata_jmicron: match class not function number · e34bb370
      Tejun Heo authored
      Make jmiron_ata quirk update pdev->class after programming the device
      and update ahci and pata_jmicron such that they match class code
      instead of checking function number manually.  For ahci, it matches
      for vendor and class.  For pata_jmicron, it matches vendor, device and
      class as IDE class isn't as well defined as AHCI class.
      
      This makes jmicron device matching more conventional and script
      friendly.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      e34bb370
    • Tejun Heo's avatar
      jmicron ATA: reimplement jmicron ATA quirk · 5ee2ae7f
      Tejun Heo authored
      Reimplement jmicron ATA quirk.
      
      * renamed to quirk_jmicron_ata()
      * quirk is invoked only for the affected controllers
      * programming is stricter.  e.g. conf5 bit24 is cleared if
        unnecessary.
      * code factored for readability
      * JMB360 and JMB368 are programmed into proper mode
      
      Verified on JMB360, 363 and 368.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      5ee2ae7f
    • Tejun Heo's avatar
      pata_jmicron: drop unnecessary device programming in [re]init · 960627b7
      Tejun Heo authored
      Channel redirect and AHCI mode enable programmings are done via PCI
      quirk for both probe and resume paths.  Drop duplicate and possibly
      unsafe device programming from pata_jmicron().
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      960627b7
    • Adam Litke's avatar
      [PATCH] Fix get_unmapped_area and fsync for hugetlb shm segments · 516dffdc
      Adam Litke authored
      This patch provides the following hugetlb-related fixes to the recent stacked
      shm files changes:
       - Update is_file_hugepages() so it will reconize hugetlb shm segments.
       - get_unmapped_area must be called with the nested file struct to handle
         the sfd->file->f_ops->get_unmapped_area == NULL case.
       - The fsync f_op must be wrapped since it is specified in the hugetlbfs
         f_ops.
      
      This is based on proposed fixes from Eric Biederman that were debugged and
      tested by me.  Without it, attempting to use hugetlb shared memory segments
      on powerpc (and likely ia64) will kill your box.
      Signed-off-by: default avatarAdam Litke <agl@us.ibm.com>
      Cc: Eric Biederman <ebiederm@xmission.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Acked-by: default avatarWilliam Irwin <bill.irwin@oracle.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      516dffdc
    • Tejun Heo's avatar
      libata: blacklist FUJITSU MHT2060BH for NCQ · 09125ea6
      Tejun Heo authored
      Blacklist FUJITSU MHT2060BH for NCQ.  On this drive, NCQ works iff
      queue depth is equal to or less than 4.  Just turn it off.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Cc: Mike Accetta <maccetta@laurelnetworks.com>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      09125ea6
    • Tejun Heo's avatar
      sata_sil24: kill unused local variable idx in sil24_fill_sg() · 4fc00cb4
      Tejun Heo authored
      Kill unused local variable idx in sil24_fill_sg().
      
      Spotted by Jeff Garzik.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Cc: Jeff Garzik <jeff@garzik.org>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      4fc00cb4
    • Tejun Heo's avatar
      libata: clear drvdata in ata_host_release(), take#2 · 1aa56cca
      Tejun Heo authored
      Clearing drvdata in ->remove_one causes NULL pointer deference.  Clear
      drvdata only in ata_host_release() after all resources are freed.
      Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
      Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
      1aa56cca
    • Trond Myklebust's avatar
      [PATCH] VM: invalidate_inode_pages2_range() should not exit early · 7b965e08
      Trond Myklebust authored
      Fix invalidate_inode_pages2_range() so that it does not immediately exit
      just because a single page in the specified range could not be removed.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7b965e08
    • Aristeu Sergio Rozanski Filho's avatar
      [PATCH] tty_io: fix race in master pty close/slave pty close path · 5a39e8c6
      Aristeu Sergio Rozanski Filho authored
      This patch fixes a possible race that leads to double freeing an idr index.
       When the master begin to close, release_dev() is called and then
      pty_close() is called:
      
              if (tty->driver->close)
                      tty->driver->close(tty, filp);
      
      This is done without helding any locks other than BKL.  Inside pty_close(),
      being a master close, the devpts entry will be removed:
      
      #ifdef CONFIG_UNIX98_PTYS
                      if (tty->driver == ptm_driver)
                              devpts_pty_kill(tty->index);
      #endif
      
      But devpts_pty_kill() will call get_node() that may sleep while waiting for
      &devpts_root->d_inode->i_sem.  When this happens and the slave is being
      opened, tty_open() just found the driver and index:
      
              driver = get_tty_driver(device, &index);
              if (!driver) {
                      mutex_unlock(&tty_mutex);
                      return -ENODEV;
              }
      
      This part of the code is already protected under tty_mute.  The problem is
      that the slave close already got an index.  Then init_dev() is called and
      blocks waiting for the same &devpts_root->d_inode->i_sem.
      
      When the master close resumes, it removes the devpts entry, and the
      relation between idr index and the tty is gone.  The master then sleeps
      waiting for the tty_mutex on release_dev().
      
      Slave open resumes and found no tty for that index.  As result, a NULL tty
      is returned and init_dev() doesn't flow to fast_track:
      
              /* check whether we're reopening an existing tty */
              if (driver->flags & TTY_DRIVER_DEVPTS_MEM) {
                      tty = devpts_get_tty(idx);
                      if (tty && driver->subtype == PTY_TYPE_MASTER)
                              tty = tty->link;
              } else {
                      tty = driver->ttys[idx];
              }
              if (tty) goto fast_track;
      
      The result of this, is that a new tty will be created and init_dev() returns
      sucessfull. After returning, tty_mutex is dropped and master close may resume.
      
      Master close finds it's the only use and both sides are closing, then releases
      the tty and the index. At this point, the idr index is free, but slave still
      has it.
      
      Slave open then calls pty_open() and finds that tty->link->count is 0,
      because there's no master and returns error.  Then tty_open() calls
      release_dev() which executes without any warning, as it was a case of last
      slave close when the master is already closed (master->count == 0,
      slave->count == 1).  The tty is then released with the already released idr
      index.
      
      This normally would only issue a warning on idr_remove() but in case of a
      customer's critical application, it's never too simple:
      
      thread1: opens master, gets index X
      thread1: begin closing master
      thread2: begin opening slave with index X
      thread1: finishes closing master, index X released
      thread3: opens master, gets index X, just released
      thread2: fails opening slave, releases index X         <----
      thread4: opens master, gets index X, init_dev() then find an already in use
      	 and healthy tty and fails
      
      If no more indexes are released, ptmx_open() will keep failing, as the
      first free index available is X, and it will make init_dev() fail because
      you're trying to "reopen a master" which isn't valid.
      
      The patch notices when this race happens and make init_dev() fail
      imediately.  The init_dev() function is called with tty_mutex held, so it's
      safe to continue with tty till the end of function because release_dev()
      won't make any further changes without grabbing the tty_mutex.
      
      Without the patch, on some machines it's possible get easily idr warnings
      like this one:
      
      idr_remove called for id=15 which is not allocated.
       [<c02555b9>] idr_remove+0x139/0x170
       [<c02a1b62>] release_mem+0x182/0x230
       [<c02a28e7>] release_dev+0x4b7/0x700
       [<c02a0ea7>] tty_ldisc_enable+0x27/0x30
       [<c02a1e64>] init_dev+0x254/0x580
       [<c02a0d64>] check_tty_count+0x14/0xb0
       [<c02a4f05>] tty_open+0x1c5/0x340
       [<c02a4d40>] tty_open+0x0/0x340
       [<c017388f>] chrdev_open+0xaf/0x180
       [<c017c2ac>] open_namei+0x8c/0x760
       [<c01737e0>] chrdev_open+0x0/0x180
       [<c0167bc9>] __dentry_open+0xc9/0x210
       [<c0167e2c>] do_filp_open+0x5c/0x70
       [<c0167a91>] get_unused_fd+0x61/0xd0
       [<c0167e93>] do_sys_open+0x53/0x100
       [<c0167f97>] sys_open+0x27/0x30
       [<c010303b>] syscall_call+0x7/0xb
      
      using this test application available on:
       http://www.ruivo.org/~aris/pty_sodomizer.cSigned-off-by: default avatarAristeu Sergio Rozanski Filho <aris@ruivo.org>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Chuck Ebbert <cebbert@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5a39e8c6