commit 6ba813f2e965bc8f0e1da2bce5eceed97035c052
Author: Greg Kroah-Hartman <gregkh@suse.de>
Date:   Thu Jun 23 15:29:08 2011 -0700

    Linux 2.6.33.15

commit cb50a74e1f0ae999326540c93c735544b77cdf23
Author: Greg Kroah-Hartman <gregkh@suse.de>
Date:   Wed Jun 15 13:12:35 2011 -0700

    Revert "iwlagn: Support new 5000 microcode."
    
    This reverts commit 6f63415fc1b690cb50c2ad48ba6e9e6e88e271b4.
    
    It turns out this is not what we want to have happen for the .32 and
    .33-longterm kernels as it does not work properly at all.
    
    This was reported by Gentoo, Arch, and Canonical developers as causing
    problems for their users:
    	https://bugs.archlinux.org/task/24302
    	http://bugs.gentoo.org/show_bug.cgi?id=359445
    	https://bugs.launchpad.net/ubuntu/+source/linux/+bug/796336
    
    Cc: Herton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
    Cc: Gordon Malm <gengor@gentoo.org>
    Cc: Don Fry <donald.h.fry@intel.com>
    Cc: Wey-Yi Guy <wey-yi.w.guy@intel.com>
    Cc: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 3f6c2552619fd19afabfc76c48fe4a3d3cf93d0a
Author: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
Date:   Tue May 10 10:00:21 2011 +0200

    netfilter: IPv6: fix DSCP mangle code
    
    commit 1ed2f73d90fb49bcf5704aee7e9084adb882bfc5 upstream.
    
    The mask indicates the bits one wants to zero out, so it needs to be
    inverted before applying to the original TOS field.
    
    Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit fd1aa48ee98eb70abeb51f8bbe1700393980f05b
Author: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
Date:   Tue May 10 09:55:44 2011 +0200

    netfilter: IPv6: initialize TOS field in REJECT target module
    
    commit 4319cc0cf5bb894b7368008cdf6dd20eb8868018 upstream.
    
    The IPv6 header is not zeroed out in alloc_skb so we must initialize
    it properly unless we want to see IPv6 packets with random TOS fields
    floating around. The current implementation resets the flow label
    but this could be changed if deemed necessary.
    
    We stumbled upon this issue when trying to apply a mangle rule to
    the RST packet generated by the REJECT target module.
    
    Signed-off-by: Fernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 4bcfb455c442fc3343d14d8687254aaaa2f3d4cd
Author: Johannes Weiner <hannes@cmpxchg.org>
Date:   Fri Oct 1 07:43:54 2010 +0000

    xfs: properly account for reclaimed inodes
    
    commit 081003fff467ea0e727f66d5d435b4f473a789b3 upstream.
    
    When marking an inode reclaimable, a per-AG counter is increased, the
    inode is tagged reclaimable in its per-AG tree, and, when this is the
    first reclaimable inode in the AG, the AG entry in the per-mount tree
    is also tagged.
    
    When an inode is finally reclaimed, however, it is only deleted from
    the per-AG tree.  Neither the counter is decreased, nor is the parent
    tree's AG entry untagged properly.
    
    Since the tags in the per-mount tree are not cleared, the inode
    shrinker iterates over all AGs that have had reclaimable inodes at one
    point in time.
    
    The counters on the other hand signal an increasing amount of slab
    objects to reclaim.  Since "70e60ce xfs: convert inode shrinker to
    per-filesystem context" this is not a real issue anymore because the
    shrinker bails out after one iteration.
    
    But the problem was observable on a machine running v2.6.34, where the
    reclaimable work increased and each process going into direct reclaim
    eventually got stuck on the xfs inode shrinking path, trying to scan
    several million objects.
    
    Fix this by properly unwinding the reclaimable-state tracking of an
    inode when it is reclaimed.
    
    Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Alex Elder <aelder@sgi.com>
    Backported-by: Stefan Priebe <s.priebe@profihost.ag>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit d1ce81094e627b7d1f3b64ae3c727b4e8e63f2f4
Author: James Bottomley <James.Bottomley@suse.de>
Date:   Sun Apr 24 14:30:14 2011 -0500

    pata_cm64x: fix boot crash on parisc
    
    commit 9281b16caac1276817b77033c5b8a1f5ca30102c upstream.
    
    The old IDE cmd64x checks the status of the CNTRL register to see if
    the ports are enabled before probing them.  pata_cmd64x doesn't do
    this, which causes a HPMC on parisc when it tries to poke at the
    secondary port because apparently the BAR isn't wired up (and a
    non-responding piece of memory causes a HPMC).
    
    Fix this by porting the CNTRL register port detection logic from IDE
    cmd64x.  In addition, following converns from Alan Cox, add a check to
    see if a mobility electronics bridge is the immediate parent and forgo
    the check if it is (prevents problems on hotplug controllers).
    
    Signed-off-by: James Bottomley <James.Bottomley@suse.de>
    Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 5ad3787eed274c429d7878e9e37b1f42c01def81
Author: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Date:   Mon Jan 18 18:15:18 2010 +0100

    pata_cmd64x: remove unused definitions
    
    commit c754d9b6e04371fb398cdd2f5e77be895126be20 upstream.
    
    s/ARTIM2/ARTTIM23/ in cmd648_bmdma_stop() while at it
    
    Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit d48af39794bd574c525d5504e3daf1dffe28fc6e
Author: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Date:   Mon Jan 18 18:15:11 2010 +0100

    pata_cmd64x: cmd648_bmdma_stop() fix
    
    commit 03a849e6ddb604ff6a220b78637ee8e122ffc796 upstream.
    
    Clear the primary channel pending interrupt bit
    instead of the reserved one.
    
    Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 42215a3f68fedc0a119c15b3f482c6b9dd0d938e
Author: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Date:   Mon Jan 18 18:14:55 2010 +0100

    pata_cmd64x: fix PIO setup
    
    commit a2bd62207af4be8f5fe815ff90cc309056407829 upstream.
    
    Fix incorrect handling of recovery clocks value == 16 resulting
    in overclocked recovery timings & potentially underclocked active
    timings.
    
    Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 1103e4ec5b6b7eeff5209322fe76e910faa8f3d5
Author: Namhyung Kim <namhyung@gmail.com>
Date:   Mon Jun 13 14:48:22 2011 +0900

    md/raid5: fix raid5_set_bi_hw_segments
    
    commit 9b2dc8b665932a8e681a7ab3237f60475e75e161 upstream.
    
    The @bio->bi_phys_segments consists of active stripes count in the
    lower 16 bits and processed stripes count in the upper 16 bits. So
    logical-OR operator should be bitwise one.
    
    This bug has been present since 2.6.27 and the fix is suitable for any
    -stable kernel since then.  Fortunately the bad code is only used on
    error paths and is relatively unlikely to be hit.
    
    Signed-off-by: Namhyung Kim <namhyung@gmail.com>
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit df036b7354a54c1fb1e4e6dc1962d72535b0bad5
Author: Namhyung Kim <namhyung@gmail.com>
Date:   Thu Jun 9 11:42:54 2011 +1000

    md: check ->hot_remove_disk when removing disk
    
    commit 01393f3d5836b7d62e925e6f4658a7eb22b83a11 upstream.
    
    Check pers->hot_remove_disk instead of pers->hot_add_disk in slot_store()
    during disk removal. The linear personality only has ->hot_add_disk and
    no ->hot_remove_disk, so that removing disk in the array resulted to
    following kernel bug:
    
    $ sudo mdadm --create /dev/md0 --level=linear --raid-devices=4 /dev/loop[0-3]
    $ echo none | sudo tee /sys/block/md0/md/dev-loop2/slot
     BUG: unable to handle kernel NULL pointer dereference at           (null)
     IP: [<          (null)>]           (null)
     PGD c9f5d067 PUD 8575a067 PMD 0
     Oops: 0010 [#1] SMP
     CPU 2
     Modules linked in: linear loop bridge stp llc kvm_intel kvm asus_atk0110 sr_mod cdrom sg
    
     Pid: 10450, comm: tee Not tainted 3.0.0-rc1-leonard+ #173 System manufacturer System Product Name/P5G41TD-M PRO
     RIP: 0010:[<0000000000000000>]  [<          (null)>]           (null)
     RSP: 0018:ffff880085757df0  EFLAGS: 00010282
     RAX: ffffffffa00168e0 RBX: ffff8800d1431800 RCX: 000000000000006e
     RDX: 0000000000000001 RSI: 0000000000000002 RDI: ffff88008543c000
     RBP: ffff880085757e48 R08: 0000000000000002 R09: 000000000000000a
     R10: 0000000000000000 R11: ffff88008543c2e0 R12: 00000000ffffffff
     R13: ffff8800b4641000 R14: 0000000000000005 R15: 0000000000000000
     FS:  00007fe8c9e05700(0000) GS:ffff88011fa00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
     CR2: 0000000000000000 CR3: 00000000b4502000 CR4: 00000000000406e0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
     Process tee (pid: 10450, threadinfo ffff880085756000, task ffff8800c9f08000)
     Stack:
      ffffffff8138496a ffff8800b4641000 ffff88008543c268 0000000000000000
      ffff8800b4641000 ffff88008543c000 ffff8800d1431868 ffffffff81a78a90
      ffff8800b4641000 ffff88008543c000 ffff8800d1431800 ffff880085757e98
     Call Trace:
      [<ffffffff8138496a>] ? slot_store+0xaa/0x265
      [<ffffffff81384bae>] rdev_attr_store+0x89/0xa8
      [<ffffffff8115a96a>] sysfs_write_file+0x108/0x144
      [<ffffffff81106b87>] vfs_write+0xb1/0x10d
      [<ffffffff8106e6c0>] ? trace_hardirqs_on_caller+0x111/0x135
      [<ffffffff81106cac>] sys_write+0x4d/0x77
      [<ffffffff814fe702>] system_call_fastpath+0x16/0x1b
     Code:  Bad RIP value.
     RIP  [<          (null)>]           (null)
      RSP <ffff880085757df0>
     CR2: 0000000000000000
     ---[ end trace ba5fc64319a826fb ]---
    
    Signed-off-by: Namhyung Kim <namhyung@gmail.com>
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 35331d3d866939af6996c46d3cbc0025d71267bd
Author: Dave Jones <davej@redhat.com>
Date:   Sun Jun 12 16:35:28 2011 -0400

    CPUFREQ: Remove cpufreq_stats sysfs entries on module unload.
    
    commit 13f067537f34456443f61c950cd6dc37d1d5f3ee upstream.
    
    cpufreq_stats leaves behind its sysfs entries, which causes a panic
    when something stumbled across them.
    (Discovered by unloading cpufreq_stats while powertop was loaded).
    
    Signed-off-by: Dave Jones <davej@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 849cbca7e9f5b84f03bf29cd3a371f389f3dcaf4
Author: Robert Richter <robert.richter@amd.com>
Date:   Tue May 31 12:35:41 2011 +0200

    oprofile, dcookies: Fix possible circular locking dependency
    
    commit fe47ae7f53e179d2ef6771024feb000cbb86640f upstream.
    
    The lockdep warning below detects a possible A->B/B->A locking
    dependency of mm->mmap_sem and dcookie_mutex. The order in
    sync_buffer() is mm->mmap_sem/dcookie_mutex, while in
    sys_lookup_dcookie() it is vice versa.
    
    Fixing it in sys_lookup_dcookie() by unlocking dcookie_mutex before
    copy_to_user().
    
    oprofiled/4432 is trying to acquire lock:
     (&mm->mmap_sem){++++++}, at: [<ffffffff810b444b>] might_fault+0x53/0xa3
    
    but task is already holding lock:
     (dcookie_mutex){+.+.+.}, at: [<ffffffff81124d28>] sys_lookup_dcookie+0x45/0x149
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #1 (dcookie_mutex){+.+.+.}:
           [<ffffffff8106557f>] lock_acquire+0xf8/0x11e
           [<ffffffff814634f0>] mutex_lock_nested+0x63/0x309
           [<ffffffff81124e5c>] get_dcookie+0x30/0x144
           [<ffffffffa0000fba>] sync_buffer+0x196/0x3ec [oprofile]
           [<ffffffffa0001226>] task_exit_notify+0x16/0x1a [oprofile]
           [<ffffffff81467b96>] notifier_call_chain+0x37/0x63
           [<ffffffff8105803d>] __blocking_notifier_call_chain+0x50/0x67
           [<ffffffff81058068>] blocking_notifier_call_chain+0x14/0x16
           [<ffffffff8105a718>] profile_task_exit+0x1a/0x1c
           [<ffffffff81039e8f>] do_exit+0x2a/0x6fc
           [<ffffffff8103a5e4>] do_group_exit+0x83/0xae
           [<ffffffff8103a626>] sys_exit_group+0x17/0x1b
           [<ffffffff8146ad4b>] system_call_fastpath+0x16/0x1b
    
    -> #0 (&mm->mmap_sem){++++++}:
           [<ffffffff81064dfb>] __lock_acquire+0x1085/0x1711
           [<ffffffff8106557f>] lock_acquire+0xf8/0x11e
           [<ffffffff810b4478>] might_fault+0x80/0xa3
           [<ffffffff81124de7>] sys_lookup_dcookie+0x104/0x149
           [<ffffffff8146ad4b>] system_call_fastpath+0x16/0x1b
    
    other info that might help us debug this:
    
    1 lock held by oprofiled/4432:
     #0:  (dcookie_mutex){+.+.+.}, at: [<ffffffff81124d28>] sys_lookup_dcookie+0x45/0x149
    
    stack backtrace:
    Pid: 4432, comm: oprofiled Not tainted 2.6.39-00008-ge5a450d #9
    Call Trace:
     [<ffffffff81063193>] print_circular_bug+0xae/0xbc
     [<ffffffff81064dfb>] __lock_acquire+0x1085/0x1711
     [<ffffffff8102ef13>] ? get_parent_ip+0x11/0x42
     [<ffffffff810b444b>] ? might_fault+0x53/0xa3
     [<ffffffff8106557f>] lock_acquire+0xf8/0x11e
     [<ffffffff810b444b>] ? might_fault+0x53/0xa3
     [<ffffffff810d7d54>] ? path_put+0x22/0x27
     [<ffffffff810b4478>] might_fault+0x80/0xa3
     [<ffffffff810b444b>] ? might_fault+0x53/0xa3
     [<ffffffff81124de7>] sys_lookup_dcookie+0x104/0x149
     [<ffffffff8146ad4b>] system_call_fastpath+0x16/0x1b
    
    References: https://bugzilla.kernel.org/show_bug.cgi?id=13809
    Signed-off-by: Robert Richter <robert.richter@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 88afdf847fed7d08015394a91829d21b2f3574fd
Author: Daniel T Chen <crimsun@ubuntu.com>
Date:   Mon Jun 6 18:55:34 2011 -0400

    ALSA: hda: Fix quirk for Dell Inspiron 910
    
    commit 0a1896b27b030529ec770aefd790544a1bdb7d5a upstream.
    
    BugLink: https://launchpad.net/bugs/792712
    
    The original reporter states that sound from the internal speakers is
    inaudible until using the model=auto quirk. This symptom is due to an
    existing quirk mask for 0x102802b* that uses the model=dell quirk. To
    limit the possible regressions, leave the existing quirk mask but add
    a higher priority specific mask for the reporter's PCI SSID.
    
    Reported-and-tested-by: rodni hipp
    Signed-off-by: Daniel T Chen <crimsun@ubuntu.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit abc8d47633d8e63666af1fb9d101a825b8a7d978
Author: Dmitry Torokhov <dtor@vmware.com>
Date:   Tue May 31 14:37:23 2011 -0700

    USB: xhci - fix interval calculation for FS isoc endpoints
    
    commit cd3c18ba2fac14b34d03cae111f215009735ea06 upstream.
    
    Full-speed isoc endpoints specify interval in exponent based form in
    frames, not microframes, so we need to adjust accordingly.
    
    NEC xHCI host controllers will return an error code of 0x11 if a full
    speed isochronous endpoint is added with the Interval field set to
    something less than 3 (2^3 = 8 microframes, or one frame).  It is
    impossible for a full speed device to have an interval smaller than one
    frame.
    
    This was always an issue in the xHCI driver, but commit
    dfa49c4ad120a784ef1ff0717168aa79f55a483a "USB: xhci - fix math in
    xhci_get_endpoint_interval()" removed the clamping of the minimum value
    in the Interval field, which revealed this bug.
    
    This needs to be backported to stable kernels back to 2.6.31.
    
    Reported-by: Matt Evans <matt@ozlabs.org>
    Signed-off-by: Dmitry Torokhov <dtor@vmware.com>
    Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 67e7848f82bcfc47d82f70b0a007ba59f782abe9
Author: Steffen Sledz <sledz@dresearch-fe.de>
Date:   Tue Jun 7 14:01:56 2011 +0200

    USB: serial: add another 4N-GALAXY.DE PID to ftdi_sio driver
    
    commit a26d31cef06f43a76327c21235e75450869df2b8 upstream.
    
    E.g. newer CAN 2.0 A/B <=> USB 2.0 converters report idProduct=f3c2.
    
    Signed-off-by: Steffen Sledz <sledz@dresearch-fe.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit e1b998c861a4e2fcabe3fcb8ef4e2e80e8a57e5c
Author: Libor Pechacek <lpechacek@suse.cz>
Date:   Fri May 20 14:53:25 2011 +0200

    USB: core: Tolerate protocol stall during hub and port status read
    
    commit 3824c1ddaf744be44b170a335332b9d6afe79254 upstream.
    
    Protocol stall should not be fatal while reading port or hub status as it is
    transient state.  Currently hub EP0 STALL during port status read results in
    failed device enumeration.  This has been observed with ST-Ericsson (formerly
    Philips) USB 2.0 Hub (04cc:1521) after connecting keyboard.
    
    Signed-off-by: Libor Pechacek <lpechacek@suse.cz>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 0024eac2fe1bda18b06f391d44803cda998facaf
Author: Joerg Roedel <joerg.roedel@amd.com>
Date:   Mon Jun 6 16:50:14 2011 +0200

    x86/amd-iommu: Fix boot crash with hidden PCI devices
    
    commit 26018874e3584f1658570d41d57d4c34f6a53aa0 upstream.
    
    Some PCIe cards ship with a PCI-PCIe bridge which is not
    visible as a PCI device in Linux. But the device-id of the
    bridge is present in the IOMMU tables which causes a boot
    crash in the IOMMU driver.
    This patch fixes by removing these cards from the IOMMU
    handling. This is a pure -stable fix, a real fix to handle
    this situation appriatly will follow for the next merge
    window.
    
    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 1ad5dd3646a62af901a4409e7cb3d7f39f58ab9b
Author: Joerg Roedel <joerg.roedel@amd.com>
Date:   Mon Jun 6 16:04:02 2011 +0200

    x86/amd-iommu: Fix 3 possible endless loops
    
    commit 0de66d5b35ee148455e268b2782873204ffdef4b upstream.
    
    The driver contains several loops counting on an u16 value
    where the exit-condition is checked against variables that
    can have values up to 0xffff. In this case the loops will
    never exit. This patch fixed 3 such loops.
    
    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 51a2520ca82d8a02baaef9f16610eceb8f85a283
Author: Joerg Roedel <joerg.roedel@amd.com>
Date:   Mon May 30 15:56:24 2011 +0200

    x86/amd-iommu: Use only per-device dma_ops
    
    commit 27c2127a15d340706c0aa84e311188a14468d841 upstream.
    
    Unfortunatly there are systems where the AMD IOMMU does not
    cover all devices. This breaks with the current driver as it
    initializes the global dma_ops variable. This patch limits
    the AMD IOMMU to the devices listed in the IVRS table fixing
    DMA for devices not covered by the IOMMU.
    
    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit a5815ca6823ec525df5669843bcec04fead80671
Author: Dan Carpenter <error27@gmail.com>
Date:   Fri Jun 3 07:45:28 2011 +0300

    xen: off by one errors in multicalls.c
    
    commit f124c6ae59e193705c9ddac57684d50006d710e6 upstream.
    
    b->args[] has MC_ARGS elements, so the comparison here should be
    ">=" instead of ">".  Otherwise we read past the end of the array
    one space.
    
    Signed-off-by: Dan Carpenter <error27@gmail.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit ea41e016bb84023920e2395888ce04b970c5b17a
Author: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
Date:   Tue May 31 19:38:07 2011 +0900

    fat: Fix corrupt inode flags when remove ATTR_SYS flag
    
    commit 1adffbae22332bb558c2a29de19d9aca391869f6 upstream.
    
    We are clearly missing '~' in fat_ioctl_set_attributes().
    
    Reported-by: Dmitry Dmitriev <dimondmm@yandex.ru>
    Signed-off-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 127b00c8c20c133b9efc320379e9031570adbdbe
Author: Daniel Haid <d.haid@gogi.tv>
Date:   Wed Jun 8 20:04:45 2011 +1000

    drm/radeon/kms: fix for radeon on systems >4GB without hardware iommu
    
    commit 62fff811d73095bd95579d72f558f03c78f7914a upstream.
    
    On my x86_64 system with >4GB of ram and swiotlb instead of
    a hardware iommu (because I have a VIA chipset), the call
    to pci_set_dma_mask (see below) with 40bits returns an error.
    
    But it seems that the radeon driver is designed to have
    need_dma32 = true exactly if pci_set_dma_mask is called
    with 32 bits and false if it is called with 40 bits.
    
    I have read somewhere that the default are 32 bits. So if the
    call fails I suppose that need_dma32 should be set to true.
    
    And indeed the patch fixes the problem I have had before
    and which I had described here:
    http://choon.net/forum/read.php?21,106131,115940
    
    Acked-by: Alex Deucher <alexdeucher@gmail.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 9b8422d7d1fb7f85e79a6aad4eb2b719a08faa09
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sat Jun 4 15:39:21 2011 +0200

    drm/i915: Add a no lvds quirk for the Asus EeeBox PC EB1007
    
    commit 6a574b5b9b186e28abd3e571dfd1700c5220b510 upstream.
    
    I found this while figuring out why gnome-shell would not run on my
    Asus EeeBox PC EB1007. As a standalone "pc" this device cleary does not have
    an internal panel, yet it claims it does. Add a quirk to fix this.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Keith Packard <keithp@keithp.com>
    Signed-off-by: Keith Packard <keithp@keithp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 904b61178e165b531ea656c200719d2e585d313d
Author: Peter Zijlstra <a.p.zijlstra@chello.nl>
Date:   Mon Jun 6 12:32:43 2011 +0200

    lockdep: Fix lock_is_held() on recursion
    
    commit f2513cde93f0957d5dc6c09bc24b0cccd27d8e1d upstream.
    
    The main lock_is_held() user is lockdep_assert_held(), avoid false
    assertions in lockdep_off() sections by unconditionally reporting the
    lock is taken.
    
    [ the reason this is important is a lockdep_assert_held() in ttwu()
      which triggers a warning under lockdep_off() as in printk() which
      can trigger another wakeup and lock up due to spinlock
      recursion, as reported and heroically debugged by Arne Jansen ]
    
    Reported-and-tested-by: Arne Jansen <lists@die-jansens.de>
    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Link: http://lkml.kernel.org/r/1307398759.2497.966.camel@laptop
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 45c40b629e8bef5127c8d4e4575a9bcabcbf2125
Author: Luciano Coelho <coelho@ti.com>
Date:   Thu May 19 00:43:38 2011 +0300

    nl80211: fix check for valid SSID size in scan operations
    
    commit 208c72f4fe44fe09577e7975ba0e7fa0278f3d03 upstream.
    
    In both trigger_scan and sched_scan operations, we were checking for
    the SSID length before assigning the value correctly.  Since the
    memory was just kzalloc'ed, the check was always failing and SSID with
    over 32 characters were allowed to go through.
    
    This was causing a buffer overflow when copying the actual SSID to the
    proper place.
    
    This bug has been there since 2.6.29-rc4.
    
    Signed-off-by: Luciano Coelho <coelho@ti.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit f7dc0fb69f5041ddc35f505ac21fa2a77648be77
Author: Jordan_Hargrave@Dell.com <Jordan_Hargrave@Dell.com>
Date:   Mon May 9 15:24:55 2011 -0500

    PCI: Set PCIE maxpayload for card during hotplug insertion
    
    commit e522a7126c7c144a1dd14c6f217ac31e71082b1d upstream.
    
    The following patch sets the MaxPayload setting to match the parent
    reading when inserting a PCIE card into a hotplug slot.  On our system,
    the upstream bridge is set to 256, but when inserting a card, the card
    setting defaults to 128.  As soon as I/O is performed to the card it
    starts receiving errors since the payload size is too small.
    
    Reviewed-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
    Signed-off-by: Jordan Hargrave <jordan_hargrave@dell.com>
    Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 96716ea2f66e763fdedece78e0a2229b9f36bbee
Author: Hugh Dickins <hughd@google.com>
Date:   Sun Jun 5 22:03:13 2011 -0700

    mm: fix ENOSPC returned by handle_mm_fault()
    
    commit e0dcd8a05be438b3d2e49ef61441ea3a463663f8 upstream.
    
    Al Viro observes that in the hugetlb case, handle_mm_fault() may return
    a value of the kind ENOSPC when its caller is expecting a value of the
    kind VM_FAULT_SIGBUS: fix alloc_huge_page()'s failure returns.
    
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Acked-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 1a32d86b9e73db139ecda70c98c28d840fd04211
Author: Rajkumar Manoharan <rmanoharan@atheros.com>
Date:   Fri May 20 17:52:14 2011 +0530

    ath9k: set 40 Mhz rate only if hw is configured in ht40
    
    commit 41e2b05b9598d6bdf91fc20280bfc538d853f769 upstream.
    
    Whenever there is a channel width change from 40 Mhz to 20 Mhz,
    the hardware is reconfigured to ht20. Meantime before doing
    the rate control updation, the packets are being transmitted are
    selected rate with IEEE80211_TX_RC_40_MHZ_WIDTH.
    
    While transmitting ht40 rate packets in ht20 mode is causing
    baseband panic with AR9003 based chips.
    
    ==== BB update: BB status=0x02001109 ====
    ath: ** BB state: wd=1 det=1 rdar=0 rOFDM=1 rCCK=1 tOFDM=0 tCCK=0 agc=2
    src=0 **
    ath: ** BB WD cntl: cntl1=0xffff0085 cntl2=0x00000004 **
    ath: ** BB mode: BB_gen_controls=0x000033c0 **
    ath: ** BB busy times: rx_clear=99%, rx_frame=0%, tx_frame=0% **
    ath: ==== BB update: done ====
    
    Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit c2c9073744f36963c052aa02a453ba347600d95f
Author: James Bottomley <James.Bottomley@HansenPartnership.com>
Date:   Wed May 25 15:52:14 2011 -0500

    Fix oops caused by queue refcounting failure
    
    commit e73e079bf128d68284efedeba1fbbc18d78610f9 upstream.
    
    In certain circumstances, we can get an oops from a torn down device.
    Most notably this is from CD roms trying to call scsi_ioctl.  The root
    cause of the problem is the fact that after scsi_remove_device() has
    been called, the queue is fully torn down.  This is actually wrong
    since the queue can be used until the sdev release function is called.
    Therefore, we add an extra reference to the queue which is released in
    sdev->release, so the queue always exists.
    
    Reported-by: Parag Warudkar <parag.lkml@gmail.com>
    Signed-off-by: James Bottomley <jbottomley@parallels.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit cf47f01340dbb07e6e2f124bf5602b91b953227c
Author: Jens Axboe <jaxboe@fusionio.com>
Date:   Fri May 27 07:44:43 2011 +0200

    block: export blk_{get,put}_queue()
    
    commit d86e0e83b32bc84600adb0b6ea1fce389b266682 upstream.
    
    We need them in SCSI to fix a bug, but currently they are not
    exported to modules. Export them.
    
    Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 305a7c53d165fd7b56810e56ffefd76c8a1753e7
Author: Namhyung Kim <namhyung@gmail.com>
Date:   Sat May 28 14:44:46 2011 +0200

    nbd: limit module parameters to a sane value
    
    commit 3b2710824e00d238554c13b5add347e6c701ab1a upstream.
    
    The 'max_part' parameter controls the number of maximum partition
    a nbd device can have. However if a user specifies very large
    value it would exceed the limitation of device minor number and
    can cause a kernel oops (or, at least, produce invalid device
    nodes in some cases).
    
    In addition, specifying large 'nbds_max' value causes same
    problem for the same reason.
    
    On my desktop, following command results to the kernel bug:
    
    $ sudo modprobe nbd max_part=100000
     kernel BUG at /media/Linux_Data/project/linux/fs/sysfs/group.c:65!
     invalid opcode: 0000 [#1] SMP
     last sysfs file: /sys/devices/virtual/block/nbd4/range
     CPU 1
     Modules linked in: nbd(+) bridge stp llc kvm_intel kvm asus_atk0110 sg sr_mod cdrom
    
     Pid: 2522, comm: modprobe Tainted: G        W   2.6.39-leonard+ #159 System manufacturer System Product Name/P5G41TD-M PRO
     RIP: 0010:[<ffffffff8115aa08>]  [<ffffffff8115aa08>] internal_create_group+0x2f/0x166
     RSP: 0018:ffff8801009f1de8  EFLAGS: 00010246
     RAX: 00000000ffffffef RBX: ffff880103920478 RCX: 00000000000a7bd3
     RDX: ffffffff81a2dbe0 RSI: 0000000000000000 RDI: ffff880103920478
     RBP: ffff8801009f1e38 R08: ffff880103920468 R09: ffff880103920478
     R10: ffff8801009f1de8 R11: ffff88011eccbb68 R12: ffffffff81a2dbe0
     R13: ffff880103920468 R14: 0000000000000000 R15: ffff880103920400
     FS:  00007f3c49de9700(0000) GS:ffff88011f800000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
     CR2: 00007f3b7fe7c000 CR3: 00000000cd58d000 CR4: 00000000000406e0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
     Process modprobe (pid: 2522, threadinfo ffff8801009f0000, task ffff8801009a93a0)
     Stack:
      ffff8801009f1e58 ffffffff812e8f6e ffff8801009f1e58 ffffffff812e7a80
      ffff880000000010 ffff880103920400 ffff8801002fd0c0 ffff880103920468
      0000000000000011 ffff880103920400 ffff8801009f1e48 ffffffff8115ab6a
     Call Trace:
      [<ffffffff812e8f6e>] ? device_add+0x4f1/0x5e4
      [<ffffffff812e7a80>] ? dev_set_name+0x41/0x43
      [<ffffffff8115ab6a>] sysfs_create_group+0x13/0x15
      [<ffffffff810b857e>] blk_trace_init_sysfs+0x14/0x16
      [<ffffffff811ee58b>] blk_register_queue+0x4c/0xfd
      [<ffffffff811f3bdf>] add_disk+0xe4/0x29c
      [<ffffffffa007e2ab>] nbd_init+0x2ab/0x30d [nbd]
      [<ffffffffa007e000>] ? 0xffffffffa007dfff
      [<ffffffff8100020f>] do_one_initcall+0x7f/0x13e
      [<ffffffff8107ab0a>] sys_init_module+0xa1/0x1e3
      [<ffffffff814f3542>] system_call_fastpath+0x16/0x1b
     Code: 41 57 41 56 41 55 41 54 53 48 83 ec 28 0f 1f 44 00 00 48 89 fb 41 89 f6 49 89 d4 48 85 ff 74 0b 85 f6 75 0b 48 83
      7f 30 00 75 14 <0f> 0b eb fe b9 ea ff ff ff 48 83 7f 30 00 0f 84 09 01 00 00 49
     RIP  [<ffffffff8115aa08>] internal_create_group+0x2f/0x166
      RSP <ffff8801009f1de8>
     ---[ end trace 753285ffbf72c57c ]---
    
    Signed-off-by: Namhyung Kim <namhyung@gmail.com>
    Cc: Laurent Vivier <Laurent.Vivier@bull.net>
    Cc: Paul Clements <Paul.Clements@steeleye.com>
    Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit a52a4d7a57a4e83ed6cdc1b11bd5c8f1b5c8c86b
Author: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Date:   Tue May 31 08:40:40 2011 +0300

    UBIFS: fix memory leak on error path
    
    commit 812eb258311f89bcd664a34a620f249d54a2cd83 upstream.
    
    UBIFS leaks memory on error path in 'ubifs_jnl_update()' in case of write
    failure because it forgets to free the 'struct ubifs_dent_node *dent' object.
    Although the object is small, the alignment can make it large - e.g., 2KiB
    if the min. I/O unit is 2KiB.
    
    Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 382dfc31decd37188883fd659cad25e6a8dc0895
Author: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Date:   Tue May 31 07:03:21 2011 +0300

    UBIFS: fix shrinker object count reports
    
    commit cf610bf4199770420629d3bc273494bd27ad6c1d upstream.
    
    Sometimes VM asks the shrinker to return amount of objects it can shrink,
    and we return the ubifs_clean_zn_cnt in that case. However, it is possible
    that this counter is negative for a short period of time, due to the way
    UBIFS TNC code updates it. And I can observe the following warnings sometimes:
    
    shrink_slab: ubifs_shrinker+0x0/0x2b7 [ubifs] negative objects to delete nr=-8541616642706119788
    
    This patch makes sure UBIFS never returns negative count of objects.
    
    Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 0b5adb1a665d63a7da60a2b0b15df9a7e7ca5d1c
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Feb 12 12:13:55 2010 -0500

    fix duplicate removal on error path in scsi_sysfs_add_sdev
    
    commit ee37e09d81a4acf328f68189af12f116401f8c0f upstream.
    
    This patch (as1335) fixes a bug in scsi_sysfs_add_sdev().  Its callers
    always remove the device if anything goes wrong, so it should never
    remove the device.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: James Bottomley <James.Bottomley@suse.de>
    Cc: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 2e4abe551532e10ebb19b7dc18de69ca1ea66ef7
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Feb 12 12:13:39 2010 -0500

    fix refcounting bug in scsi_get_host_dev
    
    commit d5469119f0098881ab7f991990ef4f81ef13a194 upstream.
    
    This patch (as1334) fixes a bug in scsi_get_host_dev().  It
    incorrectly calls get_device() on the new device's target.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: James Bottomley <James.Bottomley@suse.de>
    Cc: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 578aa9eecba99df4190c9cdb11fe7b7f410b7745
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Feb 12 12:13:31 2010 -0500

    fix memory leak in scsi_report_lun_scan
    
    commit 75f8ee8e01a6c96652f27da40d4bdac9e2e485f0 upstream.
    
    This patch (as1333) fixes a bug in scsi_report_lun_scan().  If a
    newly-allocated device can't be used, it should be deleted.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: James Bottomley <James.Bottomley@suse.de>
    Cc: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 83d9a80c2be562d1d98e79f34f89e92192a40ced
Author: Patrick McHardy <kaber@trash.net>
Date:   Fri Feb 19 18:18:37 2010 +0100

    netfilter: nf_conntrack_reasm: properly handle packets fragmented into a single fragment
    
    commit 9e2dcf72023d1447f09c47d77c99b0c49659e5ce upstream.
    
    When an ICMPV6_PKT_TOOBIG message is received with a MTU below 1280,
    all further packets include a fragment header.
    
    Unlike regular defragmentation, conntrack also needs to "reassemble"
    those fragments in order to obtain a packet without the fragment
    header for connection tracking. Currently nf_conntrack_reasm checks
    whether a fragment has either IP6_MF set or an offset != 0, which
    makes it ignore those fragments.
    
    Remove the invalid check and make reassembly handle fragment queues
    containing only a single fragment.
    
    Reported-and-tested-by: Ulrich Weber <uweber@astaro.com>
    Signed-off-by: Patrick McHardy <kaber@trash.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 1d9ddb5571e58141e05a23301253a26de7adfa0b
Author: Tian, Kevin <kevin.tian@intel.com>
Date:   Thu May 12 10:56:08 2011 +0800

    xen mmu: fix a race window causing leave_mm BUG()
    
    commit 7899891c7d161752f29abcc9bc0a9c6c3a3af26c upstream.
    
    There's a race window in xen_drop_mm_ref, where remote cpu may exit
    dirty bitmap between the check on this cpu and the point where remote
    cpu handles drop request. So in drop_other_mm_ref we need check
    whether TLB state is still lazy before calling into leave_mm. This
    bug is rarely observed in earlier kernel, but exaggerated by the
    commit 831d52bc153971b70e64eccfbed2b232394f22f8
    ("x86, mm: avoid possible bogus tlb entries by clearing prev mm_cpumask after switching mm")
    which clears bitmap after changing the TLB state. the call trace is as below:
    
    ---------------------------------
    kernel BUG at arch/x86/mm/tlb.c:61!
    invalid opcode: 0000 [#1] SMP
    last sysfs file: /sys/devices/system/xen_memory/xen_memory0/info/current_kb
    CPU 1
    Modules linked in: 8021q garp xen_netback xen_blkback blktap blkback_pagemap nbd bridge stp llc autofs4 ipmi_devintf ipmi_si ipmi_msghandler lockd sunrpc bonding ipv6 xenfs dm_multipath video output sbs sbshc parport_pc lp parport ses enclosure snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device serio_raw bnx2 snd_pcm_oss snd_mixer_oss snd_pcm snd_timer iTCO_wdt snd soundcore snd_page_alloc i2c_i801 iTCO_vendor_support i2c_core pcs pkr pata_acpi ata_generic ata_piix shpchp mptsas mptscsih mptbase [last unloaded: freq_table]
    Pid: 25581, comm: khelper Not tainted 2.6.32.36fixxen #1 Tecal RH2285
    RIP: e030:[<ffffffff8103a3cb>]  [<ffffffff8103a3cb>] leave_mm+0x15/0x46
    RSP: e02b:ffff88002805be48  EFLAGS: 00010046
    RAX: 0000000000000000 RBX: 0000000000000001 RCX: ffff88015f8e2da0
    RDX: ffff88002805be78 RSI: 0000000000000000 RDI: 0000000000000001
    RBP: ffff88002805be48 R08: ffff88009d662000 R09: dead000000200200
    R10: dead000000100100 R11: ffffffff814472b2 R12: ffff88009bfc1880
    R13: ffff880028063020 R14: 00000000000004f6 R15: 0000000000000000
    FS:  00007f62362d66e0(0000) GS:ffff880028058000(0000) knlGS:0000000000000000
    CS:  e033 DS: 0000 ES: 0000 CR0: 000000008005003b
    CR2: 0000003aabc11909 CR3: 000000009b8ca000 CR4: 0000000000002660
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 00000000000000 00
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Process khelper (pid: 25581, threadinfo ffff88007691e000, task ffff88009b92db40)
    Stack:
     ffff88002805be68 ffffffff8100e4ae 0000000000000001 ffff88009d733b88
    <0> ffff88002805be98 ffffffff81087224 ffff88002805be78 ffff88002805be78
    <0> ffff88015f808360 00000000000004f6 ffff88002805bea8 ffffffff81010108
    Call Trace:
     <IRQ>
     [<ffffffff8100e4ae>] drop_other_mm_ref+0x2a/0x53
     [<ffffffff81087224>] generic_smp_call_function_single_interrupt+0xd8/0xfc
     [<ffffffff81010108>] xen_call_function_single_interrupt+0x13/0x28
     [<ffffffff810a936a>] handle_IRQ_event+0x66/0x120
     [<ffffffff810aac5b>] handle_percpu_irq+0x41/0x6e
     [<ffffffff8128c1c0>] __xen_evtchn_do_upcall+0x1ab/0x27d
     [<ffffffff8128dd11>] xen_evtchn_do_upcall+0x33/0x46
     [<ffffffff81013efe>] xen_do_hyper visor_callback+0x1e/0x30
     <EOI>
     [<ffffffff814472b2>] ? _spin_unlock_irqrestore+0x15/0x17
     [<ffffffff8100f8cf>] ? xen_restore_fl_direct_end+0x0/0x1
     [<ffffffff81113f71>] ? flush_old_exec+0x3ac/0x500
     [<ffffffff81150dc5>] ? load_elf_binary+0x0/0x17ef
     [<ffffffff81150dc5>] ? load_elf_binary+0x0/0x17ef
     [<ffffffff8115115d>] ? load_elf_binary+0x398/0x17ef
     [<ffffffff81042fcf>] ? need_resched+0x23/0x2d
     [<ffffffff811f4648>] ? process_measurement+0xc0/0xd7
     [<ffffffff81150dc5>] ? load_elf_binary+0x0/0x17ef
     [<ffffffff81113094>] ? search_binary_handler+0xc8/0x255
     [<ffffffff81114362>] ? do_execve+0x1c3/0x29e
     [<ffffffff8101155d>] ? sys_execve+0x43/0x5d
     [<ffffffff8106fc45>] ? __call_usermodehelper+0x0/0x6f
     [<ffffffff81013e28>] ? kernel_execve+0x68/0xd0
     [<ffffffff 8106fc45>] ? __call_usermodehelper+0x0/0x6f
     [<ffffffff8100f8cf>] ? xen_restore_fl_direct_end+0x0/0x1
     [<ffffffff8106fb64>] ? ____call_usermodehelper+0x113/0x11e
     [<ffffffff81013daa>] ? child_rip+0xa/0x20
     [<ffffffff8106fc45>] ? __call_usermodehelper+0x0/0x6f
     [<ffffffff81012f91>] ? int_ret_from_sys_call+0x7/0x1b
     [<ffffffff8101371d>] ? retint_restore_args+0x5/0x6
     [<ffffffff81013da0>] ? child_rip+0x0/0x20
    Code: 41 5e 41 5f c9 c3 55 48 89 e5 0f 1f 44 00 00 e8 17 ff ff ff c9 c3 55 48 89 e5 0f 1f 44 00 00 65 8b 04 25 c8 55 01 00 ff c8 75 04 <0f> 0b eb fe 65 48 8b 34 25 c0 55 01 00 48 81 c6 b8 02 00 00 e8
    RIP  [<ffffffff8103a3cb>] leave_mm+0x15/0x46
     RSP <ffff88002805be48>
    ---[ end trace ce9cee6832a9c503 ]---
    
    Tested-by: Maoxiaoyun<tinnycloud@hotmail.com>
    Signed-off-by: Kevin Tian <kevin.tian@intel.com>
    [v1: Fleshed out the git description a bit]
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit d4ab3dedc3be1a033420de9daf03056f949c4e51
Author: Hemant Pedanekar <hemantp@ti.com>
Date:   Tue Apr 5 12:32:50 2011 +0530

    PCI: Add quirk for setting valid class for TI816X Endpoint
    
    commit 63c4408074cbcc070ac17fc10e524800eb9bd0b0 upstream.
    
    TI816X (common name for DM816x/C6A816x/AM389x family) devices configured
    to boot as PCIe Endpoint have class code = 0. This makes kernel PCI bus
    code to skip allocating BARs to these devices resulting into following
    type of error when trying to enable them:
    
    "Device 0000:01:00.0 not available because of resource collisions"
    
    The device cannot be operated because of the above issue.
    
    This patch adds a ID specific (TI VENDOR ID and 816X DEVICE ID based)
    'early' fixup quirk to replace class code with
    PCI_CLASS_MULTIMEDIA_VIDEO as class.
    
    Signed-off-by: Hemant Pedanekar <hemantp@ti.com>
    Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 6946d36406192854c9c8a963f8393de80d3aeb96
Author: Trond Myklebust <Trond.Myklebust@netapp.com>
Date:   Fri Mar 18 20:21:23 2011 -0400

    SUNRPC: Deal with the lack of a SYN_SENT sk->sk_state_change callback...
    
    commit fe19a96b10032035a35779f42ad59e35d6dd8ffd upstream.
    
    The TCP connection state code depends on the state_change() callback
    being called when the SYN_SENT state is set. However the networking layer
    doesn't actually call us back in that case.
    
    Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 5d7aa877b4877c948dd4e6e3ca3f39dfd284987b
Author: Namhyung Kim <namhyung@gmail.com>
Date:   Thu May 26 21:06:50 2011 +0200

    brd: handle on-demand devices correctly
    
    commit af46566885a373b0a526932484cd8fef8de7b598 upstream.
    
    When finding or allocating a ram disk device, brd_probe() did not take
    partition numbers into account so that it can result to a different
    device. Consider following example (I set CONFIG_BLK_DEV_RAM_COUNT=4
    for simplicity) :
    
    $ sudo modprobe brd max_part=15
    $ ls -l /dev/ram*
    brw-rw---- 1 root disk 1,  0 2011-05-25 15:41 /dev/ram0
    brw-rw---- 1 root disk 1, 16 2011-05-25 15:41 /dev/ram1
    brw-rw---- 1 root disk 1, 32 2011-05-25 15:41 /dev/ram2
    brw-rw---- 1 root disk 1, 48 2011-05-25 15:41 /dev/ram3
    $ sudo mknod /dev/ram4 b 1 64
    $ sudo dd if=/dev/zero of=/dev/ram4 bs=4k count=256
    256+0 records in
    256+0 records out
    1048576 bytes (1.0 MB) copied, 0.00215578 s, 486 MB/s
    namhyung@leonhard:linux$ ls -l /dev/ram*
    brw-rw---- 1 root disk 1,    0 2011-05-25 15:41 /dev/ram0
    brw-rw---- 1 root disk 1,   16 2011-05-25 15:41 /dev/ram1
    brw-rw---- 1 root disk 1,   32 2011-05-25 15:41 /dev/ram2
    brw-rw---- 1 root disk 1,   48 2011-05-25 15:41 /dev/ram3
    brw-r--r-- 1 root root 1,   64 2011-05-25 15:45 /dev/ram4
    brw-rw---- 1 root disk 1, 1024 2011-05-25 15:44 /dev/ram64
    
    After this patch, /dev/ram4 - instead of /dev/ram64 - was
    accessed correctly.
    
    In addition, 'range' passed to blk_register_region() should
    include all range of dev_t that RAMDISK_MAJOR can address.
    It does not need to be limited by partition numbers unless
    'rd_nr' param was specified.
    
    Signed-off-by: Namhyung Kim <namhyung@gmail.com>
    Cc: Laurent Vivier <Laurent.Vivier@bull.net>
    Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit f199d656ad83d1d943d738715d9a9e7dec003aa3
Author: Namhyung Kim <namhyung@gmail.com>
Date:   Thu May 26 21:06:50 2011 +0200

    brd: limit 'max_part' module param to DISK_MAX_PARTS
    
    commit 315980c8688c4b06713c1a5fe9d64cdf8ab57a72 upstream.
    
    The 'max_part' parameter controls the number of maximum partition
    a brd device can have. However if a user specifies very large
    value it would exceed the limitation of device minor number and
    can cause a kernel panic (or, at least, produce invalid device
    nodes in some cases).
    
    On my desktop system, following command kills the kernel. On qemu,
    it triggers similar oops but the kernel was alive:
    
    $ sudo modprobe brd max_part=100000
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000058
     IP: [<ffffffff81110a9a>] sysfs_create_dir+0x2d/0xae
     PGD 7af1067 PUD 7b19067 PMD 0
     Oops: 0000 [#1] SMP
     last sysfs file:
     CPU 0
     Modules linked in: brd(+)
    
     Pid: 44, comm: insmod Tainted: G        W   2.6.39-qemu+ #158 Bochs Bochs
     RIP: 0010:[<ffffffff81110a9a>]  [<ffffffff81110a9a>] sysfs_create_dir+0x2d/0xae
     RSP: 0018:ffff880007b15d78  EFLAGS: 00000286
     RAX: ffff880007b05478 RBX: ffff880007a52760 RCX: ffff880007b15dc8
     RDX: ffff880007a4f900 RSI: ffff880007b15e48 RDI: ffff880007a52760
     RBP: ffff880007b15da8 R08: 0000000000000002 R09: 0000000000000000
     R10: ffff880007b15e48 R11: ffff880007b05478 R12: 0000000000000000
     R13: ffff880007b05478 R14: 0000000000400920 R15: 0000000000000063
     FS:  0000000002160880(0063) GS:ffff880007c00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000058 CR3: 0000000007b1c000 CR4: 00000000000006b0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 0000000000000000 DR7: 0000000000000000
     Process insmod (pid: 44, threadinfo ffff880007b14000, task ffff880007acb980)
     Stack:
      ffff880007b15dc8 ffff880007b05478 ffff880007b15da8 00000000fffffffe
      ffff880007a52760 ffff880007b05478 ffff880007b15de8 ffffffff81143c0a
      0000000000400920 ffff880007a52760 ffff880007b05478 0000000000000000
     Call Trace:
      [<ffffffff81143c0a>] kobject_add_internal+0xdf/0x1a0
      [<ffffffff81143da1>] kobject_add_varg+0x41/0x50
      [<ffffffff81143e6b>] kobject_add+0x64/0x66
      [<ffffffff8113bbe7>] blk_register_queue+0x5f/0xb8
      [<ffffffff81140f72>] add_disk+0xdf/0x289
      [<ffffffffa00040df>] brd_init+0xdf/0x1aa [brd]
      [<ffffffffa0004000>] ? 0xffffffffa0003fff
      [<ffffffffa0004000>] ? 0xffffffffa0003fff
      [<ffffffff8100020a>] do_one_initcall+0x7a/0x12e
      [<ffffffff8108516c>] sys_init_module+0x9c/0x1dc
      [<ffffffff812ff4bb>] system_call_fastpath+0x16/0x1b
     Code: 89 e5 41 55 41 54 53 48 89 fb 48 83 ec 18 48 85 ff 75 04 0f 0b eb fe 48 8b 47 18 49 c7 c4 70 1e 4d 81 48 85 c0 74 04 4c 8b 60 30
      8b 44 24 58 45 31 ed 0f b6 c4 85 c0 74 0d 48 8b 43 28 48 89
     RIP  [<ffffffff81110a9a>] sysfs_create_dir+0x2d/0xae
      RSP <ffff880007b15d78>
     CR2: 0000000000000058
     ---[ end trace aebb1175ce1f6739 ]---
    
    Signed-off-by: Namhyung Kim <namhyung@gmail.com>
    Cc: Laurent Vivier <Laurent.Vivier@bull.net>
    Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit ada6c5d2e4037b86af104904f04bbd5ea67b7fc2
Author: Dan Williams <dcbw@redhat.com>
Date:   Fri May 27 04:51:54 2011 +0000

    atm: expose ATM device index in sysfs
    
    commit e7a46b4d0839c2a3aa2e0ae0b145f293f6738498 upstream.
    
    It's currently exposed only through /proc which, besides requiring
    screen-scraping, doesn't allow userspace to distinguish between two
    identical ATM adapters with different ATM indexes.  The ATM device index
    is required when using PPPoATM on a system with multiple ATM adapters.
    
    Signed-off-by: Dan Williams <dcbw@redhat.com>
    Reviewed-by: Eric Dumazet <eric.dumazet@gmail.com>
    Tested-by: David Woodhouse <dwmw2@infradead.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 2ded2825ecc319281b95aaed836065321c1d9e86
Author: Will Deacon <will.deacon@arm.com>
Date:   Thu May 26 11:20:19 2011 +0100

    ARM: 6941/1: cache: ensure MVA is cacheline aligned in flush_kern_dcache_area
    
    commit a248b13b21ae00b97638b4f435c8df3075808b5d upstream.
    
    The v6 and v7 implementations of flush_kern_dcache_area do not align
    the passed MVA to the size of a cacheline in the data cache. If a
    misaligned address is used, only a subset of the requested area will
    be flushed. This has been observed to cause failures in SMP boot where
    the secondary_data initialised by the primary CPU is not cacheline
    aligned, causing the secondary CPUs to read incorrect values for their
    pgd and stack pointers.
    
    This patch ensures that the base address is cacheline aligned before
    flushing the d-cache.
    
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 3d0253f6fe0dca218aa24a2aa8d45634cf20f832
Author: Milan Broz <mbroz@redhat.com>
Date:   Sun May 29 13:02:52 2011 +0100

    dm table: reject devices without request fns
    
    commit f4808ca99a203f20b4475601748e44b25a65bdec upstream.
    
    This patch adds a check that a block device has a request function
    defined before it is used.  Otherwise, misconfiguration can cause an oops.
    
    Because we are allowing devices with zero size e.g. an offline multipath
    device as in commit 2cd54d9bedb79a97f014e86c0da393416b264eb3
    ("dm: allow offline devices") there needs to be an additional check
    to ensure devices are initialised.  Some block devices, like a loop
    device without a backing file, exist but have no request function.
    
    Reproducer is trivial: dm-mirror on unbound loop device
    (no backing file on loop devices)
    
    dmsetup create x --table "0 8 mirror core 2 8 sync 2 /dev/loop0 0 /dev/loop1 0"
    
    and mirror resync will immediatelly cause OOps.
    
    BUG: unable to handle kernel NULL pointer dereference at   (null)
     ? generic_make_request+0x2bd/0x590
     ? kmem_cache_alloc+0xad/0x190
     submit_bio+0x53/0xe0
     ? bio_add_page+0x3b/0x50
     dispatch_io+0x1ca/0x210 [dm_mod]
     ? read_callback+0x0/0xd0 [dm_mirror]
     dm_io+0xbb/0x290 [dm_mod]
     do_mirror+0x1e0/0x748 [dm_mirror]
    
    Signed-off-by: Milan Broz <mbroz@redhat.com>
    Reported-by: Zdenek Kabelac <zkabelac@redhat.com>
    Acked-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Alasdair G Kergon <agk@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 72e2a04ee1cc16796644452d31213cd0163dd37f
Author: Tero Kristo <tero.kristo@nokia.com>
Date:   Thu Feb 24 17:19:23 2011 +0200

    cpuidle: menu: fixed wrapping timers at 4.294 seconds
    
    commit 7467571f4480b273007517b26297c07154c73924 upstream.
    
    Cpuidle menu governor is using u32 as a temporary datatype for storing
    nanosecond values which wrap around at 4.294 seconds. This causes errors
    in predicted sleep times resulting in higher than should be C state
    selection and increased power consumption. This also breaks cpuidle
    state residency statistics.
    
    Signed-off-by: Tero Kristo <tero.kristo@nokia.com>
    Signed-off-by: Len Brown <len.brown@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 7407c21c763cc40b1ec8da35a56c872ecd36f35b
Author: Luca Tettamanti <kronos.it@gmail.com>
Date:   Wed May 25 20:43:31 2011 +0200

    i8k: Avoid lahf in 64-bit code
    
    commit bc1f419c76a2d6450413ce4349f4e4a07be011d5 upstream.
    
    i8k uses lahf to read the flag register in 64-bit code; early x86-64
    CPUs, however, lack this instruction and we get an invalid opcode
    exception at runtime.
    Use pushf to load the flag register into the stack instead.
    
    Signed-off-by: Luca Tettamanti <kronos.it@gmail.com>
    Reported-by: Jeff Rickman <jrickman@myamigos.us>
    Tested-by: Jeff Rickman <jrickman@myamigos.us>
    Tested-by: Harry G McGavran Jr <w5pny@arrl.net>
    Cc: Massimo Dal Zotto <dz@debian.org>
    Signed-off-by: Jean Delvare <khali@linux-fr.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 2776f63f585549c582b34db8e0b9688caead22ef
Author: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Date:   Fri May 6 17:08:56 2011 +0300

    UBIFS: fix a rare memory leak in ro to rw remounting path
    
    commit eaeee242c531cd4b0a4a46e8b5dd7ef504380c42 upstream.
    
    When re-mounting from R/O mode to R/W mode and the LEB count in the superblock
    is not up-to date, because for the underlying UBI volume became larger, we
    re-write the superblock. We allocate RAM for these purposes, but never free it.
    So this is a memory leak, although very rare one.
    
    Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 6914392c7e7f4af69b2685babdbbe2c33f1a3e2a
Author: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
Date:   Tue May 17 00:50:33 2011 -0500

    eCryptfs: Allow 2 scatterlist entries for encrypted filenames
    
    commit 8d08dab786ad5cc2aca2bf870de370144b78c85a upstream.
    
    The buffers allocated while encrypting and decrypting long filenames can
    sometimes straddle two pages. In this situation, virt_to_scatterlist()
    will return -ENOMEM, causing the operation to fail and the user will get
    scary error messages in their logs:
    
    kernel: ecryptfs_write_tag_70_packet: Internal error whilst attempting
    to convert filename memory to scatterlist; expected rc = 1; got rc =
    [-12]. block_aligned_filename_size = [272]
    kernel: ecryptfs_encrypt_filename: Error attempting to generate tag 70
    packet; rc = [-12]
    kernel: ecryptfs_encrypt_and_encode_filename: Error attempting to
    encrypt filename; rc = [-12]
    kernel: ecryptfs_lookup: Error attempting to encrypt and encode
    filename; rc = [-12]
    
    The solution is to allow up to 2 scatterlist entries to be used.
    
    Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 7f93eb0f04805f5de96fce7a71901d1c32ca7c2b
Author: Christian Lamparter <chunkeey@googlemail.com>
Date:   Fri May 13 21:47:23 2011 +0200

    p54usb: add zoom 4410 usbid
    
    commit 9368a9a2378ab721f82f59430a135b4ce4ff5109 upstream.
    
    Reported-by: Mark Davis <marked86@gmail.com>
    Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit b9cd8c6bd0e848969c9465fd8dc349b99bd6a93c
Author: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Date:   Fri May 13 13:10:01 2011 -0700

    xhci: Fix full speed bInterval encoding.
    
    commit b513d44751bfb609a3c20463f764c8ce822d63e9 upstream.
    
    Dmitry's patch
    
    dfa49c4ad120a784ef1ff0717168aa79f55a483a USB: xhci - fix math in xhci_get_endpoint_interval()
    
    introduced a bug.  The USB 2.0 spec says that full speed isochronous endpoints'
    bInterval must be decoded as an exponent to a power of two (e.g. interval =
    2^(bInterval - 1)).  Full speed interrupt endpoints, on the other hand, don't
    use exponents, and the interval in frames is encoded straight into bInterval.
    
    Dmitry's patch was supposed to fix up the full speed isochronous to parse
    bInterval as an exponent, but instead it changed the *interrupt* endpoint
    bInterval decoding.  The isochronous endpoint encoding was the same.
    
    This caused full speed devices with interrupt endpoints (including mice, hubs,
    and USB to ethernet devices) to fail under NEC 0.96 xHCI host controllers:
    
    [  100.909818] xhci_hcd 0000:06:00.0: add ep 0x83, slot id 1, new drop flags = 0x0, new add flags = 0x99, new slot info = 0x38100000
    [  100.909821] xhci_hcd 0000:06:00.0: xhci_check_bandwidth called for udev ffff88011f0ea000
    ...
    [  100.910187] xhci_hcd 0000:06:00.0: ERROR: unexpected command completion code 0x11.
    [  100.910190] xhci_hcd 0000:06:00.0: xhci_reset_bandwidth called for udev ffff88011f0ea000
    
    When the interrupt endpoint was added and a Configure Endpoint command was
    issued to the host, the host controller would return a very odd error message
    (0x11 means "Slot Not Enabled", which isn't true because the slot was enabled).
    Probably the host controller was getting very confused with the bad encoding.
    
    Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Cc: Dmitry Torokhov <dtor@vmware.com>
    Reported-by: Thomas Lindroth <thomas.lindroth@gmail.com>
    Tested-by: Thomas Lindroth <thomas.lindroth@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit b6da1a90e96a4664f979409b1c2c004d7f5ba560
Author: Felipe Balbi <balbi@ti.com>
Date:   Fri May 13 16:53:48 2011 +0300

    usb: gadget: rndis: don't test against req->length
    
    commit 472b91274a6c6857877b5caddb875dcb5ecdfcb8 upstream.
    
    composite.c always sets req->length to zero
    and expects function driver's setup handlers
    to return the amount of bytes to be used
    on req->length. If we test against req->length
    w_length will always be greater than req->length
    thus making us always stall that particular
    SEND_ENCAPSULATED_COMMAND request.
    
    Tested against a Windows XP SP3.
    
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 33a5f119e6380490a1365303ffd461da7c46ad30
Author: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Date:   Fri May 13 17:03:02 2011 +0200

    usb/gadget: at91sam9g20 fix end point max packet size
    
    commit bf1f0a05d472e33dda8e5e69525be1584cdbd03a upstream.
    
    on 9g20 they are the same as the 9260
    
    Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
    Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 0f79283e0a98e63b91ade00640e1fd8eb16d6892
Author: Hermann Kneissel <herkne@gmx.de>
Date:   Fri Apr 29 08:58:43 2011 +0200

    USB: gamin_gps: Fix for data transfer problems in native mode
    
    commit b4026c4584cd70858d4d3450abfb1cd0714d4f32 upstream.
    
    This patch fixes a problem where data received from the gps is sometimes
    transferred incompletely to the serial port. If used in native mode now
    all data received via the bulk queue will be forwarded to the serial
    port.
    
    Signed-off-by: Hermann Kneissel <herkne@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit ae101d7603b2afc38742638117e1cb9cfcb6af27
Author: Benedek László <benedekl@gmail.com>
Date:   Wed Apr 20 03:22:21 2011 +0200

    USB: serial: ftdi_sio: adding support for TavIR STK500
    
    commit 37909fe588c9e09ab57cd267e98678a17ceda64a upstream.
    
    Adding support for the TavIR STK500 (id 0403:FA33)
    Atmel AVR programmer device based on FTDI FT232RL.
    
    Signed-off-by: Benedek László <benedekl@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 671d1ea673c094440a472228656c24bf1d3b96ef
Author: Elizabeth Jennifer Myers <elizabeth@sporksirc.net>
Date:   Sat Apr 16 14:49:51 2011 -0400

    USB: moto_modem: Add USB identifier for the Motorola VE240.
    
    commit 3938a0b32dc12229e76735679b37095bc2bc1578 upstream.
    
    Tested on my phone, the ttyUSB device is created and is fully
    functional.
    
    Signed-off-by: Elizabeth Jennifer Myers <elizabeth@sporksirc.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 25fb5a6ce726afd3e575d50bef62fbc492690562
Author: Namhyung Kim <namhyung@gmail.com>
Date:   Tue May 24 16:48:55 2011 +0200

    loop: handle on-demand devices correctly
    
    commit a1c15c59feee36267c43142a41152fbf7402afb6 upstream.
    
    When finding or allocating a loop device, loop_probe() did not take
    partition numbers into account so that it can result to a different
    device. Consider following example:
    
    $ sudo modprobe loop max_part=15
    $ ls -l /dev/loop*
    brw-rw---- 1 root disk 7,   0 2011-05-24 22:16 /dev/loop0
    brw-rw---- 1 root disk 7,  16 2011-05-24 22:16 /dev/loop1
    brw-rw---- 1 root disk 7,  32 2011-05-24 22:16 /dev/loop2
    brw-rw---- 1 root disk 7,  48 2011-05-24 22:16 /dev/loop3
    brw-rw---- 1 root disk 7,  64 2011-05-24 22:16 /dev/loop4
    brw-rw---- 1 root disk 7,  80 2011-05-24 22:16 /dev/loop5
    brw-rw---- 1 root disk 7,  96 2011-05-24 22:16 /dev/loop6
    brw-rw---- 1 root disk 7, 112 2011-05-24 22:16 /dev/loop7
    $ sudo mknod /dev/loop8 b 7 128
    $ sudo losetup /dev/loop8 ~/temp/disk-with-3-parts.img
    $ sudo losetup -a
    /dev/loop128: [0805]:278201 (/home/namhyung/temp/disk-with-3-parts.img)
    $ ls -l /dev/loop*
    brw-rw---- 1 root disk 7,    0 2011-05-24 22:16 /dev/loop0
    brw-rw---- 1 root disk 7,   16 2011-05-24 22:16 /dev/loop1
    brw-rw---- 1 root disk 7, 2048 2011-05-24 22:18 /dev/loop128
    brw-rw---- 1 root disk 7, 2049 2011-05-24 22:18 /dev/loop128p1
    brw-rw---- 1 root disk 7, 2050 2011-05-24 22:18 /dev/loop128p2
    brw-rw---- 1 root disk 7, 2051 2011-05-24 22:18 /dev/loop128p3
    brw-rw---- 1 root disk 7,   32 2011-05-24 22:16 /dev/loop2
    brw-rw---- 1 root disk 7,   48 2011-05-24 22:16 /dev/loop3
    brw-rw---- 1 root disk 7,   64 2011-05-24 22:16 /dev/loop4
    brw-rw---- 1 root disk 7,   80 2011-05-24 22:16 /dev/loop5
    brw-rw---- 1 root disk 7,   96 2011-05-24 22:16 /dev/loop6
    brw-rw---- 1 root disk 7,  112 2011-05-24 22:16 /dev/loop7
    brw-r--r-- 1 root root 7,  128 2011-05-24 22:17 /dev/loop8
    
    After this patch, /dev/loop8 - instead of /dev/loop128 - was
    accessed correctly.
    
    In addition, 'range' passed to blk_register_region() should
    include all range of dev_t that LOOP_MAJOR can address. It does
    not need to be limited by partition numbers unless 'max_loop'
    param was specified.
    
    Signed-off-by: Namhyung Kim <namhyung@gmail.com>
    Cc: Laurent Vivier <Laurent.Vivier@bull.net>
    Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 64be676c34af78db2b2b8af5ab34c402cedea913
Author: Namhyung Kim <namhyung@gmail.com>
Date:   Tue May 24 16:48:54 2011 +0200

    loop: limit 'max_part' module param to DISK_MAX_PARTS
    
    commit 78f4bb367fd147a0e7e3998ba6e47109999d8814 upstream.
    
    The 'max_part' parameter controls the number of maximum partition
    a loop block device can have. However if a user specifies very
    large value it would exceed the limitation of device minor number
    and can cause a kernel panic (or, at least, produce invalid
    device nodes in some cases).
    
    On my desktop system, following command kills the kernel. On qemu,
    it triggers similar oops but the kernel was alive:
    
    $ sudo modprobe loop max_part0000
     ------------[ cut here ]------------
     kernel BUG at /media/Linux_Data/project/linux/fs/sysfs/group.c:65!
     invalid opcode: 0000 [#1] SMP
     last sysfs file:
     CPU 0
     Modules linked in: loop(+)
    
     Pid: 43, comm: insmod Tainted: G        W   2.6.39-qemu+ #155 Bochs Bochs
     RIP: 0010:[<ffffffff8113ce61>]  [<ffffffff8113ce61>] internal_create_group=
    +0x2a/0x170
     RSP: 0018:ffff880007b3fde8  EFLAGS: 00000246
     RAX: 00000000ffffffef RBX: ffff880007b3d878 RCX: 00000000000007b4
     RDX: ffffffff8152da50 RSI: 0000000000000000 RDI: ffff880007b3d878
     RBP: ffff880007b3fe38 R08: ffff880007b3fde8 R09: 0000000000000000
     R10: ffff88000783b4a8 R11: ffff880007b3d878 R12: ffffffff8152da50
     R13: ffff880007b3d868 R14: 0000000000000000 R15: ffff880007b3d800
     FS:  0000000002137880(0063) GS:ffff880007c00000(0000) knlGS:00000000000000=
    00
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000422680 CR3: 0000000007b50000 CR4: 00000000000006b0
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 0000000000000000 DR7: 0000000000000000
     Process insmod (pid: 43, threadinfo ffff880007b3e000, task ffff880007afb9c=
    0)
     Stack:
      ffff880007b3fe58 ffffffff811e66dd ffff880007b3fe58 ffffffff811e570b
      0000000000000010 ffff880007b3d800 ffff880007a7b390 ffff880007b3d868
      0000000000400920 ffff880007b3d800 ffff880007b3fe48 ffffffff8113cfc8
     Call Trace:
      [<ffffffff811e66dd>] ? device_add+0x4bc/0x5af
      [<ffffffff811e570b>] ? dev_set_name+0x3c/0x3e
      [<ffffffff8113cfc8>] sysfs_create_group+0xe/0x12
      [<ffffffff810b420e>] blk_trace_init_sysfs+0x14/0x16
      [<ffffffff8116a090>] blk_register_queue+0x47/0xf7
      [<ffffffff8116f527>] add_disk+0xdf/0x290
      [<ffffffffa00060eb>] loop_init+0xeb/0x1b8 [loop]
      [<ffffffffa0006000>] ? 0xffffffffa0005fff
      [<ffffffff8100020a>] do_one_initcall+0x7a/0x12e
      [<ffffffff81096804>] sys_init_module+0x9c/0x1e0
      [<ffffffff813329bb>] system_call_fastpath+0x16/0x1b
     Code: c3 55 48 89 e5 41 57 41 56 41 89 f6 41 55 41 54 49 89 d4 53 48 89 fb=
     48 83 ec 28 48 85 ff 74 0b 85 f6 75 0b 48 83 7f 30 00 75 14 <0f> 0b eb fe =
    48 83 7f 30 00 b9 ea ff ff ff 0f 84 18 01 00 00 49
     RIP  [<ffffffff8113ce61>] internal_create_group+0x2a/0x170
      RSP <ffff880007b3fde8>
     ---[ end trace a123eb592043acad ]---
    
    Signed-off-by: Namhyung Kim <namhyung@gmail.com>
    Cc: Laurent Vivier <Laurent.Vivier@bull.net>
    Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 30707823fa2c23da9d4eac889f0ad82ec330e248
Author: Andrew Barry <abarry@cray.com>
Date:   Tue May 24 17:12:52 2011 -0700

    mm/page_alloc.c: prevent unending loop in __alloc_pages_slowpath()
    
    commit cfa54a0fcfc1017c6f122b6f21aaba36daa07f71 upstream.
    
    I believe I found a problem in __alloc_pages_slowpath, which allows a
    process to get stuck endlessly looping, even when lots of memory is
    available.
    
    Running an I/O and memory intensive stress-test I see a 0-order page
    allocation with __GFP_IO and __GFP_WAIT, running on a system with very
    little free memory.  Right about the same time that the stress-test gets
    killed by the OOM-killer, the utility trying to allocate memory gets stuck
    in __alloc_pages_slowpath even though most of the systems memory was freed
    by the oom-kill of the stress-test.
    
    The utility ends up looping from the rebalance label down through the
    wait_iff_congested continiously.  Because order=0,
    __alloc_pages_direct_compact skips the call to get_page_from_freelist.
    Because all of the reclaimable memory on the system has already been
    reclaimed, __alloc_pages_direct_reclaim skips the call to
    get_page_from_freelist.  Since there is no __GFP_FS flag, the block with
    __alloc_pages_may_oom is skipped.  The loop hits the wait_iff_congested,
    then jumps back to rebalance without ever trying to
    get_page_from_freelist.  This loop repeats infinitely.
    
    The test case is pretty pathological.  Running a mix of I/O stress-tests
    that do a lot of fork() and consume all of the system memory, I can pretty
    reliably hit this on 600 nodes, in about 12 hours.  32GB/node.
    
    Signed-off-by: Andrew Barry <abarry@cray.com>
    Signed-off-by: Minchan Kim <minchan.kim@gmail.com>
    Reviewed-by: Rik van Riel<riel@redhat.com>
    Acked-by: Mel Gorman <mgorman@suse.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 912299ba61a05de570199be99e39c8187a3c5636
Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
Date:   Sun May 15 12:18:38 2011 -0700

    ASoC: Add some missing volume update bit sets for wm_hubs devices
    
    commit fb5af53d421d80725172427e9076f6e889603df6 upstream.
    
    Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
    Acked-by: Liam Girdwood <lrg@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 2b6825e5746e78f8f6f6ac9d99694d0ecfdf579c
Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
Date:   Sat May 14 17:21:28 2011 -0700

    ASoC: Ensure output PGA is enabled for line outputs in wm_hubs
    
    commit d0b48af6c2b887354d0893e598d92911ce52620e upstream.
    
    Also fix a left/right typo while we're at it.
    
    Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
    Acked-by: Liam Girdwood <lrg@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit ea6cf367c3ee90d79e1a59ef94f1cb391df2519a
Author: David Henningsson <david.henningsson@canonical.com>
Date:   Mon May 16 12:09:29 2011 +0200

    ALSA: HDA: Use one dmic only for Dell Studio 1558
    
    commit e033ebfb399227e01686260ac271029011bc6b47 upstream.
    
    There are no signs of a dmic at node 0x0b, so the user is left with
    an additional internal mic which does not exist. This commit removes
    that non-existing mic.
    
    BugLink: http://bugs.launchpad.net/bugs/731706
    Reported-by: James Page <james.page@canonical.com>
    Signed-off-by: David Henningsson <david.henningsson@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 73048d1e37649b9cfc45fbc2c51383994354a35f
Author: Kasper Pedersen <kkp2010@kasperkp.dk>
Date:   Wed Oct 20 15:55:15 2010 -0700

    time: Compensate for rounding on odd-frequency clocksources
    
    commit a386b5af8edda1c742ce9f77891e112eefffc005 upstream.
    
    When the clocksource is not a multiple of HZ, the clock will be off.  For
    acpi_pm, HZ=1000 the error is 127.111 ppm:
    
    The rounding of cycle_interval ends up generating a false error term in
    ntp_error accumulation since xtime_interval is not exactly 1/HZ.  So, we
    subtract out the error caused by the rounding.
    
    This has been visible since 2.6.32-rc2
    	commit a092ff0f90cae22b2ac8028ecd2c6f6c1a9e4601
    	time: Implement logarithmic time accumulation
    That commit raised NTP_INTERVAL_FREQ and exposed the rounding error.
    
    testing tool: http://n1.taur.dk/permanent/testpmt.c
    Also tested with ntpd and a frequency counter.
    
    Signed-off-by: Kasper Pedersen <kkp2010@kasperkp.dk>
    Acked-by: john stultz <johnstul@us.ibm.com>
    Cc: John Kacur <jkacur@redhat.com>
    Cc: Clark Williams <williams@redhat.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit f9d42dd4fc06dac8ccbcdc0f4777c311355b9429
Author: Milton Miller <miltonm@bga.com>
Date:   Thu May 12 04:13:54 2011 -0500

    seqlock: Don't smp_rmb in seqlock reader spin loop
    
    commit 5db1256a5131d3b133946fa02ac9770a784e6eb2 upstream.
    
    Move the smp_rmb after cpu_relax loop in read_seqlock and add
    ACCESS_ONCE to make sure the test and return are consistent.
    
    A multi-threaded core in the lab didn't like the update
    from 2.6.35 to 2.6.36, to the point it would hang during
    boot when multiple threads were active.  Bisection showed
    af5ab277ded04bd9bc6b048c5a2f0e7d70ef0867 (clockevents:
    Remove the per cpu tick skew) as the culprit and it is
    supported with stack traces showing xtime_lock waits including
    tick_do_update_jiffies64 and/or update_vsyscall.
    
    Experimentation showed the combination of cpu_relax and smp_rmb
    was significantly slowing the progress of other threads sharing
    the core, and this patch is effective in avoiding the hang.
    
    A theory is the rmb is affecting the whole core while the
    cpu_relax is causing a resource rebalance flush, together they
    cause an interfernce cadance that is unbroken when the seqlock
    reader has interrupts disabled.
    
    At first I was confused why the refactor in
    3c22cd5709e8143444a6d08682a87f4c57902df3 (kernel: optimise
    seqlock) didn't affect this patch application, but after some
    study that affected seqcount not seqlock. The new seqcount was
    not factored back into the seqlock.  I defer that the future.
    
    While the removal of the timer interrupt offset created
    contention for the xtime lock while a cpu does the
    additonal work to update the system clock, the seqlock
    implementation with the tight rmb spin loop goes back much
    further, and is just waiting for the right trigger.
    
    Signed-off-by: Milton Miller <miltonm@bga.com>
    Cc: <linuxppc-dev@lists.ozlabs.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: Nick Piggin <npiggin@kernel.dk>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Anton Blanchard <anton@samba.org>
    Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
    Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
    Link: http://lkml.kernel.org/r/%3Cseqlock-rmb%40mdm.bga.com%3E
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit af70ad8d90c6af90566c5f2c2d9e9161387127b9
Author: Timo Warns <Warns@pre-sense.de>
Date:   Thu May 19 09:24:17 2011 +0200

    Fix for buffer overflow in ldm_frag_add not sufficient
    
    commit cae13fe4cc3f24820ffb990c09110626837e85d4 upstream.
    
    As Ben Hutchings discovered [1], the patch for CVE-2011-1017 (buffer
    overflow in ldm_frag_add) is not sufficient.  The original patch in
    commit c340b1d64000 ("fs/partitions/ldm.c: fix oops caused by corrupted
    partition table") does not consider that, for subsequent fragments,
    previously allocated memory is used.
    
    [1] http://lkml.org/lkml/2011/5/6/407
    
    Reported-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Timo Warns <warns@pre-sense.de>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 19733a3ad4e507448bb0b323dd88e273768decc5
Author: David Chang <dchang@novell.com>
Date:   Thu May 12 18:31:11 2011 +0800

    staging: usbip: fix wrong endian conversion
    
    commit cacd18a8476ce145ca5dcd46dc5b75585fd1289c upstream.
    
    Fix number_of_packets wrong endian conversion in function
    correct_endian_ret_submit()
    
    Signed-off-by: David Chang <dchang@novell.com>
    Acked-by: Arjan Mels <arjan.mels@gmx.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 3393dc63884c904a61e54dc1f2d0926dc5070e70
Author: Frederic Weisbecker <fweisbec@gmail.com>
Date:   Fri May 20 02:09:54 2011 +0200

    rcu: Fix unpaired rcu_irq_enter() from locking selftests
    
    commit ba9f207c9f82115aba4ce04b22e0081af0ae300f upstream.
    
    HARDIRQ_ENTER() maps to irq_enter() which calls rcu_irq_enter().
    But HARDIRQ_EXIT() maps to __irq_exit() which doesn't call
    rcu_irq_exit().
    
    So for every locking selftest that simulates hardirq disabled,
    we create an imbalance in the rcu extended quiescent state
    internal state.
    
    As a result, after the first missing rcu_irq_exit(), subsequent
    irqs won't exit dyntick-idle mode after leaving the interrupt
    handler.  This means that RCU won't see the affected CPU as being
    in an extended quiescent state, resulting in long grace-period
    delays (as in grace periods extending for hours).
    
    To fix this, just use __irq_enter() to simulate the hardirq
    context. This is sufficient for the locking selftests as we
    don't need to exit any extended quiescent state or perform
    any check that irqs normally do when they wake up from idle.
    
    As a side effect, this patch makes it possible to restore
    "rcu: Decrease memory-barrier usage based on semi-formal proof",
    which eventually helped finding this bug.
    
    Reported-and-tested-by: Yinghai Lu <yinghai@kernel.org>
    Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 6935afd49db0e94cfd52f32c7548eae48390c39a
Author: Roedel, Joerg <Joerg.Roedel@amd.com>
Date:   Thu May 19 11:13:39 2011 +0200

    x86, amd: Use _safe() msr access for GartTlbWlk disable code
    
    commit d47cc0db8fd6011de2248df505fc34990b7451bf upstream.
    
    The workaround for Bugzilla:
    
    	https://bugzilla.kernel.org/show_bug.cgi?id=33012
    
    introduced a read and a write to the MC4 mask msr.
    
    Unfortunatly this MSR is not emulated by the KVM hypervisor
    so that the kernel will get a #GP and crashes when applying
    this workaround when running inside KVM.
    
    This issue was reported as:
    
    	https://bugzilla.kernel.org/show_bug.cgi?id=35132
    
    and is fixed with this patch. The change just let the kernel
    ignore any #GP it gets while accessing this MSR by using the
    _safe msr access methods.
    
    Reported-by: Török Edwin <edwintorok@gmail.com>
    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    Cc: Rafael J. Wysocki <rjw@sisk.pl>
    Cc: Maciej Rutecki <maciej.rutecki@gmail.com>
    Cc: Avi Kivity <avi@redhat.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 936107f142c4c05e55de7b1f1c5c049dd0cb91dc
Author: Boris Ostrovsky <ostr@amd64.org>
Date:   Thu May 26 11:19:52 2011 -0400

    x86, amd: Do not enable ARAT feature on AMD processors below family 0x12
    
    commit e9cdd343a5e42c43bcda01e609fa23089e026470 upstream.
    
    Commit b87cf80af3ba4b4c008b4face3c68d604e1715c6 added support for
    ARAT (Always Running APIC timer) on AMD processors that are not
    affected by erratum 400. This erratum is present on certain processor
    families and prevents APIC timer from waking up the CPU when it
    is in a deep C state, including C1E state.
    
    Determining whether a processor is affected by this erratum may
    have some corner cases and handling these cases is somewhat
    complicated. In the interest of simplicity we won't claim ARAT
    support on processor families below 0x12 and will go back to
    broadcasting timer when going idle.
    
    Signed-off-by: Boris Ostrovsky <ostr@amd64.org>
    Link: http://lkml.kernel.org/r/1306423192-19774-1-git-send-email-ostr@amd64.org
    Tested-by: Boris Petkov <borislav.petkov@amd.com>
    Cc: Hans Rosenfeld <Hans.Rosenfeld@amd.com>
    Cc: Andreas Herrmann <Andreas.Herrmann3@amd.com>
    Cc: Chuck Ebbert <cebbert@redhat.com>
    Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit af3834a4ee48dbf533f0e46bb05df60ea2209cb9
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Wed May 18 17:06:05 2011 +0200

    Fix Ultrastor asm snippet
    
    commit fad4dab5e44e10acf6b0235e469cb8e773b58e31 upstream.
    
    Commit 1292500b replaced
    
    "=m" (*field) : "1" (*field)
    
    with
    
    "=m" (*field) :
    
    with comment "The following patch fixes it by using the '+' operator on
    the (*field) operand, marking it as read-write to gcc."
    '+' was actually forgotten.  This really puts it.
    
    Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
    Signed-off-by: James Bottomley <jbottomley@parallels.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 13db3fb0f5d380ab887739c77d66aa59959f29ad
Author: Eddie Wai <eddie.wai@broadcom.com>
Date:   Mon May 16 11:13:18 2011 -0700

    bnx2i: Fixed packet error created when the sq_size is set to 16
    
    commit 7287c63e986fe1a51a89f4bb1327320274a7a741 upstream.
    
    The number of chip's internal command cell, which is use to generate
    SCSI cmd packets to the target, was not initialized correctly by
    the driver when the sq_size is changed from the default 128.
    This, in turn, will create a problem where the chip's transmit pipe
    will erroneously reuse an old command cell that is no longer valid.
    The fix is to correctly initialize the chip's command cell upon setup.
    
    Signed-off-by: Eddie Wai <eddie.wai@broadcom.com>
    Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
    Signed-off-by: James Bottomley <jbottomley@parallels.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 53e67347d909bfcc6801adafba8d2633f7d37153
Author: Yang Ruirui <ruirui.r.yang@tieto.com>
Date:   Sat Apr 16 19:17:48 2011 -0400

    ext4: release page cache in ext4_mb_load_buddy error path
    
    commit 26626f1172fb4f3f323239a6a5cf4e082643fa46 upstream.
    
    Add missing page_cache_release in the error path of ext4_mb_load_buddy
    
    Signed-off-by: Yang Ruirui <ruirui.r.yang@tieto.com>
    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 46ee272bfb5eb7bdc7f950d770b698e37e4a15a1
Author: Ted Ts'o <tytso@mit.edu>
Date:   Sat Apr 30 13:17:11 2011 -0400

    jbd: fix fsync() tid wraparound bug
    
    commit d9b01934d56a96d9f4ae2d6204d4ea78a36f5f36 upstream.
    
    If an application program does not make any changes to the indirect
    blocks or extent tree, i_datasync_tid will not get updated.  If there
    are enough commits (i.e., 2**31) such that tid_geq()'s calculations
    wrap, and there isn't a currently active transaction at the time of
    the fdatasync() call, this can end up triggering a BUG_ON in
    fs/jbd/commit.c:
    
    	J_ASSERT(journal->j_running_transaction != NULL);
    
    It's pretty rare that this can happen, since it requires the use of
    fdatasync() plus *very* frequent and excessive use of fsync().  But
    with the right workload, it can.
    
    We fix this by replacing the use of tid_geq() with an equality test,
    since there's only one valid transaction id that is valid for us to
    start: namely, the currently running transaction (if it exists).
    
    Reported-by: Martin_Zielinski@McAfee.com
    Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit d60d3e608149ff8c88070c97f86970d0c1033e5c
Author: Jan Kara <jack@suse.cz>
Date:   Thu May 5 13:59:35 2011 +0200

    jbd: Fix forever sleeping process in do_get_write_access()
    
    commit 2842bb20eed2e25cde5114298edc62c8883a1d9a upstream.
    
    In do_get_write_access() we wait on BH_Unshadow bit for buffer to get
    from shadow state. The waking code in journal_commit_transaction() has
    a bug because it does not issue a memory barrier after the buffer is moved
    from the shadow state and before wake_up_bit() is called. Thus a waitqueue
    check can happen before the buffer is actually moved from the shadow state
    and waiting process may never be woken. Fix the problem by issuing proper
    barrier.
    
    Reported-by: Tao Ma <boyu.mt@taobao.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit c7fec4fa64fc57805d0ba79bf57487b0ab7cac49
Author: Jan Kara <jack@suse.cz>
Date:   Wed Apr 27 18:20:44 2011 +0200

    ext3: Fix fs corruption when make_indexed_dir() fails
    
    commit 86c4f6d85595cd7da635dc6985d27bfa43b1ae10 upstream.
    
    When make_indexed_dir() fails (e.g. because of ENOSPC) after it has allocated
    block for index tree root, we did not properly mark all changed buffers dirty.
    This lead to only some of these buffers being written out and thus effectively
    corrupting the directory.
    
    Fix the issue by marking all changed data dirty even in the error failure case.
    
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit a4bdde05c5e4972154a8e8bf913c3907131aa0e3
Author: Jiri Olsa <jolsa@redhat.com>
Date:   Thu May 12 16:30:30 2011 +0200

    x86, 64-bit: Fix copy_[to/from]_user() checks for the userspace address limit
    
    commit 26afb7c661080ae3f1f13ddf7f0c58c4f931c22b upstream.
    
    As reported in BZ #30352:
    
      https://bugzilla.kernel.org/show_bug.cgi?id=30352
    
    there's a kernel bug related to reading the last allowed page on x86_64.
    
    The _copy_to_user() and _copy_from_user() functions use the following
    check for address limit:
    
      if (buf + size >= limit)
    	fail();
    
    while it should be more permissive:
    
      if (buf + size > limit)
    	fail();
    
    That's because the size represents the number of bytes being
    read/write from/to buf address AND including the buf address.
    So the copy function will actually never touch the limit
    address even if "buf + size == limit".
    
    Following program fails to use the last page as buffer
    due to the wrong limit check:
    
     #include <sys/mman.h>
     #include <sys/socket.h>
     #include <assert.h>
    
     #define PAGE_SIZE       (4096)
     #define LAST_PAGE       ((void*)(0x7fffffffe000))
    
     int main()
     {
            int fds[2], err;
            void * ptr = mmap(LAST_PAGE, PAGE_SIZE, PROT_READ | PROT_WRITE,
                              MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0);
            assert(ptr == LAST_PAGE);
            err = socketpair(AF_LOCAL, SOCK_STREAM, 0, fds);
            assert(err == 0);
            err = send(fds[0], ptr, PAGE_SIZE, 0);
            perror("send");
            assert(err == PAGE_SIZE);
            err = recv(fds[1], ptr, PAGE_SIZE, MSG_WAITALL);
            perror("recv");
            assert(err == PAGE_SIZE);
            return 0;
     }
    
    The other place checking the addr limit is the access_ok() function,
    which is working properly. There's just a misleading comment
    for the __range_not_ok() macro - which this patch fixes as well.
    
    The last page of the user-space address range is a guard page and
    Brian Gerst observed that the guard page itself due to an erratum on K8 cpus
    (#121 Sequential Execution Across Non-Canonical Boundary Causes Processor
    Hang).
    
    However, the test code is using the last valid page before the guard page.
    The bug is that the last byte before the guard page can't be read
    because of the off-by-one error. The guard page is left in place.
    
    This bug would normally not show up because the last page is
    part of the process stack and never accessed via syscalls.
    
    Signed-off-by: Jiri Olsa <jolsa@redhat.com>
    Acked-by: Brian Gerst <brgerst@gmail.com>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Link: http://lkml.kernel.org/r/1305210630-7136-1-git-send-email-jolsa@redhat.com
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit c00baf6d0b994c1f94a9723fd93b1dce7a427836
Author: Felix Radensky <felix@embedded-sol.com>
Date:   Mon Apr 25 01:57:12 2011 +0300

    mtd: mtdconcat: fix NAND OOB write
    
    commit 431e1ecabddcd7cbba237182ddf431771f98bb4c upstream.
    
    Currently mtdconcat is broken for NAND. An attemtpt to create
    JFFS2 filesystem on concatenation of several NAND devices fails
    with OOB write errors. This patch fixes that problem.
    
    Signed-off-by: Felix Radensky <felix@embedded-sol.com>
    Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
    Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit a5d866de77d0b883830a0bff0d6d99a7426647d7
Author: James Bottomley <James.Bottomley@suse.de>
Date:   Wed May 18 16:20:10 2011 +0200

    block: add proper state guards to __elv_next_request
    
    commit 0a58e077eb600d1efd7e54ad9926a75a39d7f8ae upstream.
    
    blk_cleanup_queue() calls elevator_exit() and after this, we can't
    touch the elevator without oopsing.  __elv_next_request() must check
    for this state because in the refcounted queue model, we can still
    call it after blk_cleanup_queue() has been called.
    
    This was reported as causing an oops attributable to scsi.
    
    Signed-off-by: James Bottomley <James.Bottomley@suse.de>
    Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 6f31747bfeb8c74e6d0a10ecef0abe2a04c5a6cb
Author: Tejun Heo <tj@kernel.org>
Date:   Fri Apr 29 10:15:20 2011 +0200

    block: rescan partitions on invalidated devices on -ENOMEDIA too
    
    commit 02e352287a40bd456eb78df705bf888bc3161d3f upstream.
    
    __blkdev_get() doesn't rescan partitions if disk->fops->open() fails,
    which leads to ghost partition devices lingering after medimum removal
    is known to both the kernel and userland.  The behavior also creates a
    subtle inconsistency where O_NONBLOCK open, which doesn't fail even if
    there's no medium, clears the ghots partitions, which is exploited to
    work around the problem from userland.
    
    Fix it by updating __blkdev_get() to issue partition rescan after
    -ENOMEDIA too.
    
    This was reported in the following bz.
    
     https://bugzilla.kernel.org/show_bug.cgi?id=13029
    
    Stable: 2.6.38
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: David Zeuthen <zeuthen@gmail.com>
    Reported-by: Martin Pitt <martin.pitt@ubuntu.com>
    Reported-by: Kay Sievers <kay.sievers@vrfy.org>
    Tested-by: Kay Sievers <kay.sievers@vrfy.org>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 84f830a9a90112635bd8e6636c14da7b9f645706
Author: Eric B Munson <emunson@mgebm.net>
Date:   Mon May 23 04:22:40 2011 +0000

    powerpc/oprofile: Handle events that raise an exception without overflowing
    
    commit ad5d5292f16c6c1d7d3e257c4c7407594286b97e upstream.
    
    Commit 0837e3242c73566fc1c0196b4ec61779c25ffc93 fixes a situation on POWER7
    where events can roll back if a specualtive event doesn't actually complete.
    This can raise a performance monitor exception.  We need to catch this to ensure
    that we reset the PMC.  In all cases the PMC will be less than 256 cycles from
    overflow.
    
    This patch lifts Anton's fix for the problem in perf and applies it to oprofile
    as well.
    
    Signed-off-by: Eric B Munson <emunson@mgebm.net>
    Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 730fcde3210042e16d8787f48b3f05eebf5d65f1
Author: steven finney <Steven.Finney@palm.com>
Date:   Mon May 2 11:29:17 2011 -0700

    Fix memory leak in cpufreq_stat
    
    commit 98586ed8b8878e10691203687e89a42fa3355300 upstream.
    
    When a CPU is taken offline in an SMP system, cpufreq_remove_dev()
    nulls out the per-cpu policy before cpufreq_stats_free_table() can
    make use of it.  cpufreq_stats_free_table() then skips the
    call to sysfs_remove_group(), leaving about 100 bytes of sysfs-related
    memory unclaimed each time a CPU-removal occurs. Break up
    cpu_stats_free_table into sysfs and table portions, and
    call the sysfs portion early.
    
    Signed-off-by: Steven Finney <steven.finney@palm.com>
    Signed-off-by: Dave Jones <davej@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 761a310ee4c08a0c38a73663822001c67806acd8
Author: Jacob Shin <jacob.shin@amd.com>
Date:   Wed Apr 27 13:32:11 2011 -0500

    CPU hotplug, re-create sysfs directory and symlinks
    
    commit 27ecddc2a9f99ce4ac9a59a0acd77f7100b6d034 upstream.
    
    When we discover CPUs that are affected by each other's
    frequency/voltage transitions, the first CPU gets a sysfs directory
    created, and rest of the siblings get symlinks. Currently, when we
    hotplug off only the first CPU, all of the symlinks and the sysfs
    directory gets removed. Even though rest of the siblings are still
    online and functional, they are orphaned, and no longer governed by
    cpufreq.
    
    This patch, given the above scenario, creates a sysfs directory for
    the first sibling and symlinks for the rest of the siblings.
    
    Please note the recursive call, it was rather too ugly to roll it
    out. And the removal of redundant NULL setting (it is already taken
    care of near the top of the function).
    
    Signed-off-by: Jacob Shin <jacob.shin@amd.com>
    Acked-by: Mark Langsdorf <mark.langsdorf@amd.com>
    Reviewed-by: Thomas Renninger <trenn@suse.de>
    Signed-off-by: Dave Jones <davej@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit dee555dc331261ad9efbb672280406b863c8576d
Author: Catalin Marinas <catalin.marinas@arm.com>
Date:   Wed Apr 27 16:44:26 2011 +0100

    kmemleak: Do not return a pointer to an object that kmemleak did not get
    
    commit 52c3ce4ec5601ee383a14f1485f6bac7b278896e upstream.
    
    The kmemleak_seq_next() function tries to get an object (and increment
    its use count) before returning it. If it could not get the last object
    during list traversal (because it may have been freed), the function
    should return NULL rather than a pointer to such object that it did not
    get.
    
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Reported-by: Phil Carmody <ext-phil.2.carmody@nokia.com>
    Acked-by: Phil Carmody <ext-phil.2.carmody@nokia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

commit 7116a3c50456ac9634ce305fd51ad24fcbf13e58
Author: Steven Rostedt <srostedt@redhat.com>
Date:   Fri Apr 29 22:35:33 2011 -0400

    ftrace: Only update the function code on write to filter files
    
    commit 058e297d34a404caaa5ed277de15698d8dc43000 upstream.
    
    If function tracing is enabled, a read of the filter files will
    cause the call to stop_machine to update the function trace sites.
    It should only call stop_machine on write.
    
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>