10 Nov, 2010

2 commits

  • The fast GUP changes stopped using the fshared flag in
    put_futex_keys(), but we kept the interface the same.

    Cleanup all stale users.

    This patch is split out from Darren Harts combo patch which also
    combines various flags. This way the changes are clearly separated.

    Signed-off-by: Thomas Gleixner
    Cc: Darren Hart
    LKML-Reference:

    Thomas Gleixner
     
  • Since commit 1dcc41bb (futex: Change 3rd arg of fetch_robust_entry()
    to unsigned int*) some gcc versions decided to emit the following
    warning:

    kernel/futex.c: In function ‘exit_robust_list’:
    kernel/futex.c:2492: warning: ‘next_pi’ may be used uninitialized in this function

    The commit did not introduce the warning as gcc should have warned
    before that commit as well. It's just gcc being silly.

    The code path really can't result in next_pi being unitialized (or
    should not), but let's keep the build clean. Annotate next_pi as an
    uninitialized_var.

    [ tglx: Addressed the same issue in futex_compat.c and massaged the
    changelog ]

    Signed-off-by: Darren Hart
    Tested-by: Matt Fleming
    Tested-by: Uwe Kleine-König
    Cc: Peter Zijlstra
    Cc: Eric Dumazet
    Cc: John Kacur
    Cc: Ingo Molnar
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    Darren Hart
     

09 Nov, 2010

13 commits

  • …s/security-testing-2.6

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6:
    kernel: Constify temporary variable in roundup()

    Linus Torvalds
     
  • Fix build error with GCC 3.x caused by commit b28efd54
    "kernel: roundup should only reference arguments once" by constifying
    temporary variable used in that macro.

    Signed-off-by: Tetsuo Handa
    Suggested-by: Andrew Morton
    Acked-by: Eric Paris
    Signed-off-by: James Morris

    Tetsuo Handa
     
  • Fix openpromfs compilation by adding a missing semicolon in
    fs/openpromfs/inode.c openprom_mount().

    Signed-off-by: Meelis Roos
    Signed-off-by: David S. Miller
    Signed-off-by: Linus Torvalds

    Meelis Roos
     
  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    ext4: Add new ext4 inode tracepoints
    ext4: Don't call sb_issue_discard() in ext4_free_blocks()
    ext4: do not try to grab the s_umount semaphore in ext4_quota_off
    ext4: fix potential race when freeing ext4_io_page structures
    ext4: handle writeback of inodes which are being freed
    ext4: initialize the percpu counters before replaying the journal
    ext4: "ret" may be used uninitialized in ext4_lazyinit_thread()
    ext4: fix lazyinit hang after removing request

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6:
    TTY: move .gitignore from drivers/char/ to drivers/tty/vt/
    TTY: create drivers/tty/vt and move the vt code there
    TTY: create drivers/tty and move the tty core files there

    Linus Torvalds
     
  • …egkh/staging-next-2.6

    * 'staging-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-next-2.6:
    Staging: ath6kl: remove empty files that mess with 'distclean'
    staging: ath6kl: Fixing the driver to use modified mmc_host structure
    Staging: solo6x10: fix build problem

    Linus Torvalds
     
  • …nel/git/lethal/sh-2.6

    * 'rmobile-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6:
    mmc: sh_mmcif: Convert extern inline to static inline.
    ARM: mach-shmobile: Allow GPIO chips to register IRQ mappings.
    ARM: mach-shmobile: fix sh7372 after a recent clock framework rework
    ARM: mach-shmobile: include drivers/sh/Kconfig
    ARM: mach-shmobile: ap4evb: Add HDMI sound support
    ARM: mach-shmobile: clock-sh7372: Add FSIDIV clock support
    ARM: shmobile: remove sh_timer_config clk member

    Linus Torvalds
     
  • * 'sh-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6:
    sh: clkfwk: Fix up checkpatch warnings.
    sh: make some needlessly global sh7724 clocks static
    sh: add clk_round_parent() to optimize parent clock rate
    sh: Simplify phys_addr_mask()/PTE_PHYS_MASK for 29/32-bit.
    sh: nommu: Support building without an uncached mapping.
    sh: nommu: use 32-bit phys mode.
    sh: mach-se: Fix up SE7206 no ioport build.
    sh: intc: Update for single IRQ reservation helper.
    sh: clkfwk: Fix up rate rounding error handling.
    sh: mach-se: Rip out superfluous 7751 PIO routines.
    sh: mach-se: Rip out superfluous 770x PIO routines.
    sh: mach-edosk7705: Kill off machtype, consolidate board def.
    sh: mach-edosk7705: update for this century, kill off PIO trapping.
    sh: mach-se: Rip out superfluous 7206 PIO routines.
    sh: mach-systemh: Kill off dead board.
    sh: mach-snapgear: Kill off machtype, consolidate board def.
    sh: mach-snapgear: Rip out superfluous PIO routines.
    sh: mach-microdev: SuperIO-relative ioport mapping.

    Linus Torvalds
     
  • Add ext4_evict_inode, ext4_drop_inode, ext4_mark_inode_dirty, and
    ext4_begin_ordered_truncate()

    Signed-off-by: "Theodore Ts'o"

    Theodore Ts'o
     
  • Commit 5c521830cf (ext4: Support discard requests when running in
    no-journal mode) attempts to add sb_issue_discard() for data blocks
    (in data=writeback mode) and in no-journal mode. Unfortunately, this
    no longer works, because in commit dd3932eddf (block: remove
    BLKDEV_IFL_WAIT), sb_issue_discard() only presents a synchronous
    interface, and there are times when we call ext4_free_blocks() when we
    are are holding a spinlock, or are otherwise in an atomic context.

    For now, I've removed the call to sb_issue_discard() to prevent a
    deadlock or (if spinlock debugging is enabled) failures like this:

    BUG: scheduling while atomic: rc.sysinit/1376/0x00000002
    Pid: 1376, comm: rc.sysinit Not tainted 2.6.36-ARCH #1
    Call Trace:
    [] __schedule_bug+0x5e/0x70
    [] schedule+0x950/0xa70
    [] ? insert_work+0x7d/0x90
    [] ? queue_work_on+0x1d/0x30
    [] ? queue_work+0x37/0x60
    [] schedule_timeout+0x21d/0x360
    [] ? generic_make_request+0x2c3/0x540
    [] wait_for_common+0xc0/0x150
    [] ? default_wake_function+0x0/0x10
    [] ? submit_bio+0x7c/0x100
    [] ? wake_bit_function+0x0/0x40
    [] wait_for_completion+0x18/0x20
    [] blkdev_issue_discard+0x1b9/0x210
    [] ext4_free_blocks+0x68e/0xb60
    [] ? __ext4_handle_dirty_metadata+0x110/0x120
    [] ext4_ext_truncate+0x8cc/0xa70
    [] ? pagevec_lookup+0x1e/0x30
    [] ext4_truncate+0x178/0x5d0
    [] ? unmap_mapping_range+0xab/0x280
    [] vmtruncate+0x56/0x70
    [] ext4_setattr+0x14b/0x460
    [] notify_change+0x194/0x380
    [] do_truncate+0x60/0x90
    [] ? security_inode_permission+0x1a/0x20
    [] ? tomoyo_path_truncate+0x11/0x20
    [] do_last+0x5d9/0x770
    [] do_filp_open+0x1ed/0x680
    [] ? page_fault+0x1f/0x30
    [] ? alloc_fd+0xec/0x140
    [] do_sys_open+0x61/0x120
    [] sys_open+0x1b/0x20
    [] system_call_fastpath+0x16/0x1b

    https://bugzilla.kernel.org/show_bug.cgi?id=22302

    Reported-by: Mathias Burén
    Signed-off-by: "Theodore Ts'o"
    Cc: jiayingz@google.com

    Theodore Ts'o
     
  • It's not needed to sync the filesystem, and it fixes a lock_dep complaint.

    Signed-off-by: Dmitry Monakhov
    Signed-off-by: "Theodore Ts'o"
    Reviewed-by: Jan Kara

    Dmitry Monakhov
     
  • Use an atomic_t and make sure we don't free the structure while we
    might still be submitting I/O for that page.

    Signed-off-by: "Theodore Ts'o"

    Theodore Ts'o
     
  • The following BUG can occur when an inode which is getting freed when
    it still has dirty pages outstanding, and it gets deleted (in this
    because it was the target of a rename). In ordered mode, we need to
    make sure the data pages are written just in case we crash before the
    rename (or unlink) is committed. If the inode is being freed then
    when we try to igrab the inode, we end up tripping the BUG_ON at
    fs/ext4/page-io.c:146.

    To solve this problem, we need to keep track of the number of io
    callbacks which are pending, and avoid destroying the inode until they
    have all been completed. That way we don't have to bump the inode
    count to keep the inode from being destroyed; an approach which
    doesn't work because the count could have already been dropped down to
    zero before the inode writeback has started (at which point we're not
    allowed to bump the count back up to 1, since it's already started
    getting freed).

    Thanks to Dave Chinner for suggesting this approach, which is also
    used by XFS.

    kernel BUG at /scratch_space/linux-2.6/fs/ext4/page-io.c:146!
    Call Trace:
    [] ext4_bio_write_page+0x172/0x307
    [] mpage_da_submit_io+0x2f9/0x37b
    [] mpage_da_map_and_submit+0x2cc/0x2e2
    [] mpage_add_bh_to_extent+0xc6/0xd5
    [] write_cache_pages_da+0x2a4/0x3ac
    [] ext4_da_writepages+0x2d6/0x44d
    [] do_writepages+0x1c/0x25
    [] __filemap_fdatawrite_range+0x4b/0x4d
    [] filemap_fdatawrite_range+0xe/0x10
    [] jbd2_journal_begin_ordered_truncate+0x7b/0xa2
    [] ext4_evict_inode+0x57/0x24c
    [] evict+0x22/0x92
    [] iput+0x212/0x249
    [] dentry_iput+0xa1/0xb9
    [] d_kill+0x3d/0x5d
    [] dput+0x13a/0x147
    [] sys_renameat+0x1b5/0x258
    [] ? _atomic_dec_and_lock+0x2d/0x4c
    [] ? cp_new_stat+0xde/0xea
    [] ? sys_newlstat+0x2d/0x38
    [] sys_rename+0x16/0x18
    [] system_call_fastpath+0x16/0x1b

    Reported-by: Nick Bowler
    Signed-off-by: "Theodore Ts'o"
    Tested-by: Nick Bowler

    Theodore Ts'o
     

08 Nov, 2010

5 commits


07 Nov, 2010

1 commit


06 Nov, 2010

19 commits

  • While scanning the floopy code due to c093ee4f07f4 ("floppy: fix
    use-after-free in module load failure path"), I found one more instance
    of trying to access disk->queue pointer after doing put_disk() on
    gendisk. For some reason , floppy moule still loads/unloads fine. The
    object is probably still around with right pointer values.

    o There seems to be one more instance of trying to cleanup the request
    queue after we have called put_disk() on associated gendisk.

    o This fix is more out of code inspection. Even without this fix for
    some reason I am able to load/unload floppy module without any
    issues.

    o Floppy module loads/unloads fine after the fix.

    Signed-off-by: Vivek Goyal
    Signed-off-by: Linus Torvalds

    Vivek Goyal
     
  • The autogenerated files (consolemap_deftbl.c and defkeymap.c) need to
    be ignored by git, so move the .gitignore file that was doing it to the
    properly location now that the files have moved as well.

    Cc: Arnd Bergmann
    Cc: Jiri Slaby
    Cc: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • Commit 27ae60f8f7aa ("ipw2x00: replace "ieee80211" with "libipw" where
    appropriate") changed DRV_NAME to be "libipw", but didn't properly fix
    up the places where it was used to specify the name for the /proc/net/
    directory.

    For backwards compatibility reasons, that directory name remained
    "ieee80211", but due to the DRV_NAME change, the error case printouts
    and the cleanup functions now used "libipw" instead. Which made it all
    fail badly.

    For example, on module unload as reported by Randy:

    WARNING: at fs/proc/generic.c:816 remove_proc_entry+0x156/0x35e()
    name 'libipw'

    because it's trying to unregister a /proc directory that obviously
    doesn't even exist.

    Clean it all up to use DRV_PROCNAME for the actual /proc directory name.

    Reported-and-tested-by: Randy Dunlap
    Cc: Pavel Roskin
    Cc: John W. Linville
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • * 'kvm-updates/2.6.37' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
    KVM: PPC: BookE: Load the lower half of MSR
    KVM: PPC: BookE: fix sleep with interrupts disabled
    KVM: PPC: e500: Call kvm_vcpu_uninit() before kvmppc_e500_tlb_uninit().
    PPC: KVM: Book E doesn't have __end_interrupts.
    KVM: x86: Issue smp_call_function_many with preemption disabled
    KVM: x86: fix information leak to userland
    KVM: PPC: fix information leak to userland
    KVM: MMU: fix rmap_remove on non present sptes
    KVM: Write protect memory after slot swap

    Linus Torvalds
     
  • Commit 488211844e0c ("floppy: switch to one queue per drive instead of
    sharing a queue") introduced a use-after-free. We do "put_disk()" on
    the disk device _before_ we then clean up the queue associated with that
    disk.

    Move the put_disk() down to avoid dereferencing a free'd data structure.

    Cc: Jens Axboe
    Cc: Vivek Goyal
    Reported-and-tested-by: Randy Dunlap
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Commit d9ca07a05ce1 ("watchdog: Avoid kernel crash when disabling
    watchdog") introduces a section mismatch.

    Now that we reference no_watchdog from non-__init code it can no longer
    be __initdata.

    Signed-off-by: David Daney
    Cc: Stephane Eranian
    Cc: Peter Zijlstra
    Cc: Ingo Molnar
    Signed-off-by: Linus Torvalds

    David Daney
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (41 commits)
    inet_diag: Make sure we actually run the same bytecode we audited.
    netlink: Make nlmsg_find_attr take a const nlmsghdr*.
    fib: fib_result_assign() should not change fib refcounts
    netfilter: ip6_tables: fix information leak to userspace
    cls_cgroup: Fix crash on module unload
    memory corruption in X.25 facilities parsing
    net dst: fix percpu_counter list corruption and poison overwritten
    rds: Remove kfreed tcp conn from list
    rds: Lost locking in loop connection freeing
    de2104x: fix panic on load
    atl1 : fix panic on load
    netxen: remove unused firmware exports
    caif: Remove noisy printout when disconnecting caif socket
    caif: SPI-driver bugfix - incorrect padding.
    caif: Bugfix for socket priority, bindtodev and dbg channel.
    smsc911x: Set Ethernet EEPROM size to supported device's size
    ipv4: netfilter: ip_tables: fix information leak to userland
    ipv4: netfilter: arp_tables: fix information leak to userland
    cxgb4vf: remove call to stop TX queues at load time.
    cxgb4: remove call to stop TX queues at load time.
    ...

    Linus Torvalds
     
  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:
    firewire: ohci: fix race when reading count in AR descriptor
    firewire: ohci: avoid reallocation of AR buffers
    firewire: ohci: fix race in AR split packet handling
    firewire: ohci: fix buffer overflow in AR split packet handling

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
    cifs: make cifs_set_oplock_level() take a cifsInodeInfo pointer
    cifs: dereferencing first then checking
    cifs: trivial comment fix: tlink_tree is now a rbtree
    [CIFS] Cleanup unused variable build warning
    cifs: convert tlink_tree to a rbtree
    cifs: store pointer to master tlink in superblock (try #2)
    cifs: trivial doc fix: note setlease implemented
    CIFS: Add cifs_set_oplock_level
    FS: cifs, remove unneeded NULL tests

    Linus Torvalds
     
  • posix-cpu-timers.c correctly assumes that the dying process does
    posix_cpu_timers_exit_group() and removes all !CPUCLOCK_PERTHREAD
    timers from signal->cpu_timers list.

    But, it also assumes that timer->it.cpu.task is always the group
    leader, and thus the dead ->task means the dead thread group.

    This is obviously not true after de_thread() changes the leader.
    After that almost every posix_cpu_timer_ method has problems.

    It is not simple to fix this bug correctly. First of all, I think
    that timer->it.cpu should use struct pid instead of task_struct.
    Also, the locking should be reworked completely. In particular,
    tasklist_lock should not be used at all. This all needs a lot of
    nontrivial and hard-to-test changes.

    Change __exit_signal() to do posix_cpu_timers_exit_group() when
    the old leader dies during exec. This is not the fix, just the
    temporary hack to hide the problem for 2.6.37 and stable. IOW,
    this is obviously wrong but this is what we currently have anyway:
    cpu timers do not work after mt exec.

    In theory this change adds another race. The exiting leader can
    detach the timers which were attached to the new leader. However,
    the window between de_thread() and release_task() is small, we
    can pretend that sys_timer_create() was called before de_thread().

    Signed-off-by: Oleg Nesterov
    Signed-off-by: Linus Torvalds

    Oleg Nesterov
     
  • * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/staging:
    hwmon: (ltc4261) Fix error message format
    hwmon: (ltc4261) Add missing newline in debug message

    Linus Torvalds
     
  • All the callers already have a pointer to struct cifsInodeInfo. Use it.

    Signed-off-by: Suresh Jayaraman
    Signed-off-by: Pavel Shilovsky
    Signed-off-by: Steve French

    Pavel Shilovsky
     
  • adapter->id is deprecated and not set by any adapter driver, so this
    was certainly not what the author wanted to use. adapter->nr maybe,
    but as dev_err() already includes this value, as well as the client's
    address, there's no point repeating them. Better print a simple error
    message in plain English words.

    Signed-off-by: Jean Delvare
    Cc: Guenter Roeck
    Signed-off-by: Guenter Roeck

    Jean Delvare
     
  • Reported-by: Joe Perches
    Signed-off-by: Guenter Roeck
    Acked-by: Jean Delvare

    Guenter Roeck
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile:
    arch/tile: mark "hardwall" device as non-seekable
    asm-generic/stat.h: support 64-bit file time_t for stat()
    arch/tile: don't allow user code to set the PL via ptrace or signal return
    arch/tile: correct double syscall restart for nested signals
    arch/tile: avoid __must_check warning on one strict_strtol check
    arch/tile: bomb raw_local_irq_ to arch_local_irq_
    arch/tile: complete migration to new kmap_atomic scheme

    Linus Torvalds
     
  • Add MODULE_LICENSE() that matches file comments so that kernel
    is not tainted.

    leds_net5501: module license 'unspecified' taints kernel.

    Signed-off-by: Randy Dunlap
    Acked-by: Richard Purdie
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • This was preventing the guest from setting any bits in the
    hardware MSR which aren't forced on, such as MSR[SPE].

    Signed-off-by: Scott Wood
    Signed-off-by: Alexander Graf

    Scott Wood
     
  • It is not legal to call mutex_lock() with interrupts disabled.
    This will assert with debug checks enabled.

    If there's a real need to disable interrupts here, it could be done
    after the mutex is acquired -- but I don't see why it's needed at all.

    Signed-off-by: Scott Wood
    Reviewed-by: Christian Ehrhardt
    Signed-off-by: Alexander Graf

    Scott Wood
     
  • The VCPU uninit calls some TLB functions, and the TLB uninit function
    frees the memory used by them.

    Signed-off-by: Scott Wood
    Acked-by: Liu Yu
    Signed-off-by: Alexander Graf

    Scott Wood