1. 02 Jul, 2014 3 commits
  2. 13 Jun, 2014 35 commits
    • hellsgod's avatar
      config: b47 · cb35095c
      hellsgod authored
      cb35095c
    • Greg Kroah-Hartman's avatar
      Linux 3.4.93 · 661b8d0c
      Greg Kroah-Hartman authored
      
      sched: Use CPUPRI_NR_PRIORITIES instead of MAX_RT_PRIO in cpupri check
      
      commit 6227cb00cc120f9a43ce8313bb0475ddabcb7d01 upstream.
      
      The check at the beginning of cpupri_find() makes sure that the task_pri
      variable does not exceed the cp->pri_to_cpu array length. But that length
      is CPUPRI_NR_PRIORITIES not MAX_RT_PRIO, where it will miss the last two
      priorities in that array.
      
      As task_pri is computed from convert_prio() which should never be bigger
      than CPUPRI_NR_PRIORITIES, if the check should cause a panic if it is
      hit.
      Reported-by: default avatarMike Galbraith <umgwanakikbuti@gmail.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/1397015410.5212.13.camel@marge.simpson.net
      
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      perf: Prevent false warning in perf_swevent_add
      
      commit 39af6b1678afa5880dda7e375cf3f9d395087f6d upstream.
      
      The perf cpu offline callback takes down all cpu context
      events and releases swhash->swevent_hlist.
      
      This could race with task context software event being just
      scheduled on this cpu via perf_swevent_add while cpu hotplug
      code already cleaned up event's data.
      
      The race happens in the gap between the cpu notifier code
      and the cpu being actually taken down. Note that only cpu
      ctx events are terminated in the perf cpu hotplug code.
      
      It's easily reproduced with:
        $ perf record -e faults perf bench sched pipe
      
      while putting one of the cpus offline:
        # echo 0 > /sys/devices/system/cpu/cpu1/online
      
      Console emits following warning:
        WARNING: CPU: 1 PID: 2845 at kernel/events/core.c:5672 perf_swevent_add+0x18d/0x1a0()
        Modules linked in:
        CPU: 1 PID: 2845 Comm: sched-pipe Tainted: G        W    3.14.0+ #256
        Hardware name: Intel Corporation Montevina platform/To be filled by O.E.M., BIOS AMVACRB1.86C.0066.B00.0805070703 05/07/2008
         0000000000000009 ffff880077233ab8 ffffffff81665a23 0000000000200005
         0000000000000000 ffff880077233af8 ffffffff8104732c 0000000000000046
         ffff88007467c800 0000000000000002 ffff88007a9cf2a0 0000000000000001
        Call Trace:
         [<ffffffff81665a23>] dump_stack+0x4f/0x7c
         [<ffffffff8104732c>] warn_slowpath_common+0x8c/0xc0
         [<ffffffff8104737a>] warn_slowpath_null+0x1a/0x20
         [<ffffffff8110fb3d>] perf_swevent_add+0x18d/0x1a0
         [<ffffffff811162ae>] event_sched_in.isra.75+0x9e/0x1f0
         [<ffffffff8111646a>] group_sched_in+0x6a/0x1f0
         [<ffffffff81083dd5>] ? sched_clock_local+0x25/0xa0
         [<ffffffff811167e6>] ctx_sched_in+0x1f6/0x450
         [<ffffffff8111757b>] perf_event_sched_in+0x6b/0xa0
         [<ffffffff81117a4b>] perf_event_context_sched_in+0x7b/0xc0
         [<ffffffff81117ece>] __perf_event_task_sched_in+0x43e/0x460
         [<ffffffff81096f1e>] ? put_lock_stats.isra.18+0xe/0x30
         [<ffffffff8107b3c8>] finish_task_switch+0xb8/0x100
         [<ffffffff8166a7de>] __schedule+0x30e/0xad0
         [<ffffffff81172dd2>] ? pipe_read+0x3e2/0x560
         [<ffffffff8166b45e>] ? preempt_schedule_irq+0x3e/0x70
         [<ffffffff8166b45e>] ? preempt_schedule_irq+0x3e/0x70
         [<ffffffff8166b464>] preempt_schedule_irq+0x44/0x70
         [<ffffffff816707f0>] retint_kernel+0x20/0x30
         [<ffffffff8109e60a>] ? lockdep_sys_exit+0x1a/0x90
         [<ffffffff812a4234>] lockdep_sys_exit_thunk+0x35/0x67
         [<ffffffff81679321>] ? sysret_check+0x5/0x56
      
      Fixing this by tracking the cpu hotplug state and displaying
      the WARN only if current cpu is initialized properly.
      
      Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Reported-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
      Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/1396861448-10097-1-git-send-email-jolsa@redhat.com
      
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      perf: Limit perf_event_attr::sample_period to 63 bits
      
      commit 0819b2e30ccb93edf04876237b6205eef84ec8d2 upstream.
      
      Vince reported that using a large sample_period (one with bit 63 set)
      results in wreckage since while the sample_period is fundamentally
      unsigned (negative periods don't make sense) the way we implement
      things very much rely on signed logic.
      
      So limit sample_period to 63 bits to avoid tripping over this.
      Reported-by: default avatarVince Weaver <vincent.weaver@maine.edu>
      Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/n/tip-p25fhunibl4y3qi0zuqmyf4b@git.kernel.org
      
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      perf: Fix race in removing an event
      
      commit 46ce0fe97a6be7532ce6126bb26ce89fed81528c upstream.
      
      When removing a (sibling) event we do:
      
      	raw_spin_lock_irq(&ctx->lock);
      	perf_group_detach(event);
      	raw_spin_unlock_irq(&ctx->lock);
      
      	<hole>
      
      	perf_remove_from_context(event);
      		raw_spin_lock_irq(&ctx->lock);
      		...
      		raw_spin_unlock_irq(&ctx->lock);
      
      Now, assuming the event is a sibling, it will be 'unreachable' for
      things like ctx_sched_out() because that iterates the
      groups->siblings, and we just unhooked the sibling.
      
      So, if during <hole> we get ctx_sched_out(), it will miss the event
      and not call event_sched_out() on it, leaving it programmed on the
      PMU.
      
      The subsequent perf_remove_from_context() call will find the ctx is
      inactive and only call list_del_event() to remove the event from all
      other lists.
      
      Hereafter we can proceed to free the event; while still programmed!
      
      Close this hole by moving perf_group_detach() inside the same
      ctx->lock region(s) perf_remove_from_context() has.
      
      The condition on inherited events only in __perf_event_exit_task() is
      likely complete crap because non-inherited events are part of groups
      too and we're tearing down just the same. But leave that for another
      patch.
      
      Most-likely-Fixes: e03a9a55
      
       ("perf: Change close() semantics for group events")
      Reported-by: default avatarVince Weaver <vincent.weaver@maine.edu>
      Tested-by: default avatarVince Weaver <vincent.weaver@maine.edu>
      Much-staring-at-traces-by: default avatarVince Weaver <vincent.weaver@maine.edu>
      Much-staring-at-traces-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/20140505093124.GN17778@laptop.programming.kicks-ass.net
      
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mm/memory-failure.c: fix memory leak by race between poison and unpoison
      
      commit 3e030ecc0fc7de10fd0da10c1c19939872a31717 upstream.
      
      When a memory error happens on an in-use page or (free and in-use)
      hugepage, the victim page is isolated with its refcount set to one.
      
      When you try to unpoison it later, unpoison_memory() calls put_page()
      for it twice in order to bring the page back to free page pool (buddy or
      free hugepage list).  However, if another memory error occurs on the
      page which we are unpoisoning, memory_failure() returns without
      releasing the refcount which was incremented in the same call at first,
      which results in memory leak and unconsistent num_poisoned_pages
      statistics.  This patch fixes it.
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Cc: Andi Kleen <andi@firstfloor.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: 8051/1: put_user: fix possible data corruption in put_user
      
      commit 537094b64b229bf3ad146042f83e74cf6abe59df upstream.
      
      According to arm procedure call standart r2 register is call-cloberred.
      So after the result of x expression was put into r2 any following
      function call in p may overwrite r2. To fix this, the result of p
      expression must be saved to the temporary variable before the
      assigment x expression to __r2.
      Signed-off-by: default avatarAndrey Ryabinin <a.ryabinin@samsung.com>
      Reviewed-by: default avatarNicolas Pitre <nico@linaro.org>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      sched: Fix hotplug vs. set_cpus_allowed_ptr()
      
      commit 6acbfb96976fc3350e30d964acb1dbbdf876d55e upstream.
      
      Lai found that:
      
        WARNING: CPU: 1 PID: 13 at arch/x86/kernel/smp.c:124 native_smp_send_reschedule+0x2d/0x4b()
        ...
        migration_cpu_stop+0x1d/0x22
      
      was caused by set_cpus_allowed_ptr() assuming that cpu_active_mask is
      always a sub-set of cpu_online_mask.
      
      This isn't true since 5fbd036b ("sched: Cleanup cpu_active madness").
      
      So set active and online at the same time to avoid this particular
      problem.
      
      Fixes: 5fbd036b
      
       ("sched: Cleanup cpu_active madness")
      Signed-off-by: default avatarLai Jiangshan <laijs@cn.fujitsu.com>
      Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Michael wang <wangyun@linux.vnet.ibm.com>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
      Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Cc: Toshi Kani <toshi.kani@hp.com>
      Link: http://lkml.kernel.org/r/53758B12.8060609@cn.fujitsu.com
      
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      md: always set MD_RECOVERY_INTR when aborting a reshape or other "resync".
      
      commit 3991b31ea072b070081ca3bfa860a077eda67de5 upstream.
      
      If mddev->ro is set, md_to_sync will (correctly) abort.
      However in that case MD_RECOVERY_INTR isn't set.
      
      If a RESHAPE had been requested, then ->finish_reshape() will be
      called and it will think the reshape was successful even though
      nothing happened.
      
      Normally a resync will not be requested if ->ro is set, but if an
      array is stopped while a reshape is on-going, then when the array is
      started, the reshape will be restarted.  If the array is also set
      read-only at this point, the reshape will instantly appear to success,
      resulting in data corruption.
      
      Consequently, this patch is suitable for any -stable kernel.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      xhci: delete endpoints from bandwidth list before freeing whole device
      
      commit 5dc2808c4729bf080487e61b80ee04e0fdb12a37 upstream.
      
      Lists of endpoints are stored for bandwidth calculation for roothub ports.
      Make sure we remove all endpoints from the list before the whole device,
      containing its endpoints list_head stuctures, is freed.
      
      This used to be done in the wrong order in xhci_mem_cleanup(),
      and triggered an oops in resume from S4 (hibernate).
      Tested-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Staging: speakup: Move pasting into a work item
      
      commit d7500135802ca55b3f4e01a16544e8b34082f8c3 upstream.
      
      Input is handled in softirq context, but when pasting we may
      need to sleep.  speakup_paste_selection() currently tries to
      bodge this by busy-waiting if in_atomic(), but that doesn't
      help because the ldisc may also sleep.
      
      For bonus breakage, speakup_paste_selection() changes the
      state of current, even though it's not running in process
      context.
      
      Move it into a work item and make sure to cancel it on exit.
      
      References: https://bugs.debian.org/735202
      References: https://bugs.debian.org/744015
      
      Reported-by: default avatarPaul Gevers <elbrus@debian.org>
      Reported-and-tested-by: default avatarJarek Czekalski <jarekczek@poczta.onet.pl>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda/realtek - Correction of fixup codes for PB V7900 laptop
      
      commit e30cf2d2bed3aed74a651c64de323ba26e4ff7d0 upstream.
      
      Correcion of wrong fixup entries add in commit ca8f0424 to replace
      static model quirk for PB V7900 laptop (will model).
      
      [note: the removal of ALC260_FIXUP_HP_PIN_0F chain is also needed as a
       part of the fix; otherwise the pin is set up wrongly as a headphone,
       and user-space (PulseAudio) may be wrongly trying to detect the jack
       state -- tiwai]
      
      Fixes: ca8f0424
      
       ('ALSA: hda/realtek - Add the fixup codes for ALC260 model=will')
      Signed-off-by: default avatarRonan Marquet <ronan.marquet@orange.fr>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda/realtek - Fix COEF widget NID for ALC260 replacer fixup
      
      commit 192a98e280e560510a62aca8cfa83b4ae7c095bb upstream.
      
      The conversion to a fixup table for Replacer model with ALC260 in
      commit 20f7d928 took the wrong widget NID for COEF setups.  Namely,
      NID 0x1a should have been used instead of NID 0x20, which is the
      common node for all Realtek codecs but ALC260.
      
      Fixes: 20f7d928
      
       ('ALSA: hda/realtek - Replace ALC260 model=replacer with the auto-parser')
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: ftdi_sio: add NovaTech OrionLXm product ID
      
      commit d0839d757e6294921c31b1c4ca4f1dcc5df63bcd upstream.
      
      The NovaTech OrionLXm uses an onboard FTDI serial converter for JTAG and
      console access.
      
      Here is the lsusb output:
      Bus 004 Device 123: ID 0403:7c90 Future Technology Devices
      International, Ltd
      Signed-off-by: default avatarGeorge McCollister <george.mccollister@gmail.com>
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: serial: option: add support for Novatel E371 PCIe card
      
      commit 8a61ba3a47ac39f660702aa66a172185dd605a86 upstream.
      
      Adds product ID for the Novatel E371 PCI Express Mini Card.
      
      $ lsusb
      Bus 001 Device 024: ID 1410:9011 Novatel Wireless
      
      $ usb-devices
      T:  Bus=01 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 24 Spd=480 MxCh= 0
      D:  Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs=  1
      P:  Vendor=1410 ProdID=9011 Rev=00.03
      S:  Manufacturer=Novatel Wireless, Inc.
      S:  Product=Novatel Wireless HSPA
      S:  SerialNumber=012773002115811
      C:  #Ifs= 6 Cfg#= 1 Atr=e0 MxPwr=500mA
      I:  If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#= 3 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
      I:  If#= 6 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
      I:  If#= 7 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether
      
      Tested with kernel 3.2.0.
      Signed-off-by: default avatarAlexej Starschenko <starschenko@gmail.com>
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: io_ti: fix firmware download on big-endian machines (part 2)
      
      commit c03890ff5e24a4bf59059f2d179f427559b7330a upstream.
      
      A recent patch that purported to fix firmware download on big-endian
      machines failed to add the corresponding sparse annotation to the
      i2c-header. This was reported by the kbuild test robot.
      
      Adding the appropriate annotation revealed another endianess bug related
      to the i2c-header Size-field in a code path that is exercised when the
      firmware is actually being downloaded (and not just verified and left
      untouched unless older than the firmware at hand).
      
      This patch adds the required sparse annotation to the i2c-header and
      makes sure that the Size-field is sent in little-endian byte order
      during firmware download also on big-endian machines.
      
      Note that this patch is only compile-tested, but that there is no
      functional change for little-endian systems.
      Reported-by: default avatarkbuild test robot <fengguang.wu@intel.com>
      Cc: Ludovic Drolez <ldrolez@debian.org>
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: Avoid runtime suspend loops for HCDs that can't handle suspend/resume
      
      commit 8ef42ddd9a53b73e6fc3934278710c27f80f324f upstream.
      
      Not all host controller drivers have bus-suspend and bus-resume
      methods.  When one doesn't, it will cause problems if runtime PM is
      enabled in the kernel.  The PM core will attempt to suspend the
      controller's root hub, the suspend will fail because there is no
      bus-suspend routine, and a -EBUSY error code will be returned to the
      PM core.  This will cause the suspend attempt to be repeated shortly
      thereafter, in a never-ending loop.
      
      Part of the problem is that the original error code -ENOENT gets
      changed to -EBUSY in usb_runtime_suspend(), on the grounds that the PM
      core will interpret -ENOENT as meaning that the root hub has gotten
      into a runtime-PM error state.  While this change is appropriate for
      real USB devices, it's not such a good idea for a root hub.  In fact,
      considering the root hub to be in a runtime-PM error state would not
      be far from the truth.  Therefore this patch updates
      usb_runtime_suspend() so that it adjusts error codes only for
      non-root-hub devices.
      
      Furthermore, the patch attempts to prevent the problem from occurring
      in the first place by not enabling runtime PM by default for root hubs
      whose host controller driver doesn't have bus_suspend and bus_resume
      methods.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Reported-by: default avatarWill Deacon <will.deacon@arm.com>
      Tested-by: default avatarWill Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mm: rmap: fix use-after-free in __put_anon_vma
      
      commit 624483f3ea82598ab0f62f1bdb9177f531ab1892 upstream.
      
      While working address sanitizer for kernel I've discovered
      use-after-free bug in __put_anon_vma.
      
      For the last anon_vma, anon_vma->root freed before child anon_vma.
      Later in anon_vma_free(anon_vma) we are referencing to already freed
      anon_vma->root to check rwsem.
      
      This fixes it by freeing the child anon_vma before freeing
      anon_vma->root.
      Signed-off-by: default avatarAndrey Ryabinin <a.ryabinin@samsung.com>
      Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      virtio_blk: Drop unused request tracking list
      
      commit f65ca1dc6a8c81c6bd72297d4399ec5f4c1f3a01 upstream.
      
      Benchmark shows small performance improvement on fusion io device.
      
      Before:
        seq-read : io=1,024MB, bw=19,982KB/s, iops=39,964, runt= 52475msec
        seq-write: io=1,024MB, bw=20,321KB/s, iops=40,641, runt= 51601msec
        rnd-read : io=1,024MB, bw=15,404KB/s, iops=30,808, runt= 68070msec
        rnd-write: io=1,024MB, bw=14,776KB/s, iops=29,552, runt= 70963msec
      
      After:
        seq-read : io=1,024MB, bw=20,343KB/s, iops=40,685, runt= 51546msec
        seq-write: io=1,024MB, bw=20,803KB/s, iops=41,606, runt= 50404msec
        rnd-read : io=1,024MB, bw=16,221KB/s, iops=32,442, runt= 64642msec
        rnd-write: io=1,024MB, bw=15,199KB/s, iops=30,397, runt= 68991msec
      Signed-off-by: default avatarAsias He <asias@redhat.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      virtio-blk: Fix hot-unplug race in remove method
      
      commit b79d866c8b7014a51f611a64c40546109beaf24a upstream.
      
      If we reset the virtio-blk device before the requests already dispatched
      to the virtio-blk driver from the block layer are finised, we will stuck
      in blk_cleanup_queue() and the remove will fail.
      
      blk_cleanup_queue() calls blk_drain_queue() to drain all requests queued
      before DEAD marking. However it will never success if the device is
      already stopped. We'll have q->in_flight[] > 0, so the drain will not
      finish.
      
      How to reproduce the race:
      1. hot-plug a virtio-blk device
      2. keep reading/writing the device in guest
      3. hot-unplug while the device is busy serving I/O
      
      Test:
      ~1000 rounds of hot-plug/hot-unplug test passed with this patch.
      
      Changes in v3:
      - Drop blk_abort_queue and blk_abort_request
      - Use __blk_end_request_all to complete request dispatched to driver
      
      Changes in v2:
      - Drop req_in_flight
      - Use virtqueue_detach_unused_buf to get request dispatched to driver
      Signed-off-by: default avatarAsias He <asias@redhat.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      virtio-blk: Call del_gendisk() before disable guest kick
      
      commit 02e2b124943648fba0a2ccee5c3656a5653e0151 upstream.
      
      del_gendisk() might not return due to failing to remove the
      /sys/block/vda/serial sysfs entry when another thread (udev) is
      trying to read it.
      
      virtblk_remove()
        vdev->config->reset() : guest will not kick us through interrupt
          del_gendisk()
            device_del()
              kobject_del(): got stuck, sysfs entry ref count non zero
      
      sysfs_open_file(): user space process read /sys/block/vda/serial
         sysfs_get_active() : got sysfs entry ref count
            dev_attr_show()
              virtblk_serial_show()
                 blk_execute_rq() : got stuck, interrupt is disabled
                                    request cannot be finished
      
      This patch fixes it by calling del_gendisk() before we disable guest's
      interrupt so that the request sent in virtblk_serial_show() will be
      finished and del_gendisk() will success.
      
      This fixes another race in hot-unplug process.
      
      It is save to call del_gendisk(vblk->disk) before
      flush_work(&vblk->config_work) which might access vblk->disk, because
      vblk->disk is not freed until put_disk(vblk->disk).
      
      Cc: virtualization@lists.linux-foundation.org
      Cc: kvm@vger.kernel.org
      Signed-off-by: default avatarAsias He <asias@redhat.com>
      Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      virtio-blk: Reset device after blk_cleanup_queue()
      
      commit 483001c765af6892b3fc3726576cb42f17d1d6b5 upstream.
      
      blk_cleanup_queue() will call blk_drian_queue() to drain all the
      requests before queue DEAD marking. If we reset the device before
      blk_cleanup_queue() the drain would fail.
      
      1) if the queue is stopped in do_virtblk_request() because device is
      full, the q->request_fn() will not be called.
      
      blk_drain_queue() {
         while(true) {
            ...
            if (!list_empty(&q->queue_head))
              __blk_run_queue(q) {
      	    if (queue is not stoped)
      		q->request_fn()
      	}
            ...
         }
      }
      
      Do no reset the device before blk_cleanup_queue() gives the chance to
      start the queue in interrupt handler blk_done().
      
      2) In commit b79d866c8b7014a51f611a64c40546109beaf24a, We abort requests
      dispatched to driver before blk_cleanup_queue(). There is a race if
      requests are dispatched to driver after the abort and before the queue
      DEAD mark. To fix this, instead of aborting the requests explicitly, we
      can just reset the device after after blk_cleanup_queue so that the
      device can complete all the requests before queue DEAD marking in the
      drain process.
      
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: virtualization@lists.linux-foundation.org
      Cc: kvm@vger.kernel.org
      Signed-off-by: default avatarAsias He <asias@redhat.com>
      Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mm: add kmap_to_page()
      
      commit fcb8996728fb59eddf84678df7cb213b2c9a2e26 upstream.
      
      This is extracted from Mel Gorman's commit 5a178119b0fb ('mm: add
      support for direct_IO to highmem pages') upstream.
      
      Required to backport commit b9cdc88df8e6 ('virtio: 9p: correctly pass
      physical address to userspace for high pages').
      
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mm: highmem: export kmap_to_page for modules
      
      commit f0263d2d222e9e25f2587e51a9dc58c6fb2a9352 upstream.
      
      Some virtio device drivers (9p) need to translate high virtual addresses
      to physical addresses, which are inserted into the virtqueue for
      processing by userspace.
      
      This patch exports the kmap_to_page symbol, so that the affected drivers
      can be compiled as modules.
      Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      virtio: 9p: correctly pass physical address to userspace for high pages
      
      commit 30d395b124c51db66d9f3ba0611cd62021afc392 upstream.
      
      commit b9cdc88df8e63e81c723b82c286fc97f5d0dc325 upstream.
      
      When using a virtio transport, the 9p net device may pass the physical
      address of a kernel buffer to userspace via a scatterlist inside a
      virtqueue. If the kernel buffer is mapped outside of the linear mapping
      (e.g. highmem), then virt_to_page will return a bogus value and we will
      populate the scatterlist with junk.
      
      This patch uses kmap_to_page when populating the page array for a kernel
      buffer.
      
      Cc: Sasha Levin <levinsasha928@gmail.com>
      Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      virtio-blk: Don't free ida when disk is in use
      
      commit f4953fe6c4aeada2d5cafd78aa97587a46d2d8f9 upstream.
      
      When a file system is mounted on a virtio-blk disk, we then remove it
      and then reattach it, the reattached disk gets the same disk name and
      ids as the hot removed one.
      
      This leads to very nasty effects - mostly rendering the newly attached
      device completely unusable.
      
      Trying what happens when I do the same thing with a USB device, I saw
      that the sd node simply doesn't get free'd when a device gets forcefully
      removed.
      
      Imitate the same behavior for vd devices. This way broken vd devices
      simply are never free'd and newly attached ones keep working just fine.
      Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      virtio_console: fix uapi header
      
      commit 6407d75afd08545f2252bb39806ffd3f10c7faac upstream.
      
      uapi should use __u32 not u32.
      Fix a macro in virtio_console.h which uses u32.
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      [bwh: Backported to 3.2: adjust filename]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      virtio: console: rename cvq_lock to c_ivq_lock
      
      commit 165b1b8bbc17c9469b053bab78b11b7cbce6d161 upstream.
      
      The cvq_lock was taken for the c_ivq.  Rename the lock to make that
      obvious.
      
      We'll also add a lock around the c_ovq in the next commit, so there's no
      ambiguity.
      Signed-off-by: default avatarAmit Shah <amit.shah@redhat.com>
      Reviewed-by: default avatarAsias He <asias@redhat.com>
      Reviewed-by: default avatarWanlong Gao <gaowanlong@cn.fujitsu.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      [bwh: Backported to 3.2:
       - Adjust context
       - Drop change to virtcons_restore()]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [wyj: Backported to 3.4:
       - pick change to virtcons_restore() from upsteam patch]
      Signed-off-by: default avatarYijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      virtio: console: add locking around c_ovq operations
      
      commit 9ba5c80b1aea8648a3efe5f22dc1f7cacdfbeeb8 upstream.
      
      When multiple ovq operations are being performed (lots of open/close
      operations on virtio_console fds), the __send_control_msg() function can
      get confused without locking.
      
      A simple recipe to cause badness is:
      * create a QEMU VM with two virtio-serial ports
      * in the guest, do
        while true;do echo abc >/dev/vport0p1;done
        while true;do echo edf >/dev/vport0p2;done
      
      In one run, this caused a panic in __send_control_msg().  In another, I
      got
      
         virtio_console virtio0: control-o:id 0 is not a head!
      
      This also results repeated messages similar to these on the host:
      
        qemu-kvm: virtio-serial-bus: Unexpected port id 478762112 for device virtio-serial-bus.0
        qemu-kvm: virtio-serial-bus: Unexpected port id 478762368 for device virtio-serial-bus.0
      Reported-by: default avatarFuXiangChun <xfu@redhat.com>
      Signed-off-by: default avatarAmit Shah <amit.shah@redhat.com>
      Reviewed-by: default avatarWanlong Gao <gaowanlong@cn.fujitsu.com>
      Reviewed-by: default avatarAsias He <asias@redhat.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [wyj: Backported to 3.4: adjust context]
      Signed-off-by: default avatarYijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd: pass net to nfsd_init_socks()
      
      commit db6e182c17cb1a7069f7f8924721ce58ac05d9a3 upstream.
      
      Precursor patch. Hard-coded "init_net" will be replaced by proper one in
      future.
      Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      [wengmeiling: backport to 3.4:
       - adjust context
       - one more parameter(int port) for nfsd_init_socks()
       - net initialization in nfsd_startup()]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd: pass net to nfsd_startup() and nfsd_shutdown()
      
      commit db42d1a76a8dfcaba7a2dc9c591fa4e231db22b3 upstream.
      
      Precursor patch. Hard-coded "init_net" will be replaced by proper one in
      future.
      Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      [wengmeiling: backport to 3.4:
       - adjust context
       - one more parameter(int port) for nfsd_startup()
       - no net ns initialization in nfsd_shutdown()
       - pass @net to lockd_up() in nfsd_startup()
       - pass @net to lockd_down() in nfsd_shutdown()]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd: pass net to nfsd_create_serv()
      
      commit 6777436b0f072fb20a025a73e9b67a35ad8a5451 upstream.
      
      Precursor patch. Hard-coded "init_net" will be replaced by proper one in
      future.
      Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      [wengmeiling: backport to 3.4: adjust context]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd: pass net to nfsd_svc()
      
      commit d41a9417cd89a69f58a26935034b4264a2d882d6 upstream.
      
      Precursor patch. Hard-coded "init_net" will be replaced by proper one in
      future.
      Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      [wengmeiling: backport to 3.4:
       - adjust context
       - one more parameter(int port) for nfsd_svc()]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd: pass net to nfsd_set_nrthreads()
      
      commit 3938a0d5eb5effcc89c6909741403f4e6a37252d upstream.
      
      Precursor patch. Hard-coded "init_net" will be replaced by proper one in
      future.
      Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      [wengmeiling: backport to 3.4: adjust context]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd: pass net to __write_ports() and down
      
      commit 081603520b25f7b35ef63a363376a17c36ef74ed upstream.
      
      Precursor patch. Hard-coded "init_net" will be replaced by proper one in
      future.
      Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      [wengmeiling: backport to 3.4:
       - adjust context
       - add net_ns parameter to __write_ports_delxprt()]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd: pass proper net to nfsd_destroy() from NFSd kthreads
      
      commit 88c47666171989ed4c5b1a5687df09511e8c5e35 upstream.
      
      Since NFSd service is per-net now, we have to pass proper network
      context in nfsd_shutdown() from NFSd kthreads.
      
      The simplest way I found is to get proper net from one of transports
      with permanent sockets.
      Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      [wengmeiling: backport to 3.4: adjust context]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd: containerize NFSd filesystem
      
      note: this backport is just for the null pointer problem when
      start nfsd in none init netns. The nfsd is still not containerized.
      
      commit 11f779421a39b86da8a523d97e5fd3477878d44f upstream.
      
      This patch makes NFSD file system superblock to be created per net.
      This makes possible to get proper network namespace from superblock instead of
      using hard-coded "init_net".
      
      Note: NFSd fs super-block holds network namespace. This garantees, that
      network namespace won't disappear from underneath of it.
      This, obviously, means, that in case of kill of a container's "init" (which is not a mount
      namespace, but network namespace creator) netowrk namespace won't be
      destroyed.
      Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      [wengmeiling: backport to 3.4:
       - export cache not per netns
       - NFSD service structure not per netns]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd: check passed socket's net matches NFSd superblock's one
      
      commit 3064639423c48d6e0eb9ecc27c512a58e38c6c57 upstream.
      
      There could be a case, when NFSd file system is mounted in network, different
      to socket's one, like below:
      
      "ip netns exec" creates new network and mount namespace, which duplicates NFSd
      mount point, created in init_net context. And thus NFS server stop in nested
      network context leads to RPCBIND client destruction in init_net.
      Then, on NFSd start in nested network context, rpc.nfsd process creates socket
      in nested net and passes it into "write_ports", which leads to RPCBIND sockets
      creation in init_net context because of the same reason (NFSd monut point was
      created in init_net context). An attempt to register passed socket in nested
      net leads to panic, because no RPCBIND client present in nexted network
      namespace.
      
      This patch add check that passed socket's net matches NFSd superblock's one.
      And returns -EINVAL error to user psace otherwise.
      
      v2: Put socket on exit.
      Reported-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarStanislav Kinsbursky <skinsbursky@parallels.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      [wengmeiling: backport to 3.4: adjust context]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      isci: Fix a race condition in the SSP task management path
      
      commit 96f15f29038e58e1b0a96483e2b369ff446becf1 upstream.
      
      This commit fixes a race condition in the isci driver abort task and SSP
      device task management path.  The race is caused when an I/O termination
      in the SCU hardware is necessary because of an SSP target timeout condition,
      and the check of the I/O end state races against the HW-termination-driven
      end state.  The failure of the race meant that no TMF was sent to the device
      to clean-up the pending I/O.
      Signed-off-by: default avatarJeff Skirvin <jeffrey.d.skirvin@intel.com>
      Reviewed-by: default avatarLukasz Dorau <lukasz.dorau@intel.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mpt2sas: Fix for device scan following host reset could get stuck in a infinite loop
      
      commit 6241f22ca12a26ee149cbe31b27bac97dbdc8bc4 upstream.
      
      Modified device scan routine so each configuration page read breaks from the
      while loop when the ioc_status is not equal to MPI2_IOCSTATUS_SUCCESS.
      
      [jejb: checkpatch fixes]
      Signed-off-by: default avatarSreekanth Reddy <Sreekanth.Reddy@lsi.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      [bwh: Backported to 3.2; adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mpt2sas: Fix for issue Missing delay not getting set during system bootup
      
      commit 93cfcb8c998e3fe2c075fa61ab28f7b018e5049a upstream.
      
      commit b0df96a0068daee4f9c2189c29b9053eb6e46b17 upstream.
      
      Missing delay is not getting set properly. The reason is that it is not
      defined in the same file from where it is being invoked.  The fix is to move
      the missing delay module parameter from mpt2sas_base.c to mpt2sas_scsh.c.
      Signed-off-by: default avatarSreekanth Reddy <Sreekanth.Reddy@lsi.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hpsa: gen8plus Smart Array IDs
      
      commit fe0c9610bb68dd0aad1017456f5e3c31264d70c2 upstream.
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      iscsi-target: Always send a response before terminating iSCSI connection
      
      commit 1c5c12c666fda27c7c494b34934a0a0631a48130 upstream.
      
      There are some cases, for example when the initiator sends an
      out-of-bounds ErrorRecoveryLevel value, where the iSCSI target
      terminates the connection without sending back any error.  Audit the
      login path and add appropriate iscsit_tx_login_rsp() calls to make
      sure this doesn't happen.
      Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      target/pscsi: fix return value check
      
      commit 58932e96e438cd78f75e765d7b87ef39d3533d15 upstream.
      
      In case of error, the function scsi_host_lookup() returns NULL
      pointer not ERR_PTR(). The IS_ERR() test in the return value check
      should be replaced with NULL test.
      Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      [bwh: Backported to 3.2: pscsi_configure_device() returns a pointer]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      target: Fix MAINTENANCE_IN service action CDB checks to use lower 5 bits
      
      commit ba539743b70cd160c84bab1c82910d0789b820f8 upstream.
      
      This patch fixes the MAINTENANCE_IN service action type checks to only
      look at the proper lower 5 bits of cdb byte 1.  This addresses the case
      where MI_REPORT_TARGET_PGS w/ extended header using the upper three bits of
      cdb byte 1 was not processed correctly in transport_generic_cmd_sequencer,
      as well as the three cases for standby, unavailable, and transition ALUA
      primary access state checks.
      
      Also add MAINTENANCE_IN to the excluded list in transport_generic_prepare_cdb()
      to prevent the PARAMETER DATA FORMAT bits from being cleared.
      
      Cc: Hannes Reinecke <hare@suse.de>
      Cc: Rob Evers <revers@redhat.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Roland Dreier <roland@purestorage.com>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      target: use correct sense code for LUN communication failure
      
      commit 18a9df42d53fabfa43b78be1104838cc8b9762e1 upstream.
      
      The ASC/ASCQ code for 'Logical Unit Communication failure' is
      0x08/0x00; 0x80/0x00 is vendor specific.
      Signed-off-by: default avatarHannes Reinecke <hare@suse.de>
      Cc: Nicholas Bellinger <nab@risingtidesystems.com>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      [bwh: Backported to 3.2: add offset to buffer index]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      target/file: Fix 32-bit highmem breakage for SGL -> iovec mapping
      
      commit 40ff2c3b3da35dd3a00ac6722056a59b4b3f2caf upstream.
      
      This patch changes vectored file I/O to use kmap + kunmap when mapping
      incoming SGL memory -> struct iovec in order to properly support 32-bit
      highmem configurations.  This is because an extra bounce buffer may be
      required when processing scatterlist pages allocated with GFP_KERNEL.
      Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      [bwh: Backported to 3.2: use task->task_sg{,_nents} for iteration]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      serial: pch_uart: fix tty-kref leak in dma-rx path
      
      commit 19b85cfb190eb9980eaf416bff96aef4159a430e upstream.
      
      Fix tty_kref leak when tty_buffer_request room fails in dma-rx path.
      
      Note that the tty ref isn't really needed anymore, but as the leak has
      always been there, fixing it before removing should makes it easier to
      backport the fix.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      serial: pch_uart: fix tty-kref leak in rx-error path
      
      commit fc0919c68cb2f75bb1af759315f9d7e2a9443c28 upstream.
      
      Fix tty-kref leak introduced by commit 384e301e ("pch_uart: fix a
      deadlock when pch_uart as console") which never put its tty reference.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tty: Correct tty buffer flush.
      
      commit 64325a3be08d364a62ee8f84b2cf86934bc2544a upstream.
      
        The root of problem is carelessly zeroing pointer(in function __tty_buffer_flush()),
      when another thread can use it. It can be cause of "NULL pointer dereference".
        Main idea of the patch, this is never free last (struct tty_buffer) in the active buffer.
      Only flush the data for ldisc(buf->head->read = buf->head->commit).
      At that moment driver can collect(write) data in buffer without conflict.
      It is repeat behavior of flush_to_ldisc(), only without feeding data to ldisc.
      Signed-off-by: default avatarIlya Zykov <ilya@ilyx.ru>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Fix 4 port and add support for 8 port 'Unknown' PCI serial port cards
      
      commit d13402a4a944e72612a9ec5c9190e35717c02a9d upstream.
      
      I've managed to find an 8 port version of the card 4 port card which was discussed here:
      
      http://marc.info/?l=linux-serial&m=120760744205314&w=2
      
      
      
      Looking back at that thread there were two issues in the original patch.
      
      1) The I/O ports for the UARTs are within BAR2 not BAR0. This can been seen in the original post.
      2) A serial quirk isn't needed as these cards have no memory in BAR0 which makes pci_plx9050_init just return.
      
      This patch fixes the 4 port support to use BAR2, removes the bogus quirk and adds support for the 8 port card.
      
      $ lspci -vvv -n -s 00:08.0
      00:08.0 0780: 10b5:9050 (rev 01)
      	Subsystem: 10b5:1588
      	Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
      	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
      	Interrupt: pin A routed to IRQ 17
      	Region 1: I/O ports at ff00 [size=128]
      	Region 2: I/O ports at fe00 [size=64]
      	Region 3: I/O ports at fd00 [size=8]
      	Capabilities: <access denied>
      	Kernel driver in use: serial
      
      $ dmesg | grep 0000:00:08.0:
      [    0.083320] pci 0000:00:08.0: [10b5:9050] type 0 class 0x000780
      [    0.083355] pci 0000:00:08.0: reg 14: [io  0xff00-0xff7f]
      [    0.083369] pci 0000:00:08.0: reg 18: [io  0xfe00-0xfe3f]
      [    0.083382] pci 0000:00:08.0: reg 1c: [io  0xfd00-0xfd07]
      [    0.083460] pci 0000:00:08.0: PME# supported from D0 D3hot
      [    1.212867] 0000:00:08.0: ttyS4 at I/O 0xfe00 (irq = 17) is a 16550A
      [    1.233073] 0000:00:08.0: ttyS5 at I/O 0xfe08 (irq = 17) is a 16550A
      [    1.253270] 0000:00:08.0: ttyS6 at I/O 0xfe10 (irq = 17) is a 16550A
      [    1.273468] 0000:00:08.0: ttyS7 at I/O 0xfe18 (irq = 17) is a 16550A
      [    1.293666] 0000:00:08.0: ttyS8 at I/O 0xfe20 (irq = 17) is a 16550A
      [    1.313863] 0000:00:08.0: ttyS9 at I/O 0xfe28 (irq = 17) is a 16550A
      [    1.334061] 0000:00:08.0: ttyS10 at I/O 0xfe30 (irq = 17) is a 16550A
      [    1.354258] 0000:00:08.0: ttyS11 at I/O 0xfe38 (irq = 17) is a 16550A
      Signed-off-by: default avatarScott Ashcroft <scott.ashcroft@talk21.com>
      [xr: Backported to 3.4: adjust context]
      Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      8250/16?50: Add support for Broadcom TruManage redirected serial port
      
      commit ebebd49a8eab5e9aa1b1f8f1614ccc3c2120f886 upstream.
      
      Add support for the UART device present in Broadcom TruManage capable
      NetXtreme chips (ie: 5761m 5762, and 5725).
      
      This implementation has a hidden transmit FIFO, so running in single-byte
      interrupt mode results in too many interrupts.  The UART_CAP_HFIFO
      capability was added to track this.  It continues to reload the THR as long
      as the THRE and TSRE bits are set in the LSR up to a specified limit (1024
      is used here).
      Signed-off-by: default avatarStephen Hurd <shurd@broadcom.com>
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      [xr: Backported to 3.4:
       - Adjust filenames
       - Adjust context
       - PORT_BRCM_TRUMANAGE is 22 not 24]
      Cc: Ben Hutchings <ben@decadent.org.uk>
      Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tty/serial: Add support for Altera serial port
      
      commit e06c93cacb82dd147266fd1bdb2d0a0bd45ff2c1 upstream.
      
      Add support for Altera 8250/16550 compatible serial port.
      Signed-off-by: default avatarLey Foon Tan <lftan@altera.com>
      [xr: Backported to 3.4: adjust filenames, context]
      Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mm: highmem: don't treat PKMAP_ADDR(LAST_PKMAP) as a highmem address
      
      commit 498c2280212327858e521e9d21345d4cc2637f54 upstream.
      
      kmap_to_page returns the corresponding struct page for a virtual address
      of an arbitrary mapping.  This works by checking whether the address
      falls in the pkmap region and using the pkmap page tables instead of the
      linear mapping if appropriate.
      
      Unfortunately, the bounds checking means that PKMAP_ADDR(LAST_PKMAP) is
      incorrectly treated as a highmem address and we can end up walking off
      the end of pkmap_page_table and subsequently passing junk to pte_page.
      
      This patch fixes the bound check to stay within the pkmap tables.
      Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      661b8d0c
    • Greg Kroah-Hartman's avatar
      Linux 3.4.92 · 802af5e9
      Greg Kroah-Hartman authored
      
      parisc: fix epoll_pwait syscall on compat kernel
      
      commit ab3e55b119c9653b19ea4edffb86f04db867ac98 upstream.
      
      This bug was detected with the libio-epoll-perl debian package where the
      test case IO-Ppoll-compat.t failed.
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mm/hugetlb.c: add cond_resched_lock() in return_unused_surplus_pages()
      
      commit 7848a4bf51b34f41fcc9bd77e837126d99ae84e3 upstream.
      
      soft lockup in freeing gigantic hugepage fixed in commit 55f67141a892 "mm:
      hugetlb: fix softlockup when a large number of hugepages are freed." can
      happen in return_unused_surplus_pages(), so let's fix it.
      Signed-off-by: default avatarMasayoshi Mizuma <m.mizuma@jp.fujitsu.com>
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: cdc-acm: Remove Motorola/Telit H24 serial interfaces from ACM driver
      
      commit 895d240d1db0b2736d779200788e4c4aea28a0c6 upstream.
      
      By specifying NO_UNION_NORMAL the ACM driver does only use the first two
      USB interfaces (modem data & control). The AT Port, Diagnostic and NMEA
      interfaces are left to the USB serial driver.
      Signed-off-by: default avatarMichael Ulbricht <michael.ulbricht@systec-electronic.com>
      Signed-off-by: default avatarAlexander Stein <alexander.stein@systec-electronic.com>
      Signed-off-by: default avatarOliver Neukum <oliver@neukum.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: cp210x: Add 8281 (Nanotec Plug & Drive)
      
      commit 72b3007951010ce1bbf950e23b19d9839fa905a5 upstream.
      Signed-off-by: default avatarTristan Bruns <tristan@tristanbruns.de>
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: serial: ftdi_sio: add id for Brainboxes serial cards
      
      commit efe26e16b1d93ac0085e69178cc18811629e8fc5 upstream.
      
      Custom VID/PIDs for Brainboxes cards as reported in
      https://bugzilla.redhat.com/show_bug.cgi?id=1071914
      
      Signed-off-by: default avatarMichele Baldessari <michele@acksyn.org>
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: option driver, add support for Telit UE910v2
      
      commit d6de486bc22255779bd54b0fceb4c240962bf146 upstream.
      
      option driver, added VID/PID for Telit UE910v2 modem
      Signed-off-by: default avatarDaniele Palmas <dnlplm@gmail.com>
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Revert "USB: serial: add usbid for dell wwan card to sierra.c"
      
      commit 2e01280d2801c72878cf3a7119eac30077b463d5 upstream.
      
      This reverts commit 1ebca9da
      
      .
      
      This device was erroneously added to the sierra driver even though it's
      not a Sierra device and was already handled by the option driver.
      
      Cc: Richard Farina <sidhayn@gmail.com>
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: io_ti: fix firmware download on big-endian machines
      
      commit 5509076d1b4485ce9fb07705fcbcd2695907ab5b upstream.
      
      During firmware download the device expects memory addresses in
      big-endian byte order. As the wIndex parameter which hold the address is
      sent in little-endian byte order regardless of host byte order, we need
      to use swab16 rather than cpu_to_be16.
      
      Also make sure to handle the struct ti_i2c_desc size parameter which is
      returned in little-endian byte order.
      Reported-by: default avatarLudovic Drolez <ldrolez@debian.org>
      Tested-by: default avatarLudovic Drolez <ldrolez@debian.org>
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: option: add Olivetti Olicard 500
      
      commit 533b3994610f316e5cd61b56d0c4daa15c830f89 upstream.
      
      Device interface layout:
      0: ff/ff/ff - serial
      1: ff/ff/ff - serial AT+PPP
      2: 08/06/50 - storage
      3: ff/ff/ff - serial
      4: ff/ff/ff - QMI/wwan
      Reported-by: default avatarJulio Araujo <julio.araujo@wllctel.com.br>
      Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: option: add Alcatel L800MA
      
      commit dd6b48ecec2ea7d15f28d5e5474388681899a5e1 upstream.
      
      Device interface layout:
      0: ff/ff/ff - serial
      1: ff/00/00 - serial AT+PPP
      2: ff/ff/ff - QMI/wwan
      3: 08/06/50 - storage
      Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: option: add and update a number of CMOTech devices
      
      commit 34f972d6156fe9eea2ab7bb418c71f9d1d5c8e7b upstream.
      
      A number of older CMOTech modems are based on Qualcomm
      chips.  The blacklisted interfaces are QMI/wwan.
      Reported-by: default avatarLars Melin <larsm17@gmail.com>
      Signed-off-by: default avatarBjørn Mork <bjorn@mork.no>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/vmwgfx: correct fb_fix_screeninfo.line_length
      
      commit aa6de142c901cd2d90ef08db30ae87da214bedcc upstream.
      
      Previously, the vmwgfx_fb driver would allow users to call FBIOSET_VINFO, but it would not adjust
      the FINFO properly, resulting in distorted screen rendering. The patch corrects that behaviour.
      
      See https://bugs.gentoo.org/show_bug.cgi?id=494794
      
       for examples.
      Signed-off-by: default avatarChristopher Friedt <chrisfriedt@gmail.com>
      Reviewed-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon: call drm_edid_to_eld when we update the edid
      
      commit 16086279353cbfecbb3ead474072dced17b97ddc upstream.
      
      This needs to be done to update some of the fields in
      the connector structure used by the audio code.
      
      Noticed by several users on irc.
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      list: introduce list_next_entry() and list_prev_entry()
      
      [ Upstream commit 008208c6b26f21c2648c250a09c55e737c02c5f8 ]
      
      Add two trivial helpers list_next_entry() and list_prev_entry(), they
      can have a lot of users including list.h itself.  In fact the 1st one is
      already defined in events/core.c and bnx2x_sp.c, so the patch simply
      moves the definition to list.h.
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Cc: Eilon Greenstein <eilong@broadcom.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      net: sctp: wake up all assocs if sndbuf policy is per socket
      
      [ Upstream commit 52c35befb69b005c3fc5afdaae3a5717ad013411 ]
      
      SCTP charges chunks for wmem accounting via skb->truesize in
      sctp_set_owner_w(), and sctp_wfree() respectively as the
      reverse operation. If a sender runs out of wmem, it needs to
      wait via sctp_wait_for_sndbuf(), and gets woken up by a call
      to __sctp_write_space() mostly via sctp_wfree().
      
      __sctp_write_space() is being called per association. Although
      we assign sk->sk_write_space() to sctp_write_space(), which
      is then being done per socket, it is only used if send space
      is increased per socket option (SO_SNDBUF), as SOCK_USE_WRITE_QUEUE
      is set and therefore not invoked in sock_wfree().
      
      Commit 4c3a5bdae293 ("sctp: Don't charge for data in sndbuf
      again when transmitting packet") fixed an issue where in case
      sctp_packet_transmit() manages to queue up more than sndbuf
      bytes, sctp_wait_for_sndbuf() will never be woken up again
      unless it is interrupted by a signal. However, a still
      remaining issue is that if net.sctp.sndbuf_policy=0, that is
      accounting per socket, and one-to-many sockets are in use,
      the reclaimed write space from sctp_wfree() is 'unfairly'
      handed back on the server to the association that is the lucky
      one to be woken up again via __sctp_write_space(), while
      the remaining associations are never be woken up again
      (unless by a signal).
      
      The effect disappears with net.sctp.sndbuf_policy=1, that
      is wmem accounting per association, as it guarantees a fair
      share of wmem among associations.
      
      Therefore, if we have reclaimed memory in case of per socket
      accounting, wake all related associations to a socket in a
      fair manner, that is, traverse the socket association list
      starting from the current neighbour of the association and
      issue a __sctp_write_space() to everyone until we end up
      waking ourselves. This guarantees that no association is
      preferred over another and even if more associations are
      taken into the one-to-many session, all receivers will get
      messages from the server and are not stalled forever on
      high load. This setting still leaves the advantage of per
      socket accounting in touch as an association can still use
      up global limits if unused by others.
      
      Fixes: 4eb701df
      
       ("[SCTP] Fix SCTP sendbuffer accouting.")
      Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Cc: Thomas Graf <tgraf@suug.ch>
      Cc: Neil Horman <nhorman@tuxdriver.com>
      Cc: Vlad Yasevich <vyasevic@redhat.com>
      Acked-by: default avatarVlad Yasevich <vyasevic@redhat.com>
      Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      net: sctp: test if association is dead in sctp_wake_up_waiters
      
      [ Upstream commit 1e1cdf8ac78793e0875465e98a648df64694a8d0 ]
      
      In function sctp_wake_up_waiters(), we need to involve a test
      if the association is declared dead. If so, we don't have any
      reference to a possible sibling association anymore and need
      to invoke sctp_write_space() instead, and normally walk the
      socket's associations and notify them of new wmem space. The
      reason for special casing is that otherwise, we could run
      into the following issue when a sctp_primitive_SEND() call
      from sctp_sendmsg() fails, and tries to flush an association's
      outq, i.e. in the following way:
      
      sctp_association_free()
      `-> list_del(&asoc->asocs)         <-- poisons list pointer
          asoc->base.dead = true
          sctp_outq_free(&asoc->outqueue)
          `-> __sctp_outq_teardown()
           `-> sctp_chunk_free()
            `-> consume_skb()
             `-> sctp_wfree()
              `-> sctp_wake_up_waiters() <-- dereferences poisoned pointers
                                             if asoc->ep->sndbuf_policy=0
      
      Therefore, only walk the list in an 'optimized' way if we find
      that the current association is still active. We could also use
      list_del_init() in addition when we call sctp_association_free(),
      but as Vlad suggests, we want to trap such bugs and thus leave
      it poisoned as is.
      
      Why is it safe to resolve the issue by testing for asoc->base.dead?
      Parallel calls to sctp_sendmsg() are protected under socket lock,
      that is lock_sock()/release_sock(). Only within that path under
      lock held, we're setting skb/chunk owner via sctp_set_owner_w().
      Eventually, chunks are freed directly by an association still
      under that lock. So when traversing association list on destruction
      time from sctp_wake_up_waiters() via sctp_wfree(), a different
      CPU can't be running sctp_wfree() while another one calls
      sctp_association_free() as both happens under the same lock.
      Therefore, this can also not race with setting/testing against
      asoc->base.dead as we are guaranteed for this to happen in order,
      under lock. Further, Vlad says: the times we check asoc->base.dead
      is when we've cached an association pointer for later processing.
      In between cache and processing, the association may have been
      freed and is simply still around due to reference counts. We check
      asoc->base.dead under a lock, so it should always be safe to check
      and not race against sctp_association_free(). Stress-testing seems
      fine now, too.
      
      Fixes: cd253f9f357d ("net: sctp: wake up all assocs if sndbuf policy is per socket")
      Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Cc: Vlad Yasevich <vyasevic@redhat.com>
      Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Acked-by: default avatarVlad Yasevich <vyasevic@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      l2tp: take PMTU from tunnel UDP socket
      
      [ Upstream commit f34c4a35d87949fbb0e0f31eba3c054e9f8199ba ]
      
      When l2tp driver tries to get PMTU for the tunnel destination, it uses
      the pointer to struct sock that represents PPPoX socket, while it
      should use the pointer that represents UDP socket of the tunnel.
      Signed-off-by: default avatarDmitry Petukhov <dmgenp@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      net: core: don't account for udp header size when computing seglen
      
      [ Upstream commit 6d39d589bb76ee8a1c6cde6822006ae0053decff ]
      
      In case of tcp, gso_size contains the tcpmss.
      
      For UFO (udp fragmentation offloading) skbs, gso_size is the fragment
      payload size, i.e. we must not account for udp header size.
      
      Otherwise, when using virtio drivers, a to-be-forwarded UFO GSO packet
      will be needlessly fragmented in the forward path, because we think its
      individual segments are too large for the outgoing link.
      
      Fixes: fe6cc55f3a9a053 ("net: ip, ipv6: handle gso skbs in forwarding path")
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Reported-by: default avatarTobias Brunner <tobias@strongswan.org>
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      bonding: Remove debug_fs files when module init fails
      
      [ Upstream commit db29868653394937037d71dc3545768302dda643 ]
      
      Remove the bonding debug_fs entries when the
      module initialization fails. The debug_fs
      entries should be removed together with all other
      already allocated resources.
      Signed-off-by: default avatarThomas Richter <tmricht@linux.vnet.ibm.com>
      Signed-off-by: default avatarJay Vosburgh <j.vosburgh@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ipv6: Limit mtu to 65575 bytes
      
      [ Upstream commit 30f78d8ebf7f514801e71b88a10c948275168518 ]
      
      Francois reported that setting big mtu on loopback device could prevent
      tcp sessions making progress.
      
      We do not support (yet ?) IPv6 Jumbograms and cook corrupted packets.
      
      We must limit the IPv6 MTU to (65535 + 40) bytes in theory.
      
      Tested:
      
      ifconfig lo mtu 70000
      netperf -H ::1
      
      Before patch : Throughput :   0.05 Mbits
      
      After patch : Throughput : 35484 Mbits
      Reported-by: default avatarFrancois WELLENREITER <f.wellenreiter@gmail.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Acked-by: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
      Acked-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      filter: prevent nla extensions to peek beyond the end of the message
      
      [ Upstream commit 05ab8f2647e4221cbdb3856dd7d32bd5407316b3 ]
      
      The BPF_S_ANC_NLATTR and BPF_S_ANC_NLATTR_NEST extensions fail to check
      for a minimal message length before testing the supplied offset to be
      within the bounds of the message. This allows the subtraction of the nla
      header to underflow and therefore -- as the data type is unsigned --
      allowing far to big offset and length values for the search of the
      netlink attribute.
      
      The remainder calculation for the BPF_S_ANC_NLATTR_NEST extension is
      also wrong. It has the minuend and subtrahend mixed up, therefore
      calculates a huge length value, allowing to overrun the end of the
      message while looking for the netlink attribute.
      
      The following three BPF snippets will trigger the bugs when attached to
      a UNIX datagram socket and parsing a message with length 1, 2 or 3.
      
       ,-[ PoC for missing size check in BPF_S_ANC_NLATTR ]--
       | ld	#0x87654321
       | ldx	#42
       | ld	#nla
       | ret	a
       `---
      
       ,-[ PoC for the same bug in BPF_S_ANC_NLATTR_NEST ]--
       | ld	#0x87654321
       | ldx	#42
       | ld	#nlan
       | ret	a
       `---
      
       ,-[ PoC for wrong remainder calculation in BPF_S_ANC_NLATTR_NEST ]--
       | ; (needs a fake netlink header at offset 0)
       | ld	#0
       | ldx	#42
       | ld	#nlan
       | ret	a
       `---
      
      Fix the first issue by ensuring the message length fulfills the minimal
      size constrains of a nla header. Fix the second bug by getting the math
      for the remainder calculation right.
      
      Fixes: 4738c1db ("[SKFILTER]: Add SKF_ADF_NLATTR instruction")
      Fixes: d214c753
      
       ("filter: add SKF_AD_NLATTR_NEST to look for nested..")
      Cc: Patrick McHardy <kaber@trash.net>
      Cc: Pablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarMathias Krause <minipli@googlemail.com>
      Acked-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tg3: update rx_jumbo_pending ring param only when jumbo frames are enabled
      
      The patch fixes a problem with dropped jumbo frames after usage of
      'ethtool -G ... rx'.
      
      Scenario:
      1. ip link set eth0 up
      2. ethtool -G eth0 rx N # <- This zeroes rx-jumbo
      3. ip link set mtu 9000 dev eth0
      
      The ethtool command set rx_jumbo_pending to zero so any received jumbo
      packets are dropped and you need to use 'ethtool -G eth0 rx-jumbo N'
      to workaround the issue.
      The patch changes the logic so rx_jumbo_pending value is changed only if
      jumbo frames are enabled (MTU > 1500).
      Signed-off-by: default avatarIvan Vecera <ivecera@redhat.com>
      Acked-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      rtnetlink: Warn when interface's information won't fit in our packet
      
      [ Upstream commit 973462bbde79bb827824c73b59027a0aed5c9ca6 ]
      
      Without IFLA_EXT_MASK specified, the information reported for a single
      interface in response to RTM_GETLINK is expected to fit within a netlink
      packet of NLMSG_GOODSIZE.
      
      If it doesn't, however, things will go badly wrong,  When listing all
      interfaces, netlink_dump() will incorrectly treat -EMSGSIZE on the first
      message in a packet as the end of the listing and omit information for
      that interface and all subsequent ones.  This can cause getifaddrs(3) to
      enter an infinite loop.
      
      This patch won't fix the problem, but it will WARN_ON() making it easier to
      track down what's going wrong.
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: default avatarJiri Pirko <jpirko@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      rtnetlink: Only supply IFLA_VF_PORTS information when RTEXT_FILTER_VF is set
      
      [ Upstream commit c53864fd60227de025cb79e05493b13f69843971 ]
      
      Since 115c9b81
      
       (rtnetlink: Fix problem with
      buffer allocation), RTM_NEWLINK messages only contain the IFLA_VFINFO_LIST
      attribute if they were solicited by a GETLINK message containing an
      IFLA_EXT_MASK attribute with the RTEXT_FILTER_VF flag.
      
      That was done because some user programs broke when they received more data
      than expected - because IFLA_VFINFO_LIST contains information for each VF
      it can become large if there are many VFs.
      
      However, the IFLA_VF_PORTS attribute, supplied for devices which implement
      ndo_get_vf_port (currently the 'enic' driver only), has the same problem.
      It supplies per-VF information and can therefore become large, but it is
      not currently conditional on the IFLA_EXT_MASK value.
      
      Worse, it interacts badly with the existing EXT_MASK handling.  When
      IFLA_EXT_MASK is not supplied, the buffer for netlink replies is fixed at
      NLMSG_GOODSIZE.  If the information for IFLA_VF_PORTS exceeds this, then
      rtnl_fill_ifinfo() returns -EMSGSIZE on the first message in a packet.
      netlink_dump() will misinterpret this as having finished the listing and
      omit data for this interface and all subsequent ones.  That can cause
      getifaddrs(3) to enter an infinite loop.
      
      This patch addresses the problem by only supplying IFLA_VF_PORTS when
      IFLA_EXT_MASK is supplied with the RTEXT_FILTER_VF flag set.
      Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
      Reviewed-by: default avatarJiri Pirko <jiri@resnulli.us>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Revert "macvlan : fix checksums error when we are in bridge mode"
      
      [ Upstream commit f114890cdf84d753f6b41cd0cc44ba51d16313da ]
      
      This reverts commit 12a2856b
      
      .
      The commit above doesn't appear to be necessary any more as the
      checksums appear to be correctly computed/validated.
      
      Additionally the above commit breaks kvm configurations where
      one VM is using a device that support checksum offload (virtio) and
      the other VM does not.
      In this case, packets leaving virtio device will have CHECKSUM_PARTIAL
      set.  The packets is forwarded to a macvtap that has offload features
      turned off.  Since we use CHECKSUM_UNNECESSARY, the host does does not
      update the checksum and thus a bad checksum is passed up to
      the guest.
      
      CC: Daniel Lezcano <daniel.lezcano@free.fr>
      CC: Patrick McHardy <kaber@trash.net>
      CC: Andrian Nord <nightnord@gmail.com>
      CC: Eric Dumazet <eric.dumazet@gmail.com>
      CC: Michael S. Tsirkin <mst@redhat.com>
      CC: Jason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarVlad Yasevich <vyasevic@redhat.com>
      Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Acked-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tcp_cubic: fix the range of delayed_ack
      
      [ Upstream commit 0cda345d1b2201dd15591b163e3c92bad5191745 ]
      
      commit b9f47a3a (tcp_cubic: limit delayed_ack ratio to prevent
      divide error) try to prevent divide error, but there is still a little
      chance that delayed_ack can reach zero. In case the param cnt get
      negative value, then ratio+cnt would overflow and may happen to be zero.
      As a result, min(ratio, ACK_RATIO_LIMIT) will calculate to be zero.
      
      In some old kernels, such as 2.6.32, there is a bug that would
      pass negative param, which then ultimately leads to this divide error.
      
      commit 5b35e1e6
      
       (tcp: fix tcp_trim_head() to adjust segment count
      with skb MSS) fixed the negative param issue. However,
      it's safe that we fix the range of delayed_ack as well,
      to make sure we do not hit a divide by zero.
      
      CC: Stephen Hemminger <shemminger@vyatta.com>
      Signed-off-by: default avatarLiu Yu <allanyuliu@tencent.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      net: ipv4: ip_forward: fix inverted local_df test
      
      [ Upstream commit ca6c5d4ad216d5942ae544bbf02503041bd802aa ]
      
      local_df means 'ignore DF bit if set', so if its set we're
      allowed to perform ip fragmentation.
      
      This wasn't noticed earlier because the output path also drops such skbs
      (and emits needed icmp error) and because netfilter ip defrag did not
      set local_df until couple of days ago.
      
      Only difference is that DF-packets-larger-than MTU now discarded
      earlier (f.e. we avoid pointless netfilter postrouting trip).
      
      While at it, drop the repeated test ip_exceeds_mtu, checking it once
      is enough...
      
      Fixes: fe6cc55f3a9 ("net: ip, ipv6: handle gso skbs in forwarding path")
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ipv4: fib_semantics: increment fib_info_cnt after fib_info allocation
      
      [ Upstream commit aeefa1ecfc799b0ea2c4979617f14cecd5cccbfd ]
      
      Increment fib_info_cnt in fib_create_info() right after successfuly
      alllocating fib_info structure, overwise fib_metrics allocation failure
      leads to fib_info_cnt incorrectly decremented in free_fib_info(), called
      on error path from fib_create_info().
      Signed-off-by: default avatarSergey Popovich <popovich_sergei@mail.ru>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      act_mirred: do not drop packets when fails to mirror it
      
      [ Upstream commit 16c0b164bd24d44db137693a36b428ba28970c62 ]
      
      We drop packet unconditionally when we fail to mirror it. This is not intended
      in some cases. Consdier for kvm guest, we may mirror the traffic of the bridge
      to a tap device used by a VM. When kernel fails to mirror the packet in
      conditions such as when qemu crashes or stop polling the tap, it's hard for the
      management software to detect such condition and clean the the mirroring
      before. This would lead all packets to the bridge to be dropped and break the
      netowrk of other virtual machines.
      
      To solve the issue, the patch does not drop packets when kernel fails to mirror
      it, and only drop the redirected packets.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Signed-off-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ipv4: initialise the itag variable in __mkroute_input
      
      [ Upstream commit fbdc0ad095c0a299e9abf5d8ac8f58374951149a ]
      
      the value of itag is a random value from stack, and may not be initiated by
      fib_validate_source, which called fib_combine_itag if CONFIG_IP_ROUTE_CLASSID
      is not set
      
      This will make the cached dst uncertainty
      Signed-off-by: default avatarLi RongQing <roy.qing.li@gmail.com>
      Acked-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      skb: Add inline helper for getting the skb end offset from head
      
      [ Upstream commit ec47ea82477404631d49b8e568c71826c9b663ac ]
      
      With the recent changes for how we compute the skb truesize it occurs to me
      we are probably going to have a lot of calls to skb_end_pointer -
      skb->head.  Instead of running all over the place doing that it would make
      more sense to just make it a separate inline skb_end_offset(skb) that way
      we can return the correct value without having gcc having to do all the
      optimization to cancel out skb->head - skb->head.
      Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@intel.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      net-gro: reset skb->truesize in napi_reuse_skb()
      
      [ Upstream commit e33d0ba8047b049c9262fdb1fcafb93cb52ceceb ]
      
      Recycling skb always had been very tough...
      
      This time it appears GRO layer can accumulate skb->truesize
      adjustments made by drivers when they attach a fragment to skb.
      
      skb_gro_receive() can only subtract from skb->truesize the used part
      of a fragment.
      
      I spotted this problem seeing TcpExtPruneCalled and
      TcpExtTCPRcvCollapsed that were unexpected with a recent kernel, where
      TCP receive window should be sized properly to accept traffic coming
      from a driver not overshooting skb->truesize.
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ftrace/module: Hardcode ftrace_module_init() call into load_module()
      
      commit a949ae560a511fe4e3adf48fa44fefded93e5c2b upstream.
      
      A race exists between module loading and enabling of function tracer.
      
      	CPU 1				CPU 2
      	-----				-----
        load_module()
         module->state = MODULE_STATE_COMING
      
      				register_ftrace_function()
      				 mutex_lock(&ftrace_lock);
      				 ftrace_startup()
      				  update_ftrace_function();
      				   ftrace_arch_code_modify_prepare()
      				    set_all_module_text_rw();
      				   <enables-ftrace>
      				    ftrace_arch_code_modify_post_process()
      				     set_all_module_text_ro();
      
      				[ here all module text is set to RO,
      				  including the module that is
      				  loading!! ]
      
         blocking_notifier_call_chain(MODULE_STATE_COMING);
          ftrace_init_module()
      
           [ tries to modify code, but it's RO, and fails!
             ftrace_bug() is called]
      
      When this race happens, ftrace_bug() will produces a nasty warning and
      all of the function tracing features will be disabled until reboot.
      
      The simple solution is to treate module load the same way the core
      kernel is treated at boot. To hardcode the ftrace function modification
      of converting calls to mcount into nops. This is done in init/main.c
      there's no reason it could not be done in load_module(). This gives
      a better control of the changes and doesn't tie the state of the
      module to its notifiers as much. Ftrace is special, it needs to be
      treated as such.
      
      The reason this would work, is that the ftrace_module_init() would be
      called while the module is in MODULE_STATE_UNFORMED, which is ignored
      by the set_all_module_text_ro() call.
      
      Link: http://lkml.kernel.org/r/1395637826-3312-1-git-send-email-indou.takao@jp.fujitsu.com
      
      Reported-by: default avatarTakao Indoh <indou.takao@jp.fujitsu.com>
      Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      pata_at91: fix ata_host_activate() failure handling
      
      commit 27aa64b9d1bd0d23fd692c91763a48309b694311 upstream.
      
      Add missing clk_put() call to ata_host_activate() failure path.
      
      Sergei says,
      
        "Hm, I have once fixed that (see that *if* (!ret)) but looks like a
         later commit 477c87e9
      
       (ARM:
         at91/pata: use gpio_is_valid to check the gpio) broke it again. :-(
         Would be good if the changelog did mention that..."
      
      Cc: Andrew Victor <linux@maxim.org.za>
      Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
      Cc: Jean-Christophe Plagniol-Villard <plagnioj@jcrosoft.com>
      Cc: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mm: make fixup_user_fault() check the vma access rights too
      
      commit 1b17844b29ae042576bea588164f2f1e9590a8bc upstream.
      
      fixup_user_fault() is used by the futex code when the direct user access
      fails, and the futex code wants it to either map in the page in a usable
      form or return an error.  It relied on handle_mm_fault() to map the
      page, and correctly checked the error return from that, but while that
      does map the page, it doesn't actually guarantee that the page will be
      mapped with sufficient permissions to be then accessed.
      
      So do the appropriate tests of the vma access rights by hand.
      
      [ Side note: arguably handle_mm_fault() could just do that itself, but
        we have traditionally done it in the caller, because some callers -
        notably get_user_pages() - have been able to access pages even when
        they are mapped with PROT_NONE.  Maybe we should re-visit that design
        decision, but in the meantime this is the minimal patch. ]
      
      Found by Dave Jones running his trinity tool.
      Reported-by: default avatarDave Jones <davej@redhat.com>
      Acked-by: default avatarHugh Dickins <hughd@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      timer: Prevent overflow in apply_slack
      
      commit 98a01e779f3c66b0b11cd7e64d531c0e41c95762 upstream.
      
      On architectures with sizeof(int) < sizeof (long), the
      computation of mask inside apply_slack() can be undefined if the
      computed bit is > 32.
      
      E.g. with: expires = 0xffffe6f5 and slack = 25, we get:
      
      expires_limit = 0x20000000e
      bit = 33
      mask = (1 << 33) - 1  /* undefined */
      
      On x86, mask becomes 1 and and the slack is not applied properly.
      On s390, mask is -1, expires is set to 0 and the timer fires immediately.
      
      Use 1UL << bit to solve that issue.
      Suggested-by: default avatarDeborah Townsend <dstownse@us.ibm.com>
      Signed-off-by: default avatarJiri Bohac <jbohac@suse.cz>
      Link: http://lkml.kernel.org/r/20140418152310.GA13654@midget.suse.cz
      
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ipmi: Fix a race restarting the timer
      
      commit 48e8ac2979920ffa39117e2d725afa3a749bfe8d upstream.
      
      With recent changes it is possible for the timer handler to detect an
      idle interface and not start the timer, but the thread to start an
      operation at the same time.  The thread will not start the timer in that
      instance, resulting in the timer not running.
      
      Instead, move all timer operations under the lock and start the timer in
      the thread if it detect non-idle and the timer is not already running.
      Moving under locks allows the last timeout to be set in both the thread
      and the timer.  'Timer is not running' means that the timer is not
      pending and smi_timeout() is not running.  So we need a flag to detect
      this correctly.
      
      Also fix a few other timeout bugs: setting the last timeout when the
      interrupt has to be disabled and the timer started, and setting the last
      timeout in check_start_timer_thread possibly racing with the timer
      Signed-off-by: default avatarCorey Minyard <cminyard@mvista.com>
      Signed-off-by: default avatarBodo Stroesser <bstroesser@ts.fujitsu.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ipmi: Reset the KCS timeout when starting error recovery
      
      commit eb6d78ec213e6938559b801421d64714dafcf4b2 upstream.
      
      The OBF timer in KCS was not reset in one situation when error recovery
      was started, resulting in an immediate timeout.
      Reported-by: default avatarBodo Stroesser <bstroesser@ts.fujitsu.com>
      Signed-off-by: default avatarCorey Minyard <cminyard@mvista.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86, mm, hugetlb: Add missing TLB page invalidation for hugetlb_cow()
      
      commit 9844f5462392b53824e8b86726e7c33b5ecbb676 upstream.
      
      The invalidation is required in order to maintain proper semantics
      under CoW conditions. In scenarios where a process clones several
      threads, a thread operating on a core whose DTLB entry for a
      particular hugepage has not been invalidated, will be reading from
      the hugepage that belongs to the forked child process, even after
      hugetlb_cow().
      
      The thread will not see the updated page as long as the stale DTLB
      entry remains cached, the thread attempts to write into the page,
      the child process exits, or the thread gets migrated to a different
      processor.
      Signed-off-by: default avatarAnthony Iliopoulos <anthony.iliopoulos@huawei.com>
      Link: http://lkml.kernel.org/r/20140514092948.GA17391@server-36.huawei.corp
      
      Suggested-by: default avatarShay Goikhman <shay.goikhman@huawei.com>
      Acked-by: default avatarDave Hansen <dave.hansen@intel.com>
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hwpoison, hugetlb: lock_page/unlock_page does not match for handling a free hugepage
      
      commit b985194c8c0a130ed155b71662e39f7eaea4876f upstream.
      
      For handling a free hugepage in memory failure, the race will happen if
      another thread hwpoisoned this hugepage concurrently.  So we need to
      check PageHWPoison instead of !PageHWPoison.
      
      If hwpoison_filter(p) returns true or a race happens, then we need to
      unlock_page(hpage).
      Signed-off-by: default avatarChen Yucong <slaoub@gmail.com>
      Reviewed-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Tested-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hwmon: (emc1403) fix inverted store_hyst()
      
      commit 17c048fc4bd95efea208a1920f169547d8588f1f upstream.
      
      Attempts to set the hysteresis value to a temperature below the target
      limit fails with "write error: Numerical result out of range" due to
      an inverted comparison.
      Signed-off-by: default avatarJosef Gajdusek <atx@atx.name>
      Reviewed-by: default avatarJean Delvare <jdelvare@suse.de>
      [Guenter Roeck: Updated headline and description]
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hwmon: (emc1403) Support full range of known chip revision numbers
      
      commit 3a18e1398fc2dc9c32bbdc50664da3a77959a8d1 upstream.
      
      The datasheet for EMC1413/EMC1414, which is fully compatible to
      EMC1403/1404 and uses the same chip identification, references revision
      numbers 0x01, 0x03, and 0x04. Accept the full range of revision numbers
      from 0x01 to 0x04 to make sure none are missed.
      Signed-off-by: default avatarJosef Gajdusek <atx@atx.name>
      [Guenter Roeck: Updated headline and description]
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drivercore: deferral race condition fix
      
      commit 58b116bce13612e5aa6fcd49ecbd4cf8bb59e835 upstream.
      
      When the kernel is built with CONFIG_PREEMPT it is possible to reach a state
      when all modules loaded but some driver still stuck in the deferred list
      and there is a need for external event to kick the deferred queue to probe
      these drivers.
      
      The issue has been observed on embedded systems with CONFIG_PREEMPT enabled,
      audio support built as modules and using nfsroot for root filesystem.
      
      The following log fragment shows such sequence when all audio modules
      were loaded but the sound card is not present since the machine driver has
      failed to probe due to missing dependency during it's probe.
      The board is am335x-evmsk (McASP<->tlv320aic3106 codec) with davinci-evm
      machine driver:
      
      ...
      [   12.615118] davinci-mcasp 4803c000.mcasp: davinci_mcasp_probe: ENTER
      [   12.719969] davinci_evm sound.3: davinci_evm_probe: ENTER
      [   12.725753] davinci_evm sound.3: davinci_evm_probe: snd_soc_register_card
      [   12.753846] davinci-mcasp 4803c000.mcasp: davinci_mcasp_probe: snd_soc_register_component
      [   12.922051] davinci-mcasp 4803c000.mcasp: davinci_mcasp_probe: snd_soc_register_component DONE
      [   12.950839] davinci_evm sound.3: ASoC: platform (null) not registered
      [   12.957898] davinci_evm sound.3: davinci_evm_probe: snd_soc_register_card DONE (-517)
      [   13.099026] davinci-mcasp 4803c000.mcasp: Kicking the deferred list
      [   13.177838] davinci-mcasp 4803c000.mcasp: really_probe: probe_count = 2
      [   13.194130] davinci_evm sound.3: snd_soc_register_card failed (-517)
      [   13.346755] davinci_mcasp_driver_init: LEAVE
      [   13.377446] platform sound.3: Driver davinci_evm requests probe deferral
      [   13.592527] platform sound.3: really_probe: probe_count = 0
      
      In the log the machine driver enters it's probe at 12.719969 (this point it
      has been removed from the deferred lists). McASP driver already executing
      it's probing (since 12.615118).
      The machine driver tries to construct the sound card (12.950839) but did
      not found one of the components so it fails. After this McASP driver
      registers all the ASoC components (the machine driver still in it's probe
      function after it failed to construct the card) and the deferred work is
      prepared at 13.099026 (note that this time the machine driver is not in the
      lists so it is not going to be handled when the work is executing).
      Lastly the machine driver exit from it's probe and the core places it to
      the deferred list but there will be no other driver going to load and the
      deferred queue is not going to be kicked again - till we have external event
      like connecting USB stick, etc.
      
      The proposed solution is to try the deferred queue once more when the last
      driver is asking for deferring and we had drivers loaded while this last
      driver was probing.
      
      This way we can avoid drivers stuck in the deferred queue.
      Signed-off-by: default avatarGrant Likely <grant.likely@linaro.org>
      Reviewed-by: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
      Tested-by: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
      Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Mark Brown <broonie@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hrtimer: Prevent all reprogramming if hang detected
      
      commit 6c6c0d5a1c949d2e084706f9e5fb1fccc175b265 upstream.
      
      If the last hrtimer interrupt detected a hang it sets hang_detected=1
      and programs the clock event device with a delay to let the system
      make progress.
      
      If hang_detected == 1, we prevent reprogramming of the clock event
      device in hrtimer_reprogram() but not in hrtimer_force_reprogram().
      
      This can lead to the following situation:
      
      hrtimer_interrupt()
         hang_detected = 1;
         program ce device to Xms from now (hang delay)
      
      We have two timers pending:
         T1 expires 50ms from now
         T2 expires 5s from now
      
      Now T1 gets canceled, which causes hrtimer_force_reprogram() to be
      invoked, which in turn programs the clock event device to T2 (5
      seconds from now).
      
      Any hrtimer_start after that will not reprogram the hardware due to
      hang_detected still being set. So we effectivly block all timers until
      the T2 event fires and cleans up the hang situation.
      
      Add a check for hang_detected to hrtimer_force_reprogram() which
      prevents the reprogramming of the hang delay in the hardware
      timer. The subsequent hrtimer_interrupt will resolve all outstanding
      issues.
      
      [ tglx: Rewrote subject and changelog and fixed up the comment in
        	hrtimer_force_reprogram() ]
      Signed-off-by: default avatarStuart Hayes <stuart.w.hayes@gmail.com>
      Link: http://lkml.kernel.org/r/53602DC6.2060101@gmail.com
      
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hrtimer: Prevent remote enqueue of leftmost timers
      
      commit 012a45e3f4af68e86d85cce060c6c2fed56498b2 upstream.
      
      If a cpu is idle and starts an hrtimer which is not pinned on that
      same cpu, the nohz code might target the timer to a different cpu.
      
      In the case that we switch the cpu base of the timer we already have a
      sanity check in place, which determines whether the timer is earlier
      than the current leftmost timer on the target cpu. In that case we
      enqueue the timer on the current cpu because we cannot reprogram the
      clock event device on the target.
      
      If the timers base is already the target CPU we do not have this
      sanity check in place so we enqueue the timer as the leftmost timer in
      the target cpus rb tree, but we cannot reprogram the clock event
      device on the target cpu. So the timer expires late and subsequently
      prevents the reprogramming of the target cpu clock event device until
      the previously programmed event fires or a timer with an earlier
      expiry time gets enqueued on the target cpu itself.
      
      Add the same target check as we have for the switch base case and
      start the timer on the current cpu if it would become the leftmost
      timer on the target.
      
      [ tglx: Rewrote subject and changelog ]
      Signed-off-by: default avatarLeon Ma <xindong.ma@intel.com>
      Link: http://lkml.kernel.org/r/1398847391-5994-1-git-send-email-xindong.ma@intel.com
      
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hrtimer: Set expiry time before switch_hrtimer_base()
      
      commit 84ea7fe37908254c3bd90910921f6e1045c1747a upstream.
      
      switch_hrtimer_base() calls hrtimer_check_target() which ensures that
      we do not migrate a timer to a remote cpu if the timer expires before
      the current programmed expiry time on that remote cpu.
      
      But __hrtimer_start_range_ns() calls switch_hrtimer_base() before the
      new expiry time is set. So the sanity check in hrtimer_check_target()
      is operating on stale or even uninitialized data.
      
      Update expiry time before calling switch_hrtimer_base().
      
      [ tglx: Rewrote changelog once again ]
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Cc: linaro-kernel@lists.linaro.org
      Cc: linaro-networking@linaro.org
      Cc: fweisbec@gmail.com
      Cc: arvind.chauhan@arm.com
      Link: http://lkml.kernel.org/r/81999e148745fc51bbcd0615823fbab9b2e87e23.1399882253.git.viresh.kumar@linaro.org
      
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      md: avoid possible spinning md thread at shutdown.
      
      commit 0f62fb220aa4ebabe8547d3a9ce4a16d3c045f21 upstream.
      
      If an md array with externally managed metadata (e.g. DDF or IMSM)
      is in use, then we should not set safemode==2 at shutdown because:
      
      1/ this is ineffective: user-space need to be involved in any 'safemode' handling,
      2/ The safemode management code doesn't cope with safemode==2 on external metadata
         and md_check_recover enters an infinite loop.
      
      Even at shutdown, an infinite-looping process can be problematic, so this
      could cause shutdown to hang.
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon: fix ATPX detection on non-VGA GPUs
      
      commit e9a4099a59cc598a44006059dd775c25e422b772 upstream.
      
      Some newer PX laptops have the pci device class
      set to DISPLAY_OTHER rather than DISPLAY_VGA.  This
      properly detects ATPX on those laptops.
      
      Based on a patch from: Pali Rohár <pali.rohar@gmail.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Cc: airlied@gmail.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: gadget: at91-udc: fix irq and iomem resource retrieval
      
      commit 886c7c426d465732ec9d1b2bbdda5642fc2e7e05 upstream.
      
      When using dt resources retrieval (interrupts and reg properties) there is
      no predefined order for these resources in the platform dev resource
      table. Also don't expect the number of resource to be always 2.
      Signed-off-by: default avatarJean-Jacques Hiblot <jjhiblot@traphandler.com>
      Acked-by: default avatarBoris BREZILLON <b.brezillon@overkiz.com>
      Acked-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: storage: shuttle_usbat: fix discs being detected twice
      
      commit df602c2d2358f02c6e49cffc5b49b9daa16db033 upstream.
      
      Even if the USB-to-ATAPI converter supported multiple LUNs, this
      driver would always detect the same physical device or media because
      it doesn't use srb->device->lun in any way.
      Tested with an Hewlett-Packard CD-Writer Plus 8200e.
      Signed-off-by: default avatarDaniele Forsi <dforsi@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: Nokia 305 should be treated as unusual dev
      
      commit f0ef5d41792a46a1085dead9dfb0bdb2c574638e upstream.
      Signed-off-by: default avatarVictor A. Santos <victoraur.santos@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: Nokia 5300 should be treated as unusual dev
      
      commit 6ed07d45d09bc2aa60e27b845543db9972e22a38 upstream.
      Signed-off-by: default avatarDaniele Forsi <dforsi@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      rt2x00: fix beaconing on USB
      
      commit 8834d3608cc516f13e2e510f4057c263f3d2ce42 upstream.
      
      When disable beaconing we clear register with beacon and newer set it
      back, what make we stop send beacons infinitely.
      Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      posix_acl: handle NULL ACL in posix_acl_equiv_mode
      
      commit 50c6e282bdf5e8dabf8d7cf7b162545a55645fd9 upstream.
      
      Various filesystems don't bother checking for a NULL ACL in
      posix_acl_equiv_mode, and thus can dereference a NULL pointer when it
      gets passed one. This usually happens from the NFS server, as the ACL tools
      never pass a NULL ACL, but instead of one representing the mode bits.
      
      Instead of adding boilerplat to all filesystems put this check into one place,
      which will allow us to remove the check from other filesystems as well later
      on.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reported-by: default avatarBen Greear <greearb@candelatech.com>
      Reported-by: Marco Munderloh <munderl@tnt.uni-hannover.de>,
      Cc: Chuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: 8012/1: kdump: Avoid overflow when converting pfn to physaddr
      
      commit 8fad87bca7ac9737e413ba5f1656f1114a8c314d upstream.
      
      When we configure CONFIG_ARM_LPAE=y, pfn << PAGE_SHIFT will
      overflow if pfn >= 0x100000 in copy_oldmem_page.
      So use __pfn_to_phys for converting.
      Signed-off-by: default avatarLiu Hua <sdu.liu@huawei.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      rtl8192cu: Fix unbalanced irq enable in error path of rtl92cu_hw_init()
      
      commit 3234f5b06fc3094176a86772cc64baf3decc98fc upstream.
      
      Fixes: a53268be0cb9 ('rtlwifi: rtl8192cu: Fix too long disable of IRQs')
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/nouveau/acpi: allow non-optimus setups to load vbios from acpi
      
      commit a3d0b1218d351c6e6f3cea36abe22236a08cb246 upstream.
      
      There appear to be a crop of new hardware where the vbios is not
      available from PROM/PRAMIN, but there is a valid _ROM method in ACPI.
      The data read from PCIROM almost invariably contains invalid
      instructions (still has the x86 opcodes), which makes this a low-risk
      way to try to obtain a valid vbios image.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76475
      
      Signed-off-by: default avatarIlia Mirkin <imirkin@alum.mit.edu>
      Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Documentation: Update stable address in Chinese and Japanese translations
      
      commit 98b0f811aade1b7c6e7806c86aa0befd5919d65f upstream.
      
      The English and Korean translations were updated, the Chinese and Japanese
      weren't.
      Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      crypto: crypto_wq - Fix late crypto work queue initialization
      
      commit 130fa5bc81b44b6cc1fbdea3abf6db0da22964e0 upstream.
      
      The crypto algorithm modules utilizing the crypto daemon could
      be used early when the system start up.  Using module_init
      does not guarantee that the daemon's work queue is initialized
      when the cypto alorithm depending on crypto_wq starts.  It is necessary
      to initialize the crypto work queue earlier at the subsystem
      init time to make sure that it is initialized
      when used.
      Signed-off-by: default avatarTim Chen <tim.c.chen@linux.intel.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      media: media-device: fix infoleak in ioctl media_enum_entities()
      
      commit e6a623460e5fc960ac3ee9f946d3106233fd28d8 upstream.
      
      This fixes CVE-2014-1739.
      Signed-off-by: default avatarSalva Peiró <speiro@ai2.upv.es>
      Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      trace: module: Maintain a valid user count
      
      commit 098507ae3ec2331476fb52e85d4040c1cc6d0ef4 upstream.
      
      The replacement of the 'count' variable by two variables 'incs' and
      'decs' to resolve some race conditions during module unloading was done
      in parallel with some cleanup in the trace subsystem, and was integrated
      as a merge.
      
      Unfortunately, the formula for this replacement was wrong in the tracing
      code, and the refcount in the traces was not usable as a result.
      
      Use 'count = incs - decs' to compute the user count.
      
      Link: http://lkml.kernel.org/p/1393924179-9147-1-git-send-email-romain.izard.pro@gmail.com
      
      Acked-by: default avatarIngo Molnar <mingo@kernel.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Fixes: c1ab9cab
      
       "merge conflict resolution"
      Signed-off-by: default avatarRomain Izard <romain.izard.pro@gmail.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      NFSD: Call ->set_acl with a NULL ACL structure if no entries
      
      commit aa07c713ecfc0522916f3cd57ac628ea6127c0ec upstream.
      
      After setting ACL for directory, I got two problems that caused
      by the cached zero-length default posix acl.
      
      This patch make sure nfsd4_set_nfs4_acl calls ->set_acl
      with a NULL ACL structure if there are no entries.
      
      Thanks for Christoph Hellwig's advice.
      
      First problem:
      ............ hang ...........
      
      Second problem:
      [ 1610.167668] ------------[ cut here ]------------
      [ 1610.168320] kernel BUG at /root/nfs/linux/fs/nfsd/nfs4acl.c:239!
      [ 1610.168320] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC
      [ 1610.168320] Modules linked in: nfsv4(OE) nfs(OE) nfsd(OE)
      rpcsec_gss_krb5 fscache ip6t_rpfilter ip6t_REJECT cfg80211 xt_conntrack
      rfkill ebtable_nat ebtable_broute bridge stp llc ebtable_filter ebtables
      ip6table_nat nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv6
      ip6table_mangle ip6table_security ip6table_raw ip6table_filter
      ip6_tables iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4
      nf_nat nf_conntrack iptable_mangle iptable_security iptable_raw
      auth_rpcgss nfs_acl snd_intel8x0 ppdev lockd snd_ac97_codec ac97_bus
      snd_pcm snd_timer e1000 pcspkr parport_pc snd parport serio_raw joydev
      i2c_piix4 sunrpc(OE) microcode soundcore i2c_core ata_generic pata_acpi
      [last unloaded: nfsd]
      [ 1610.168320] CPU: 0 PID: 27397 Comm: nfsd Tainted: G           OE
      3.15.0-rc1+ #15
      [ 1610.168320] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS
      VirtualBox 12/01/2006
      [ 1610.168320] task: ffff88005ab653d0 ti: ffff88005a944000 task.ti:
      ffff88005a944000
      [ 1610.168320] RIP: 0010:[<ffffffffa034d5ed>]  [<ffffffffa034d5ed>]
      _posix_to_nfsv4_one+0x3cd/0x3d0 [nfsd]
      [ 1610.168320] RSP: 0018:ffff88005a945b00  EFLAGS: 00010293
      [ 1610.168320] RAX: 0000000000000001 RBX: ffff88006700bac0 RCX:
      0000000000000000
      [ 1610.168320] RDX: 0000000000000000 RSI: ffff880067c83f00 RDI:
      ffff880068233300
      [ 1610.168320] RBP: ffff88005a945b48 R08: ffffffff81c64830 R09:
      0000000000000000
      [ 1610.168320] R10: ffff88004ea85be0 R11: 000000000000f475 R12:
      ffff880068233300
      [ 1610.168320] R13: 0000000000000003 R14: 0000000000000002 R15:
      ffff880068233300
      [ 1610.168320] FS:  0000000000000000(0000) GS:ffff880077800000(0000)
      knlGS:0000000000000000
      [ 1610.168320] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
      [ 1610.168320] CR2: 00007f5bcbd3b0b9 CR3: 0000000001c0f000 CR4:
      00000000000006f0
      [ 1610.168320] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
      0000000000000000
      [ 1610.168320] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
      0000000000000400
      [ 1610.168320] Stack:
      [ 1610.168320]  ffffffff00000000 0000000b67c83500 000000076700bac0
      0000000000000000
      [ 1610.168320]  ffff88006700bac0 ffff880068233300 ffff88005a945c08
      0000000000000002
      [ 1610.168320]  0000000000000000 ffff88005a945b88 ffffffffa034e2d5
      000000065a945b68
      [ 1610.168320] Call Trace:
      [ 1610.168320]  [<ffffffffa034e2d5>] nfsd4_get_nfs4_acl+0x95/0x150 [nfsd]
      [ 1610.168320]  [<ffffffffa03400d6>] nfsd4_encode_fattr+0x646/0x1e70 [nfsd]
      [ 1610.168320]  [<ffffffff816a6e6e>] ? kmemleak_alloc+0x4e/0xb0
      [ 1610.168320]  [<ffffffffa0327962>] ?
      nfsd_setuser_and_check_port+0x52/0x80 [nfsd]
      [ 1610.168320]  [<ffffffff812cd4bb>] ? selinux_cred_prepare+0x1b/0x30
      [ 1610.168320]  [<ffffffffa0341caa>] nfsd4_encode_getattr+0x5a/0x60 [nfsd]
      [ 1610.168320]  [<ffffffffa0341e07>] nfsd4_encode_operation+0x67/0x110
      [nfsd]
      [ 1610.168320]  [<ffffffffa033844d>] nfsd4_proc_compound+0x21d/0x810 [nfsd]
      [ 1610.168320]  [<ffffffffa0324d9b>] nfsd_dispatch+0xbb/0x200 [nfsd]
      [ 1610.168320]  [<ffffffffa00850cd>] svc_process_common+0x46d/0x6d0 [sunrpc]
      [ 1610.168320]  [<ffffffffa0085433>] svc_process+0x103/0x170 [sunrpc]
      [ 1610.168320]  [<ffffffffa032472f>] nfsd+0xbf/0x130 [nfsd]
      [ 1610.168320]  [<ffffffffa0324670>] ? nfsd_destroy+0x80/0x80 [nfsd]
      [ 1610.168320]  [<ffffffff810a5202>] kthread+0xd2/0xf0
      [ 1610.168320]  [<ffffffff810a5130>] ? insert_kthread_work+0x40/0x40
      [ 1610.168320]  [<ffffffff816c1ebc>] ret_from_fork+0x7c/0xb0
      [ 1610.168320]  [<ffffffff810a5130>] ? insert_kthread_work+0x40/0x40
      [ 1610.168320] Code: 78 02 e9 e7 fc ff ff 31 c0 31 d2 31 c9 66 89 45 ce
      41 8b 04 24 66 89 55 d0 66 89 4d d2 48 8d 04 80 49 8d 5c 84 04 e9 37 fd
      ff ff <0f> 0b 90 0f 1f 44 00 00 55 8b 56 08 c7 07 00 00 00 00 8b 46 0c
      [ 1610.168320] RIP  [<ffffffffa034d5ed>] _posix_to_nfsv4_one+0x3cd/0x3d0
      [nfsd]
      [ 1610.168320]  RSP <ffff88005a945b00>
      [ 1610.257313] ---[ end trace 838254e3e352285b ]---
      Signed-off-by: default avatarKinglong Mee <kinglongmee@gmail.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd4: warn on finding lockowner without stateid's
      
      commit 27b11428b7de097c42f205beabb1764f4365443b upstream.
      
      The current code assumes a one-to-one lockowner<->lock stateid
      correspondance.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd4: remove lockowner when removing lock stateid
      
      commit a1b8ff4c97b4375d21b6d6c45d75877303f61b3b upstream.
      
      The nfsv4 state code has always assumed a one-to-one correspondance
      between lock stateid's and lockowners even if it appears not to in some
      places.
      
      We may actually change that, but for now when FREE_STATEID releases a
      lock stateid it also needs to release the parent lockowner.
      
      Symptoms were a subsequent LOCK crashing in find_lockowner_str when it
      calls same_lockowner_ino on a lockowner that unexpectedly has an empty
      so_stateids list.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      percpu: make pcpu_alloc_chunk() use pcpu_mem_free() instead of kfree()
      
      commit 5a838c3b60e3a36ade764cf7751b8f17d7c9c2da upstream.
      
      pcpu_chunk_struct_size = sizeof(struct pcpu_chunk) +
      	BITS_TO_LONGS(pcpu_unit_pages) * sizeof(unsigned long)
      
      It hardly could be ever bigger than PAGE_SIZE even for large-scale machine,
      but for consistency with its couterpart pcpu_mem_zalloc(),
      use pcpu_mem_free() instead.
      
      Commit b4916cb17c26 ("percpu: make pcpu_free_chunk() use
      pcpu_mem_free() instead of kfree()") addressed this problem, but
      missed this one.
      
      tj: commit message updated
      Signed-off-by: default avatarJianyu Zhan <nasa4836@gmail.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Fixes: 099a19d9
      
       ("percpu: allow limited allocation before slab is online)
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ASoC: wm8962: Update register CLASS_D_CONTROL_1 to be non-volatile
      
      commit 44330ab516c15dda8a1e660eeaf0003f84e43e3f upstream.
      
      The register CLASS_D_CONTROL_1 is marked as volatile because it contains
      a bit, DAC_MUTE, which is also mirrored in the ADC_DAC_CONTROL_1
      register. This causes problems for the "Speaker Switch" control, which
      will report an error if the CODEC is suspended because it relies on a
      volatile register.
      
      To resolve this issue mark CLASS_D_CONTROL_1 as non-volatile and
      manually keep the register cache in sync by updating both bits when
      changing the mute status.
      Reported-by: default avatarShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
      Tested-by: default avatarShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: default avatarMark Brown <broonie@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86-64, modify_ldt: Make support for 16-bit segments a runtime option
      
      commit fa81511bb0bbb2b1aace3695ce869da9762624ff upstream.
      
      Checkin:
      
      b3b42ac2cbae x86-64, modify_ldt: Ban 16-bit segments on 64-bit kernels
      
      disabled 16-bit segments on 64-bit kernels due to an information
      leak.  However, it does seem that people are genuinely using Wine to
      run old 16-bit Windows programs on Linux.
      
      A proper fix for this ("espfix64") is coming in the upcoming merge
      window, but as a temporary fix, create a sysctl to allow the
      administrator to re-enable support for 16-bit segments.
      
      It adds a "/proc/sys/abi/ldt16" sysctl that defaults to zero (off). If
      you hit this issue and care about your old Windows program more than
      you care about a kernel stack address information leak, you can do
      
         echo 1 > /proc/sys/abi/ldt16
      
      as root (add it to your startup scripts), and you should be ok.
      
      The sysctl table is only added if you have COMPAT support enabled on
      x86-64, but I assume anybody who runs old windows binaries very much
      does that ;)
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      Link: http://lkml.kernel.org/r/CA%2B55aFw9BPoD10U1LfHbOMpHWZkvJTkMcfCs9s3urPr1YyWBxw@mail.gmail.com
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      PCI: shpchp: Check bridge's secondary (not primary) bus speed
      
      commit 93fa9d32670f5592c8e56abc9928fc194e1e72fc upstream.
      
      When a new device is added below a hotplug bridge, the bridge's secondary
      bus speed and the device's bus speed must match.  The shpchp driver
      previously checked the bridge's *primary* bus speed, not the secondary bus
      speed.
      
      This caused hot-add errors like:
      
        shpchp 0000:00:03.0: Speed of bus ff and adapter 0 mismatch
      
      Check the secondary bus speed instead.
      
      [bhelgaas: changelog]
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=75251
      Fixes: 3749c51a
      
       ("PCI: Make current and maximum bus speeds part of the PCI core")
      Signed-off-by: default avatarMarcel Apfelbaum <marcel.a@redhat.com>
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ACPI / blacklist: Add dmi_enable_osi_linux quirk for Asus EEE PC 1015PX
      
      commit f6e6e1b9fee88c90586787b71dc49bb3ce62bb89 upstream.
      
      Without this this EEE PC exports a non working WMI interface, with this it
      exports a working "good old" eeepc_laptop interface, fixing brightness control
      not working as well as rfkill being stuck in a permanent wireless blocked
      state.
      
      This is not an ideal way to fix this, but various attempts to fix this
      otherwise have failed, see:
      
      References: https://bugzilla.redhat.com/show_bug.cgi?id=1067181
      
      
      Reported-and-tested-by: lou.cardone@gmail.com
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      i2c: designware: Mask all interrupts during i2c controller enable
      
      commit 47bb27e78867997040a228328f2a631c3c7f2c82 upstream.
      
      There have been "i2c_designware 80860F41:00: controller timed out" errors
      on a number of Baytrail platforms. The issue is caused by incorrect value in
      Interrupt Mask Register (DW_IC_INTR_MASK)  when i2c core is being enabled.
      This causes call to __i2c_dw_enable() to immediately start the transfer which
      leads to timeout. There are 3 failure modes observed:
      
      1. Failure in S0 to S3 resume path
      
      The default value after reset for DW_IC_INTR_MASK is 0x8ff. When we start
      the first transaction after resuming from system sleep, TX_EMPTY interrupt
      is already unmasked because of the hardware default.
      
      2. Failure in normal operational path
      
      This failure happens rarely and is hard to reproduce. Debug trace showed that
      DW_IC_INTR_MASK had value of 0x254 when failure occurred, which meant
      TX_EMPTY was unmasked.
      
      3. Failure in S3 to S0 suspend path
      
      This failure also happens rarely and is hard to reproduce. Adding debug trace
      that read DW_IC_INTR_MASK made this failure not reproducible. But from ISR
      call trace we could conclude TX_EMPTY was unmasked when problem occurred.
      
      The patch masks all interrupts before the controller is enabled to resolve the
      faulty DW_IC_INTR_MASK conditions.
      Signed-off-by: default avatarWenkai Du <wenkai.du@intel.com>
      Acked-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
      [wsa: improved the comment and removed typo in commit msg]
      Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      crypto: caam - add allocation failure handling in SPRINTFCAT macro
      
      commit 27c5fb7a84242b66bf1e0b2fe6bf40d19bcc5c04 upstream.
      
      GFP_ATOMIC memory allocation could fail.
      In this case, avoid NULL pointer dereference and notify user.
      
      Cc: Kim Phillips <kim.phillips@freescale.com>
      Signed-off-by: default avatarHoria Geanta <horia.geanta@freescale.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      setfacl removes part of ACL when setting POSIX ACLs to Samba
      
      commit b1d93356427be6f050dc55c86eb019d173700af6 upstream.
      
      setfacl over cifs mounts can remove the default ACL when setting the
      (non-default part of) the ACL and vice versa (we were leaving at 0
      rather than setting to -1 the count field for the unaffected
      half of the ACL.  For example notice the setfacl removed
      the default ACL in this sequence:
      
      steven@steven-GA-970A-DS3:~/cifs-2.6$ getfacl /mnt/test-dir ; setfacl
      -m default:user:test:rwx,user:test:rwx /mnt/test-dir
      getfacl: Removing leading '/' from absolute path names
      user::rwx
      group::r-x
      other::r-x
      default:user::rwx
      default:user:test:rwx
      default:group::r-x
      default:mask::rwx
      default:other::r-x
      
      steven@steven-GA-970A-DS3:~/cifs-2.6$ getfacl /mnt/test-dir
      getfacl: Removing leading '/' from absolute path names
      user::rwx
      user:test:rwx
      group::r-x
      mask::rwx
      other::r-x
      Signed-off-by: default avatarSteve French <smfrench@gmail.com>
      Acked-by: default avatarJeremy Allison <jra@samba.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      CIFS: Fix error handling in cifs_push_mandatory_locks
      
      commit e2f2886a824ff0a56da1eaa13019fde86aa89fa6 upstream.
      Signed-off-by: default avatarPavel Shilovsky <pshilovsky@etersoft.ru>
      Signed-off-by: default avatarSteve French <smfrench@gmail.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ecryptfs: Fix memory leakage in keystore.c
      
      commit 3edc8376c06133e3386265a824869cad03a4efd4 upstream.
      
      In 'decrypt_pki_encrypted_session_key' function:
      
      Initializes 'payload' pointer and releases it on exit.
      Signed-off-by: default avatarGeyslan G. Bem <geyslan@gmail.com>
      Signed-off-by: default avatarTyler Hicks <tyhicks@canonical.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      fs: cachefiles: add support for large files in filesystem caching
      
      commit 98c350cda2c14a343d34ea01a3d9c24fea5ec66d upstream.
      
      Support the caching of large files.
      
      Addresses https://bugzilla.kernel.org/show_bug.cgi?id=31182
      
      Signed-off-by: default avatarJustin Lecher <jlec@gentoo.org>
      Signed-off-by: default avatarSuresh Jayaraman <sjayaraman@suse.com>
      Tested-by: default avatarSuresh Jayaraman <sjayaraman@suse.com>
      Acked-by: default avatarDavid Howells <dhowells@redhat.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      [bwh: Backported to 3.2:
       - Adjust context
       - dentry_open() takes dentry and vfsmount pointers, not a path pointer]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      perf: Fix perf ring buffer memory ordering
      
      commit bf378d341e4873ed928dc3c636252e6895a21f50 upstream.
      
      The PPC64 people noticed a missing memory barrier and crufty old
      comments in the perf ring buffer code. So update all the comments and
      add the missing barrier.
      
      When the architecture implements local_t using atomic_long_t there
      will be double barriers issued; but short of introducing more
      conditional barrier primitives this is the best we can do.
      Reported-by: default avatarVictor Kaplansky <victork@il.ibm.com>
      Tested-by: default avatarVictor Kaplansky <victork@il.ibm.com>
      Signed-off-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      Cc: michael@ellerman.id.au
      Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
      Cc: Michael Neuling <mikey@neuling.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: anton@samba.org
      Cc: benh@kernel.crashing.org
      Link: http://lkml.kernel.org/r/20131025173749.GG19466@laptop.lan
      
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      [bwh: Backported to 3.2: adjust filename]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ftrace: Check module functions being traced on reload
      
      commit 8c4f3c3fa9681dc549cd35419b259496082fef8b upstream.
      
      There's been a nasty bug that would show up and not give much info.
      The bug displayed the following warning:
      
       WARNING: at kernel/trace/ftrace.c:1529 __ftrace_hash_rec_update+0x1e3/0x230()
       Pid: 20903, comm: bash Tainted: G           O 3.6.11+ #38405.trunk
       Call Trace:
        [<ffffffff8103e5ff>] warn_slowpath_common+0x7f/0xc0
        [<ffffffff8103e65a>] warn_slowpath_null+0x1a/0x20
        [<ffffffff810c2ee3>] __ftrace_hash_rec_update+0x1e3/0x230
        [<ffffffff810c4f28>] ftrace_hash_move+0x28/0x1d0
        [<ffffffff811401cc>] ? kfree+0x2c/0x110
        [<ffffffff810c68ee>] ftrace_regex_release+0x8e/0x150
        [<ffffffff81149f1e>] __fput+0xae/0x220
        [<ffffffff8114a09e>] ____fput+0xe/0x10
        [<ffffffff8105fa22>] task_work_run+0x72/0x90
        [<ffffffff810028ec>] do_notify_resume+0x6c/0xc0
        [<ffffffff8126596e>] ? trace_hardirqs_on_thunk+0x3a/0x3c
        [<ffffffff815c0f88>] int_signal+0x12/0x17
       ---[ end trace 793179526ee09b2c ]---
      
      It was finally narrowed down to unloading a module that was being traced.
      
      It was actually more than that. When functions are being traced, there's
      a table of all functions that have a ref count of the number of active
      tracers attached to that function. When a function trace callback is
      registered to a function, the function's record ref count is incremented.
      When it is unregistered, the function's record ref count is decremented.
      If an inconsistency is detected (ref count goes below zero) the above
      warning is shown and the function tracing is permanently disabled until
      reboot.
      
      The ftrace callback ops holds a hash of functions that it filters on
      (and/or filters off). If the hash is empty, the default means to filter
      all functions (for the filter_hash) or to disable no functions (for the
      notrace_hash).
      
      When a module is unloaded, it frees the function records that represent
      the module functions. These records exist on their own pages, that is
      function records for one module will not exist on the same page as
      function records for other modules or even the core kernel.
      
      Now when a module unloads, the records that represents its functions are
      freed. When the module is loaded again, the records are recreated with
      a default ref count of zero (unless there's a callback that traces all
      functions, then they will also be traced, and the ref count will be
      incremented).
      
      The problem is that if an ftrace callback hash includes functions of the
      module being unloaded, those hash entries will not be removed. If the
      module is reloaded in the same location, the hash entries still point
      to the functions of the module but the module's ref counts do not reflect
      that.
      
      With the help of Steve and Joern, we found a reproducer:
      
       Using uinput module and uinput_release function.
      
       cd /sys/kernel/debug/tracing
       modprobe uinput
       echo uinput_release > set_ftrace_filter
       echo function > current_tracer
       rmmod uinput
       modprobe uinput
       # check /proc/modules to see if loaded in same addr, otherwise try again
       echo nop > current_tracer
      
       [BOOM]
      
      The above loads the uinput module, which creates a table of functions that
      can be traced within the module.
      
      We add uinput_release to the filter_hash to trace just that function.
      
      Enable function tracincg, which increments the ref count of the record
      associated to uinput_release.
      
      Remove uinput, which frees the records including the one that represents
      uinput_release.
      
      Load the uinput module again (and make sure it's at the same address).
      This recreates the function records all with a ref count of zero,
      including uinput_release.
      
      Disable function tracing, which will decrement the ref count for uinput_release
      which is now zero because of the module removal and reload, and we have
      a mismatch (below zero ref count).
      
      The solution is to check all currently tracing ftrace callbacks to see if any
      are tracing any of the module's functions when a module is loaded (it already does
      that with callbacks that trace all functions). If a callback happens to have
      a module function being traced, it increments that records ref count and starts
      tracing that function.
      
      There may be a strange side effect with this, where tracing module functions
      on unload and then reloading a new module may have that new module's functions
      being traced. This may be something that confuses the user, but it's not
      a big deal. Another approach is to disable all callback hashes on module unload,
      but this leaves some ftrace callbacks that may not be registered, but can
      still have hashes tracing the module's function where ftrace doesn't know about
      it. That situation can cause the same bug. This solution solves that case too.
      Another benefit of this solution, is it is possible to trace a module's
      function on unload and load.
      
      Link: http://lkml.kernel.org/r/20130705142629.GA325@redhat.com
      
      Reported-by: default avatarJörn Engel <joern@logfs.org>
      Reported-by: default avatarDave Jones <davej@redhat.com>
      Reported-by: default avatarSteve Hodgson <steve@purestorage.com>
      Tested-by: default avatarSteve Hodgson <steve@purestorage.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      sched/debug: Limit sd->*_idx range on sysctl
      
      commit 201c373e8e4823700d3160d5c28e1ab18fd1193e upstream.
      
      Various sd->*_idx's are used for refering the rq's load average table
      when selecting a cpu to run.  However they can be set to any number
      with sysctl knobs so that it can crash the kernel if something bad is
      given. Fix it by limiting them into the actual range.
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/1345104204-8317-1-git-send-email-namhyung@kernel.org
      
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      sched/debug: Fix sd->*_idx limit range avoiding overflow
      
      commit fd9b86d37a600488dbd80fe60cca46b822bff1cd upstream.
      
      Commit 201c373e8e ("sched/debug: Limit sd->*_idx range on
      sysctl") was an incomplete bug fix.
      
      This patch fixes sd->*_idx limit range to [0 ~ CPU_LOAD_IDX_MAX-1]
      avoiding array overflow caused by setting sd->*_idx to CPU_LOAD_IDX_MAX
      on sysctl.
      Signed-off-by: default avatarLibin <huawei.libin@huawei.com>
      Cc: <jiang.liu@huawei.com>
      Cc: <guohanjun@huawei.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/51626610.2040607@huawei.com
      
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      perf: Fix error return code
      
      commit c481420248c6730246d2a1b1773d5d7007ae0835 upstream.
      
      Fix to return -ENOMEM in the allocation error case instead of 0
      (if pmu_bus_running == 1), as done elsewhere in this function.
      Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Cc: a.p.zijlstra@chello.nl
      Cc: paulus@samba.org
      Cc: acme@ghostprotocols.net
      Link: http://lkml.kernel.org/r/CAPgLHd8j_fWcgqe%3DKLWjpBj%2B%3Do0Pw6Z-SEq%3DNTPU08c2w1tngQ@mail.gmail.com
      
      
      [ Tweaked the error code setting placement and the changelog. ]
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tracing: Keep overwrite in sync between regular and snapshot buffers
      
      commit 80902822658aab18330569587cdb69ac1dfdcea8 upstream.
      
      Changing the overwrite mode for the ring buffer via the trace
      option only sets the normal buffer. But the snapshot buffer could
      swap with it, and then the snapshot would be in non overwrite mode
      and the normal buffer would be in overwrite mode, even though the
      option flag states otherwise.
      
      Keep the two buffers overwrite modes in sync.
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      VFS: make vfs_fstat() use f[get|put]_light()
      
      commit e994defb7b6813ba6fa7a2a36e86d2455ad1dc35 upstream.
      
      Use the *_light() versions that properly avoid doing the file user count
      updates when they are unnecessary.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      [xr: Backported to 3.4: adjust function name]
      Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      cifs: delay super block destruction until all cifsFileInfo objects are gone
      
      commit 24261fc23db950951760d00c188ba63cc756b932 upstream.
      
      cifsFileInfo objects hold references to dentries and it is possible that
      these will still be around in workqueues when VFS decides to kill super
      block during unmount.
      
      This results in panics like this one:
      BUG: Dentry ffff88001f5e76c0{i=66b4a,n=1M-2} still in use (1) [unmount of cifs cifs]
      ------------[ cut here ]------------
      kernel BUG at fs/dcache.c:943!
      [..]
      Process umount (pid: 1781, threadinfo ffff88003d6e8000, task ffff880035eeaec0)
      [..]
      Call Trace:
       [<ffffffff811b44f3>] shrink_dcache_for_umount+0x33/0x60
       [<ffffffff8119f7fc>] generic_shutdown_super+0x2c/0xe0
       [<ffffffff8119f946>] kill_anon_super+0x16/0x30
       [<ffffffffa036623a>] cifs_kill_sb+0x1a/0x30 [cifs]
       [<ffffffff8119fcc7>] deactivate_locked_super+0x57/0x80
       [<ffffffff811a085e>] deactivate_super+0x4e/0x70
       [<ffffffff811bb417>] mntput_no_expire+0xd7/0x130
       [<ffffffff811bc30c>] sys_umount+0x9c/0x3c0
       [<ffffffff81657c19>] system_call_fastpath+0x16/0x1b
      
      Fix this by making each cifsFileInfo object hold a reference to cifs
      super block, which implicitly keeps VFS super block around as well.
      Signed-off-by: default avatarMateusz Guzik <mguzik@redhat.com>
      Reviewed-by: default avatarJeff Layton <jlayton@redhat.com>
      Reported-and-Tested-by: default avatarBen Greear <greearb@candelatech.com>
      Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [xr: Backported to 3.4: adjust context]
      Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      NFSv4 wait on recovery for async session errors
      
      commit 4a82fd7c4e78a1b7a224f9ae8bb7e1fd95f670e0 upstream.
      
      When the state manager is processing the NFS4CLNT_DELEGRETURN flag, session
      draining is off, but DELEGRETURN can still get a session error.
      The async handler calls nfs4_schedule_session_recovery returns -EAGAIN, and
      the DELEGRETURN done then restarts the RPC task in the prepare state.
      With the state manager still processing the NFS4CLNT_DELEGRETURN flag with
      session draining off, these DELEGRETURNs will cycle with errors filling up the
      session slots.
      
      This prevents OPEN reclaims (from nfs_delegation_claim_opens) required by the
      NFS4CLNT_DELEGRETURN state manager processing from completing, hanging the
      state manager in the __rpc_wait_for_completion_task in nfs4_run_open_task
      as seen in this kernel thread dump:
      
      kernel: 4.12.32.53-ma D 0000000000000000     0  3393      2 0x00000000
      kernel: ffff88013995fb60 0000000000000046 ffff880138cc5400 ffff88013a9df140
      kernel: ffff8800000265c0 ffffffff8116eef0 ffff88013fc10080 0000000300000001
      kernel: ffff88013a4ad058 ffff88013995ffd8 000000000000fbc8 ffff88013a4ad058
      kernel: Call Trace:
      kernel: [<ffffffff8116eef0>] ? cache_alloc_refill+0x1c0/0x240
      kernel: [<ffffffffa0358110>] ? rpc_wait_bit_killable+0x0/0xa0 [sunrpc]
      kernel: [<ffffffffa0358152>] rpc_wait_bit_killable+0x42/0xa0 [sunrpc]
      kernel: [<ffffffff8152914f>] __wait_on_bit+0x5f/0x90
      kernel: [<ffffffffa0358110>] ? rpc_wait_bit_killable+0x0/0xa0 [sunrpc]
      kernel: [<ffffffff815291f8>] out_of_line_wait_on_bit+0x78/0x90
      kernel: [<ffffffff8109b520>] ? wake_bit_function+0x0/0x50
      kernel: [<ffffffffa035810d>] __rpc_wait_for_completion_task+0x2d/0x30 [sunrpc]
      kernel: [<ffffffffa040d44c>] nfs4_run_open_task+0x11c/0x160 [nfs]
      kernel: [<ffffffffa04114e7>] nfs4_open_recover_helper+0x87/0x120 [nfs]
      kernel: [<ffffffffa0411646>] nfs4_open_recover+0xc6/0x150 [nfs]
      kernel: [<ffffffffa040cc6f>] ? nfs4_open_recoverdata_alloc+0x2f/0x60 [nfs]
      kernel: [<ffffffffa0414e1a>] nfs4_open_delegation_recall+0x6a/0xa0 [nfs]
      kernel: [<ffffffffa0424020>] nfs_end_delegation_return+0x120/0x2e0 [nfs]
      kernel: [<ffffffff8109580f>] ? queue_work+0x1f/0x30
      kernel: [<ffffffffa0424347>] nfs_client_return_marked_delegations+0xd7/0x110 [nfs]
      kernel: [<ffffffffa04225d8>] nfs4_run_state_manager+0x548/0x620 [nfs]
      kernel: [<ffffffffa0422090>] ? nfs4_run_state_manager+0x0/0x620 [nfs]
      kernel: [<ffffffff8109b0f6>] kthread+0x96/0xa0
      kernel: [<ffffffff8100c20a>] child_rip+0xa/0x20
      kernel: [<ffffffff8109b060>] ? kthread+0x0/0xa0
      kernel: [<ffffffff8100c200>] ? child_rip+0x0/0x20
      
      The state manager can not therefore process the DELEGRETURN session errors.
      Change the async handler to wait for recovery on session errors.
      Signed-off-by: default avatarAndy Adamson <andros@netapp.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      [bwh: Backported to 3.2:
       - Adjust context
       - There's no restart_call label]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd4: fix xdr decoding of large non-write compounds
      
      commit 365da4adebb1c012febf81019ad3dc5bb52e2a13 upstream.
      
      This fixes a regression from 247500820ebd02ad87525db5d9b199e5b66f6636
      "nfsd4: fix decoding of compounds across page boundaries".  The previous
      code was correct: argp->pagelist is initialized in
      nfs4svc_deocde_compoundargs to rqstp->rq_arg.pages, and is therefore a
      pointer to the page *after* the page we are currently decoding.
      
      The reason that patch nevertheless fixed a problem with decoding
      compounds containing write was a bug in the write decoding introduced by
      5a80a54d21c96590d013378d8c5f65f879451ab4 "nfsd4: reorganize write
      decoding", after which write decoding no longer adhered to the rule that
      argp->pagelist point to the next page.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      [bwh: Backported to 3.2: adjust context; there is only one instance to fix]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      NFSv4.1: integer overflow in decode_cb_sequence_args()
      
      commit 0439f31c35d1da0b28988b308ea455e38e6a350d upstream.
      
      This seems like it could overflow on 32 bits.  Use kmalloc_array() which
      has overflow protection built in.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd: don't run get_file if nfs4_preprocess_stateid_op return error
      
      commit b022032e195ffca83d7002d6b84297d796ed443b upstream.
      
      we should return error status directly when nfs4_preprocess_stateid_op
      return error.
      Signed-off-by: default avatarfanchaoting <fanchaoting@cn.fujitsu.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      NFS: nfs_getaclargs.acl_len is a size_t
      
      commit 56d08fef2369d5ca9ad2e1fc697f5379fd8af751 upstream.
      
      Squelch compiler warnings:
      
      fs/nfs/nfs4proc.c: In function ‘__nfs4_get_acl_uncached’:
      fs/nfs/nfs4proc.c:3811:14: warning: comparison between signed and
      	unsigned integer expressions [-Wsign-compare]
      fs/nfs/nfs4proc.c:3818:15: warning: comparison between signed and
      	unsigned integer expressions [-Wsign-compare]
      
      Introduced by commit bf118a34
      
       "NFSv4: include bitmap in nfsv4 get
      acl data", Dec 7, 2011.
      Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      NFSv4.1: Fix a race in pNFS layoutcommit
      
      commit a073dbff359f4741013ae4b8395f5364c5e00b48 upstream.
      
      We need to clear the NFS_LSEG_LAYOUTCOMMIT bits atomically with the
      NFS_INO_LAYOUTCOMMIT bit, otherwise we may end up with situations
      where the two are out of sync.
      The first half of the problem is to ensure that pnfs_layoutcommit_inode
      clears the NFS_LSEG_LAYOUTCOMMIT bit through pnfs_list_write_lseg.
      We still need to keep the reference to those segments until the RPC call
      is finished, so in order to make it clear _where_ those references come
      from, we add a helper pnfs_list_write_lseg_done() that cleans up after
      pnfs_list_write_lseg.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Acked-by: default avatarBenny Halevy <bhalevy@tonian.com>
      [bwh: Backported to 3.2: s/pnfs_put_lseg/put_lseg/]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      NFSv4.1: Don't decode skipped layoutgets
      
      commit 085b7a45c63d3da5be155faab9249a5cab224561 upstream.
      
      layoutget's prepare hook can call rpc_exit with status = NFS4_OK (0).
      Because of this, nfs4_proc_layoutget can't depend on a 0 status to mean
      that the RPC was successfully sent, received and parsed.
      
      To fix this, use the result's len member to see if parsing took place.
      
      This fixes the following OOPS -- calling xdr_init_decode() with a buffer length
      0 doesn't set the stream's 'p' member and ends up using uninitialized memory
      in filelayout_decode_layout.
      
      BUG: unable to handle kernel paging request at 0000000000008050
      IP: [<ffffffff81282e78>] memcpy+0x18/0x120
      PGD 0
      Oops: 0000 [#1] SMP
      last sysfs file: /sys/devices/pci0000:00/0000:00:11.0/0000:02:01.0/irq
      CPU 1
      Modules linked in: nfs_layout_nfsv41_files nfs lockd fscache auth_rpcgss nfs_acl autofs4 sunrpc ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 dm_mirror dm_region_hash dm_log dm_mod ppdev parport_pc parport snd_ens1371 snd_rawmidi snd_ac97_codec ac97_bus snd_seq snd_seq_device snd_pcm snd_timer snd soundcore snd_page_alloc e1000 microcode vmware_balloon i2c_piix4 i2c_core sg shpchp ext4 mbcache jbd2 sr_mod cdrom sd_mod crc_t10dif pata_acpi ata_generic ata_piix mptspi mptscsih mptbase scsi_transport_spi [last unloaded: speedstep_lib]
      
      Pid: 1665, comm: flush-0:22 Not tainted 2.6.32-356-test-2 #2 VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform
      RIP: 0010:[<ffffffff81282e78>]  [<ffffffff81282e78>] memcpy+0x18/0x120
      RSP: 0018:ffff88003dfab588  EFLAGS: 00010206
      RAX: ffff88003dc42000 RBX: ffff88003dfab610 RCX: 0000000000000009
      RDX: 000000003f807ff0 RSI: 0000000000008050 RDI: ffff88003dc42000
      RBP: ffff88003dfab5b0 R08: 0000000000000000 R09: 0000000000000000
      R10: 0000000000000000 R11: 0000000000000080 R12: 0000000000000024
      R13: ffff88003dc42000 R14: ffff88003f808030 R15: ffff88003dfab6a0
      FS:  0000000000000000(0000) GS:ffff880003420000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
      CR2: 0000000000008050 CR3: 000000003bc92000 CR4: 00000000001407e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process flush-0:22 (pid: 1665, threadinfo ffff88003dfaa000, task ffff880037f77540)
      Stack:
      ffffffffa0398ac1 ffff8800397c5940 ffff88003dfab610 ffff88003dfab6a0
      <d> ffff88003dfab5d0 ffff88003dfab680 ffffffffa01c150b ffffea0000d82e70
      <d> 000000508116713b 0000000000000000 0000000000000000 0000000000000000
      Call Trace:
      [<ffffffffa0398ac1>] ? xdr_inline_decode+0xb1/0x120 [sunrpc]
      [<ffffffffa01c150b>] filelayout_decode_layout+0xeb/0x350 [nfs_layout_nfsv41_files]
      [<ffffffffa01c17fc>] filelayout_alloc_lseg+0x8c/0x3c0 [nfs_layout_nfsv41_files]
      [<ffffffff8150e6ce>] ? __wait_on_bit+0x7e/0x90
      Signed-off-by: default avatarWeston Andros Adamson <dros@netapp.com>
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      NFSv4.1: Handle NFS4ERR_DELAY when resetting the NFSv4.1 session
      
      commit c489ee290bdbbace6bb63ebe6ebd4dd605819495 upstream.
      
      NFS4ERR_DELAY is a legal reply when we call DESTROY_SESSION. It
      usually means that the server is busy handling an unfinished RPC
      request. Just sleep for a second and then retry.
      We also need to be able to handle the NFS4ERR_BACK_CHAN_BUSY return
      value. If the NFS server has outstanding callbacks, we just want to
      similarly sleep & retry.
      Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      dm bufio: avoid a possible __vmalloc deadlock
      
      commit 502624bdad3dba45dfaacaf36b7d83e39e74b2d2 upstream.
      
      This patch uses memalloc_noio_save to avoid a possible deadlock in
      dm-bufio.  (it could happen only with large block size, at most
      PAGE_SIZE << MAX_ORDER (typically 8MiB).
      
      __vmalloc doesn't fully respect gfp flags. The specified gfp flags are
      used for allocation of requested pages, structures vmap_area, vmap_block
      and vm_struct and the radix tree nodes.
      
      However, the kernel pagetables are allocated always with GFP_KERNEL.
      Thus the allocation of pagetables can recurse back to the I/O layer and
      cause a deadlock.
      
      This patch uses the function memalloc_noio_save to set per-process
      PF_MEMALLOC_NOIO flag and the function memalloc_noio_restore to restore
      it. When this flag is set, all allocations in the process are done with
      implied GFP_NOIO flag, thus the deadlock can't happen.
      
      This should be backported to stable kernels, but they don't have the
      PF_MEMALLOC_NOIO flag and memalloc_noio_save/memalloc_noio_restore
      functions. So, PF_MEMALLOC should be set and restored instead.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      [bwh: Backported to 3.2 as recommended]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      dm snapshot: add missing module aliases
      
      commit 23cb21092eb9dcec9d3604b68d95192b79915890 upstream.
      
      Add module aliases so that autoloading works correctly if the user
      tries to activate "snapshot-origin" or "snapshot-merge" targets.
      
      Reference: https://bugzilla.redhat.com/889973
      
      Reported-by: default avatarChao Yang <chyang@redhat.com>
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      md/raid10: fix "enough" function for detecting if array is failed.
      
      commit 80b4812407c6b1f66a4f2430e69747a13f010839 upstream.
      
      The 'enough' function is written to work with 'near' arrays only
      in that is implicitly assumes that the offset from one 'group' of
      devices to the next is the same as the number of copies.
      In reality it is the number of 'near' copies.
      
      So change it to make this number explicit.
      
      This bug makes it possible to run arrays without enough drives
      present, which is dangerous.
      It is appropriate for an -stable kernel, but will almost certainly
      need to be modified for some of them.
      Reported-by: default avatarJakub Husák <jakub@gooseman.cz>
      Signed-off-by: default avatarNeilBrown <neilb@suse.de>
      [bwh: Backported to 3.2: s/geo->/conf->/]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd: nfsd_open: when dentry_open returns an error do not propagate as struct file
      
      commit e4daf1ffbe6cc3b12aab4d604e627829e93e9914 upstream.
      
      The following call chain:
      ------------------------------------------------------------
      nfs4_get_vfs_file
      - nfsd_open
        - dentry_open
          - do_dentry_open
            - __get_file_write_access
              - get_write_access
                - return atomic_inc_unless_negative(&inode->i_writecount) ? 0 : -ETXTBSY;
      ------------------------------------------------------------
      
      can result in the following state:
      ------------------------------------------------------------
      struct nfs4_file {
      ...
        fi_fds = {0xffff880c1fa65c80, 0xffffffffffffffe6, 0x0},
        fi_access = {{
            counter = 0x1
          }, {
            counter = 0x0
          }},
      ...
      ------------------------------------------------------------
      
      1) First time around, in nfs4_get_vfs_file() fp->fi_fds[O_WRONLY] is
      NULL, hence nfsd_open() is called where we get status set to an error
      and fp->fi_fds[O_WRONLY] to -ETXTBSY. Thus we do not reach
      nfs4_file_get_access() and fi_access[O_WRONLY] is not incremented.
      
      2) Second time around, in nfs4_get_vfs_file() fp->fi_fds[O_WRONLY] is
      NOT NULL (-ETXTBSY), so nfsd_open() is NOT called, but
      nfs4_file_get_access() IS called and fi_access[O_WRONLY] is incremented.
      Thus we leave a landmine in the form of the nfs4_file data structure in
      an incorrect state.
      
      3) Eventually, when __nfs4_file_put_access() is called it finds
      fi_access[O_WRONLY] being non-zero, it decrements it and calls
      nfs4_file_put_fd() which tries to fput -ETXTBSY.
      ------------------------------------------------------------
      ...
           [exception RIP: fput+0x9]
           RIP: ffffffff81177fa9  RSP: ffff88062e365c90  RFLAGS: 00010282
           RAX: ffff880c2b3d99cc  RBX: ffff880c2b3d9978  RCX: 0000000000000002
           RDX: dead000000100101  RSI: 0000000000000001  RDI: ffffffffffffffe6
           RBP: ffff88062e365c90   R8: ffff88041fe797d8   R9: ffff88062e365d58
           R10: 0000000000000008  R11: 0000000000000000  R12: 0000000000000001
           R13: 0000000000000007  R14: 0000000000000000  R15: 0000000000000000
           ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
        #9 [ffff88062e365c98] __nfs4_file_put_access at ffffffffa0562334 [nfsd]
       #10 [ffff88062e365cc8] nfs4_file_put_access at ffffffffa05623ab [nfsd]
       #11 [ffff88062e365ce8] free_generic_stateid at ffffffffa056634d [nfsd]
       #12 [ffff88062e365d18] release_open_stateid at ffffffffa0566e4b [nfsd]
       #13 [ffff88062e365d38] nfsd4_close at ffffffffa0567401 [nfsd]
       #14 [ffff88062e365d88] nfsd4_proc_compound at ffffffffa0557f28 [nfsd]
       #15 [ffff88062e365dd8] nfsd_dispatch at ffffffffa054543e [nfsd]
       #16 [ffff88062e365e18] svc_process_common at ffffffffa04ba5a4 [sunrpc]
       #17 [ffff88062e365e98] svc_process at ffffffffa04babe0 [sunrpc]
       #18 [ffff88062e365eb8] nfsd at ffffffffa0545b62 [nfsd]
       #19 [ffff88062e365ee8] kthread at ffffffff81090886
       #20 [ffff88062e365f48] kernel_thread at ffffffff8100c14a
      ------------------------------------------------------------
      Signed-off-by: default avatarHarshula Jayasuriya <harshula@redhat.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      [xr: Backported to 3.4: adjust context]
      Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      dm snapshot: avoid snapshot space leak on crash
      
      commit 230c83afdd9cd384348475bea1e14b80b3b6b1b8 upstream.
      
      There is a possible leak of snapshot space in case of crash.
      
      The reason for space leaking is that chunks in the snapshot device are
      allocated sequentially, but they are finished (and stored in the metadata)
      out of order, depending on the order in which copying finished.
      
      For example, supposed that the metadata contains the following records
      SUPERBLOCK
      METADATA (blocks 0 ... 250)
      DATA 0
      DATA 1
      DATA 2
      ...
      DATA 250
      
      Now suppose that you allocate 10 new data blocks 251-260. Suppose that
      copying of these blocks finish out of order (block 260 finished first
      and the block 251 finished last). Now, the snapshot device looks like
      this:
      SUPERBLOCK
      METADATA (blocks 0 ... 250, 260, 259, 258, 257, 256)
      DATA 0
      DATA 1
      DATA 2
      ...
      DATA 250
      DATA 251
      DATA 252
      DATA 253
      DATA 254
      DATA 255
      METADATA (blocks 255, 254, 253, 252, 251)
      DATA 256
      DATA 257
      DATA 258
      DATA 259
      DATA 260
      
      Now, if the machine crashes after writing the first metadata block but
      before writing the second metadata block, the space for areas DATA 250-255
      is leaked, it contains no valid data and it will never be used in the
      future.
      
      This patch makes dm-snapshot complete exceptions in the same order they
      were allocated, thus fixing this bug.
      
      Note: when backporting this patch to the stable kernel, change the version
      field in the following way:
      * if version in the stable kernel is {1, 11, 1}, change it to {1, 12, 0}
      * if version in the stable kernel is {1, 10, 0} or {1, 10, 1}, change it
        to {1, 10, 2}
      Userspace reads the version to determine if the bug was fixed, so the
      version change is needed.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      [xr: Backported to 3.4: adjust version]
      Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      dm mpath: fix race condition between multipath_dtr and pg_init_done
      
      commit 954a73d5d3073df2231820c718fdd2f18b0fe4c9 upstream.
      
      Whenever multipath_dtr() is happening we must prevent queueing any
      further path activation work.  Implement this by adding a new
      'pg_init_disabled' flag to the multipath structure that denotes future
      path activation work should be skipped if it is set.  By disabling
      pg_init and then re-enabling in flush_multipath_work() we also avoid the
      potential for pg_init to be initiated while suspending an mpath device.
      
      Without this patch a race condition exists that may result in a kernel
      panic:
      
      1) If after pg_init_done() decrements pg_init_in_progress to 0, a call
         to wait_for_pg_init_completion() assumes there are no more pending path
         management commands.
      2) If pg_init_required is set by pg_init_done(), due to retryable
         mode_select errors, then process_queued_ios() will again queue the
         path activation work.
      3) If free_multipath() completes before activate_path() work is called a
         NULL pointer dereference like the following can be seen when
         accessing members of the recently destructed multipath:
      
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000090
      RIP: 0010:[<ffffffffa003db1b>]  [<ffffffffa003db1b>] activate_path+0x1b/0x30 [dm_multipath]
      [<ffffffff81090ac0>] worker_thread+0x170/0x2a0
      [<ffffffff81096c80>] ? autoremove_wake_function+0x0/0x40
      
      [switch to disabling pg_init in flush_multipath_work & header edits by Mike Snitzer]
      Signed-off-by: default avatarShiva Krishna Merla <shivakrishna.merla@netapp.com>
      Reviewed-by: default avatarKrishnasamy Somasundaram <somasundaram.krishnasamy@netapp.com>
      Tested-by: default avatarSpeagle Andy <Andy.Speagle@netapp.com>
      Acked-by: default avatarJunichi Nomura <j-nomura@ce.jp.nec.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      [bwh: Backported to 3.2:
       - Adjust context
       - Bump version to 1.3.2 not 1.6.0]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [xr: Backported to 3.4: Adjust context]
      Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      dm thin: fix discard corruption
      
      commit f046f89a99ccfd9408b94c653374ff3065c7edb3 upstream.
      
      Fix a bug in dm_btree_remove that could leave leaf values with incorrect
      reference counts.  The effect of this was that removal of a shared block
      could result in the space maps thinking the block was no longer used.
      More concretely, if you have a thin device and a snapshot of it, sending
      a discard to a shared region of the thin could corrupt the snapshot.
      
      Thinp uses a 2-level nested btree to store it's mappings.  This first
      level is indexed by thin device, and the second level by logical
      block.
      
      Often when we're removing an entry in this mapping tree we need to
      rebalance nodes, which can involve shadowing them, possibly creating a
      copy if the block is shared.  If we do create a copy then children of
      that node need to have their reference counts incremented.  In this
      way reference counts percolate down the tree as shared trees diverge.
      
      The rebalance functions were incrementing the children at the
      appropriate time, but they were always assuming the children were
      internal nodes.  This meant the leaf values (in our case packed
      block/flags entries) were not being incremented.
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
      [bwh: Backported to 3.2: bump target version numbers from 1.0.1 to 1.0.2]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [xr: Backported to 3.4: bump target version numbers to 1.1.1]
      Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      zram: Fix deadlock bug in partial read/write
      
      commit 7e5a5104c6af709a8d97d5f4711e7c917761d464 upstream.
      
      Now zram allocates new page with GFP_KERNEL in zram I/O path
      if IO is partial. Unfortunately, It may cause deadlock with
      reclaim path like below.
      
      write_page from fs
      fs_lock
      allocation(GFP_KERNEL)
      reclaim
      pageout
      				write_page from fs
      				fs_lock <-- deadlock
      
      This patch fixes it by using GFP_NOIO.  In read path, we
      reorganize code flow so that kmap_atomic is called after the
      GFP_NOIO allocation.
      Acked-by: default avatarJerome Marchand <jmarchand@redhat.com>
      Acked-by: default avatarNitin Gupta <ngupta@vflare.org>
      [ penberg@kernel.org: don't use GFP_ATOMIC ]
      Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
      Signed-off-by: default avatarMinchan Kim <minchan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      [bwh: Backported to 3.2: no reordering is needed in the read path]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      zram: avoid invalid memory access in zram_exit()
      
      commit 6030ea9b35971a4200062f010341ab832e878ac9 upstream.
      
      Memory for zram->disk object may have already been freed after returning
      from destroy_device(zram), then it's unsafe for zram_reset_device(zram)
      to access zram->disk again.
      
      We can't solve this bug by flipping the order of destroy_device(zram)
      and zram_reset_device(zram), that will cause deadlock issues to the
      zram sysfs handler.
      
      So fix it by holding an extra reference to zram->disk before calling
      destroy_device(zram).
      Signed-off-by: default avatarJiang Liu <jiang.liu@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      zram: destroy all devices on error recovery path in zram_init()
      
      commit 39a9b8ac9333e4268ecff7da6c9d1ab3823ff243 upstream.
      
      On error recovery path of zram_init(), it leaks the zram device object
      causing the failure. So change create_device() to free allocated
      resources on error path.
      Signed-off-by: default avatarJiang Liu <jiang.liu@huawei.com>
      Acked-by: default avatarMinchan Kim <minchan@kernel.org>
      Acked-by: default avatarJerome Marchand <jmarchan@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      zram: avoid access beyond the zram device
      
      commit 12a7ad3b810e77137d0caf97a6dd97591e075b30 upstream.
      
      Function valid_io_request() should verify the entire request are within
      the zram device address range. Otherwise it may cause invalid memory
      access when accessing/modifying zram->meta->table[index] because the
      'index' is out of range. Then it may access non-exist memory, randomly
      modify memory belong to other subsystems, which is hard to track down.
      Signed-off-by: default avatarJiang Liu <jiang.liu@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      zram: allow request end to coincide with disksize
      
      commit 75c7caf5a052ffd8db3312fa7864ee2d142890c4 upstream.
      
      Pass valid_io_request() checks if request end coincides with disksize
      (end equals bound), only fail if we attempt to read beyond the bound.
      
      mkfs.ext2 produces numerous errors:
      [ 2164.632747] quiet_error: 1 callbacks suppressed
      [ 2164.633260] Buffer I/O error on device zram0, logical block 153599
      [ 2164.633265] lost page write due to I/O error on zram0
      Signed-off-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Staging: zram: Fix access of NULL pointer
      
      commit 46a51c80216cb891f271ad021f59009f34677499 upstream.
      
      This patch fixes the bug in reset_store caused by accessing NULL pointer.
      
      The bdev gets its value from bdget_disk() which could fail when memory
      pressure is severe and hence can return NULL because allocation of
      inode in bdget could fail.
      
      Hence, this patch introduces a check for bdev to prevent reference to a
      NULL pointer in the later part of the code. It also removes unnecessary
      check of bdev for fsync_bdev().
      Acked-by: default avatarJerome Marchand <jmarchan@redhat.com>
      Signed-off-by: default avatarRashika Kheria <rashika.kheria@gmail.com>
      Acked-by: default avatarMinchan Kim <minchan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      [bwh: Backported to 3.2: adjust filename]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      UBI: erase free PEB with bitflip in EC header
      
      commit 193819cf2e6e395b1e1be2d36785dc5563a6edca upstream.
      
      Without this patch, these PEB are not scrubbed until we put data in them.
      Bitflip can accumulate latter and we can loose the EC header (but VID header
      should be intact and allow to recover data).
      Signed-off-by: default avatarMatthieu Castet <matthieu.castet@parrot.com>
      Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
      [bwh: Backported to 3.2: adjust filename, context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Input: synaptics - adjust threshold for treating position values as negative
      
      commit 824efd37415961d38821ecbd9694e213fb2e8b32 upstream.
      
      Commit c039450 (Input: synaptics - handle out of bounds values from the
      hardware) caused any hardware reported values over 7167 to be treated as
      a wrapped-around negative value. It turns out that some firmware uses
      the value 8176 to indicate a finger near the edge of the touchpad whose
      actual position cannot be determined. This value now gets treated as
      negative, which can cause pointer jumps and broken edge scrolling on
      these machines.
      
      I only know of one touchpad which reports negative values, and this
      hardware never reports any value lower than -8 (i.e. 8184). Moving the
      threshold for treating a value as negative up to 8176 should work fine
      then for any hardware we currently know about, and since we're dealing
      with unspecified behavior it's probably the best we can do. The special
      8176 value is also likely to result in sudden jumps in position, so
      let's also clamp this to the maximum specified value for the axis.
      
      BugLink: http://bugs.launchpad.net/bugs/1046512
      https://bugzilla.kernel.org/show_bug.cgi?id=46371
      
      Signed-off-by: default avatarSeth Forshee <seth.forshee@canonical.com>
      Reviewed-by: default avatarDaniel Kurtz <djkurtz@chromium.org>
      Tested-by: default avatarAlan Swanson <swanson@ukfsn.org>
      Tested-by: default avatarArteom <arutemus@gmail.com>
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      floppy: properly handle failure on add_disk loop
      
      commit d60e7ec18c3fb2cbf90969ccd42889eb2d03aef9 upstream.
      
      On floppy initialization, if something failed inside the loop we call
      add_disk, there was no cleanup of previous iterations in the error
      handling.
      Signed-off-by: default avatarHerton Ronaldo Krzesinski <herton.krzesinski@canonical.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      MISC: hpilo, remove pci_disable_device
      
      commit bcdee04ea7ae0406ae69094f6df1aacb66a69a0b upstream.
      
      pci_disable_device(pdev) used to be in pci remove function. But this
      PCI device has two functions with interrupt lines connected to a
      single pin. The other one is a USB host controller. So when we disable
      the PIN there e.g. by rmmod hpilo, the controller stops working. It is
      because the interrupt link is disabled in ACPI since it is not
      refcounted yet. See acpi_pci_link_free_irq called from
      acpi_pci_irq_disable.
      
      It is not the best solution whatsoever, but as a workaround until the
      ACPI irq link refcounting is sorted out this should fix the reported
      errors.
      
      References: https://lkml.org/lkml/2008/11/4/535
      
      Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
      Cc: Grant Grundler <grundler@parisc-linux.org>
      Cc: Nobin Mathew <nobin.mathew@gmail.com>
      Cc: Robert Hancock <hancockr@shaw.ca>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: David Altobelli <david.altobelli@hp.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      i82975x_edac: Fix dimm label initialization
      
      commit 479696840239e0cc43efb3c917bdcad2174d2215 upstream.
      
      The driver has only 4 hardcoded labels, but allows much more memory.
      Fix it by removing the hardcoded logic, using snprintf() instead.
      
      [   19.833972] general protection fault: 0000 [#1] SMP
      [   19.837733] Modules linked in: i82975x_edac(+) edac_core firewire_ohci firewire_core crc_itu_t nouveau mxm_wmi wmi video i2c_algo_bit drm_kms_helper ttm drm i2c_core
      [   19.837733] CPU 0
      [   19.837733] Pid: 390, comm: udevd Not tainted 3.6.1-1.fc17.x86_64.debug #1 Dell Inc.                 Precision WorkStation 390    /0MY510
      [   19.837733] RIP: 0010:[<ffffffff813463a8>]  [<ffffffff813463a8>] strncpy+0x18/0x30
      [   19.837733] RSP: 0018:ffff880078535b68  EFLAGS: 00010202
      [   19.837733] RAX: ffff880069fa9708 RBX: ffff880078588000 RCX: ffff880069fa9708
      [   19.837733] RDX: 000000000000001f RSI: 5f706f5f63616465 RDI: ffff880069fa9708
      [   19.837733] RBP: ffff880078535b68 R08: ffff880069fa9727 R09: 000000000000fffe
      [   19.837733] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000003
      [   19.837733] R13: 0000000000000000 R14: ffff880069fa9290 R15: ffff880079624a80
      [   19.837733] FS:  00007f3de01ee840(0000) GS:ffff88007c400000(0000) knlGS:0000000000000000
      [   19.837733] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   19.837733] CR2: 00007f3de00b9000 CR3: 0000000078dbc000 CR4: 00000000000007f0
      [   19.837733] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [   19.837733] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      [   19.837733] Process udevd (pid: 390, threadinfo ffff880078534000, task ffff880079642450)
      [   19.837733] Stack:
      [   19.837733]  ffff880078535c18 ffffffffa017c6b8 00040000816d627f ffff880079624a88
      [   19.837733]  ffffc90004cd6000 ffff880079624520 ffff88007ac21148 0000000000000000
      [   19.837733]  0000000000000000 0004000000000000 feda000078535bc8 ffffffff810d696d
      [   19.837733] Call Trace:
      [   19.837733]  [<ffffffffa017c6b8>] i82975x_init_one+0x2e6/0x3e6 [i82975x_edac]
      ...
      
      Fix bug reported at:
      	https://bugzilla.redhat.com/show_bug.cgi?id=848149
      And, very likely:
      	https://bbs.archlinux.org/viewtopic.php?id=148033
      	https://bugzilla.kernel.org/show_bug.cgi?id=47171
      
      
      
      Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      [bwh: Backported to 3.2:
       - Adjust context
       - Use csrow->channels[chan].label not csrow->channels[chan]->dimm->label]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      i915: ensure that VGA plane is disabled
      
      commit 0fde901f1ddd2ce0e380a6444f1fb7ca555859e9 upstream.
      
      Some broken systems (like HP nc6120) in some cases, usually after LID
      close/open, enable VGA plane, making display unusable (black screen on LVDS,
      some strange mode on VGA output). We used to disable VGA plane only once at
      startup. Now we also check, if VGA plane is still disabled while changing
      mode, and fix that if something changed it.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=57434
      
      Signed-off-by: default avatarKrzysztof Mazur <krzysiek@podlesie.net>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      [bwh: Backported to 3.2: intel_modeset_setup_hw_state() does not
       exist, so call i915_redisable_vga() directly from intel_lid_notify()]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      regulator: max8997: Use uV in voltage_map_desc
      
      commit bc3b7756b5ff66828acf7bc24f148d28b8d61108 upstream.
      
      Current code does integer division (min_vol = min_uV / 1000) before pass
      min_vol to max8997_get_voltage_proper_val().
      So it is possible min_vol is truncated to a smaller value.
      
      For example, if the request min_uV is 800900 for ldo.
      min_vol = 800900 / 1000 = 800 (mV)
      Then max8997_get_voltage_proper_val returns 800 mV for this case which is lower
      than the requested voltage.
      
      Use uV rather than mV in voltage_map_desc to prevent truncation by integer
      division.
      Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      [bwh: Backported to 3.2:
       - Adjust context
       - voltage_map_desc also has an n_bits field]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      regulator: max8998: Ensure enough delay time for max8998_set_voltage_buck_time_sel
      
      commit e8d9897ff064b1683c11c15ea1296a67a45d77b0 upstream.
      
      commit 81d0a6ae7befb24c06f4aa4856af7f8d1f612171 upstream.
      
      Use DIV_ROUND_UP to prevent truncation by integer division issue.
      This ensures we return enough delay time.
      Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
      Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
      [bwh: Backported to 3.2: delay is done by driver, not returned to the caller]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      intel_idle: Don't register CPU notifier if we are not running.
      
      commit 6f8c2e7933679f54b6478945dc72e59ef9a3d5e0 upstream.
      
      The 'intel_idle_probe' probes the CPU and sets the CPU notifier.
      But if later on during the module initialization we fail (say
      in cpuidle_register_driver), we stop loading, but we neglect
      to unregister the CPU notifier.  This means that during CPU
      hotplug events the system will fail:
      
      calling  intel_idle_init+0x0/0x326 @ 1
      intel_idle: MWAIT substates: 0x1120
      intel_idle: v0.4 model 0x2A
      intel_idle: lapic_timer_reliable_states 0xffffffff
      intel_idle: intel_idle yielding to none
      initcall intel_idle_init+0x0/0x326 returned -19 after 14 usecs
      
      ... some time later, offlining and onlining a CPU:
      
      cpu 3 spinlock event irq 62
      BUG: unable to ] __cpuidle_register_device+0x1c/0x120
      PGD 99b8b067 PUD 99b95067 PMD 0
      Oops: 0000 [#1] SMP
      Modules linked in: xen_evtchn nouveau mxm_wmi wmi radeon ttm i915 fbcon tileblit font atl1c bitblit softcursor drm_kms_helper video xen_blkfront xen_netfront fb_sys_fops sysimgblt sysfillrect syscopyarea xenfs xen_privcmd mperf
      CPU 0
      Pid: 2302, comm: udevd Not tainted 3.8.0-rc3upstream-00249-g09ad159 #1 MSI MS-7680/H61M-P23 (MS-7680)
      RIP: e030:[<ffffffff814d956c>]  [<ffffffff814d956c>] __cpuidle_register_device+0x1c/0x120
      RSP: e02b:ffff88009dacfcb8  EFLAGS: 00010286
      RAX: 0000000000000000 RBX: ffff880105380000 RCX: 000000000000001c
      RDX: 0000000000000000 RSI: 0000000000000055 RDI: ffff880105380000
      RBP: ffff88009dacfce8 R08: ffffffff81a4f048 R09: 0000000000000008
      R10: 0000000000000008 R11: 0000000000000000 R12: ffff880105380000
      R13: 00000000ffffffdd R14: 0000000000000000 R15: ffffffff81a523d0
      FS:  00007f37bd83b7a0(0000) GS:ffff880105200000(0000) knlGS:0000000000000000
      CS:  e033 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000008 CR3: 00000000a09ea000 CR4: 0000000000042660
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      Process udevd (pid: 2302, threadinfo ffff88009dace000, task ffff88009afb47f0)
      Stack:
       ffffffff8107f2d0 ffffffff810c2fb7 ffff88009dacfce8 00000000ffffffea
       ffff880105380000 00000000ffffffdd ffff88009dacfd08 ffffffff814d9882
       0000000000000003 ffff880105380000 ffff88009dacfd28 ffffffff81340afd
      Call Trace:
       [<ffffffff8107f2d0>] ? collect_cpu_info_local+0x30/0x30
       [<ffffffff810c2fb7>] ? __might_sleep+0xe7/0x100
       [<ffffffff814d9882>] cpuidle_register_device+0x32/0x70
       [<ffffffff81340afd>] intel_idle_cpu_init+0xad/0x110
       [<ffffffff81340bc8>] cpu_hotplug_notify+0x68/0x80
       [<ffffffff8166023d>] notifier_call_chain+0x4d/0x70
       [<ffffffff810bc369>] __raw_notifier_call_chain+0x9/0x10
       [<ffffffff81094a4b>] __cpu_notify+0x1b/0x30
       [<ffffffff81652cf7>] _cpu_up+0x103/0x14b
       [<ffffffff81652e18>] cpu_up+0xd9/0xec
       [<ffffffff8164a254>] store_online+0x94/0xd0
       [<ffffffff814122fb>] dev_attr_store+0x1b/0x20
       [<ffffffff81216404>] sysfs_write_file+0xf4/0x170
       [<ffffffff811a1024>] vfs_write+0xb4/0x130
       [<ffffffff811a17ea>] sys_write+0x5a/0xa0
       [<ffffffff816643a9>] system_call_fastpath+0x16/0x1b
      Code: 03 18 00 c9 c3 66 2e 0f 1f 84 00 00 00 00 00 55 48 89 e5 48 83 ec 30 48 89 5d e8 4c 89 65 f0 48 89 fb 4c 89 6d f8 e8 84 08 00 00 <48> 8b 78 08 49 89 c4 e8 f8 7f c1 ff 89 c2 b8 ea ff ff ff 84 d2
      RIP  [<ffffffff814d956c>] __cpuidle_register_device+0x1c/0x120
       RSP <ffff88009dacfcb8>
      
      This patch fixes that by moving the CPU notifier registration
      as the last item to be done by the module.
      Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Reviewed-by: default avatarSrivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      [bwh: Backported to 3.2: notifier is registered only if we do not have ARAT]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      can: c_can: Set reserved bit in IFx_MASK2 to 1 on write
      
      commit 2bd3bc4e8472424f1a6009825397639a8968920a upstream.
      
      According to C_CAN documentation, the reserved bit in IFx_MASK2 register is
      fixed 1.
      Signed-off-by: default avatarAlexander Stein <alexander.stein@systec-electronic.com>
      Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      e1000e: DoS while TSO enabled caused by link partner with small MSS
      
      commit d821a4c4d11ad160925dab2bb009b8444beff484 upstream.
      
      With a low enough MSS on the link partner and TSO enabled locally, the
      networking stack can periodically send a very large (e.g.  64KB) TCP
      message for which the driver will attempt to use more Tx descriptors than
      are available by default in the Tx ring.  This is due to a workaround in
      the code that imposes a limit of only 4 MSS-sized segments per descriptor
      which appears to be a carry-over from the older e1000 driver and may be
      applicable only to some older PCI or PCIx parts which are not supported in
      e1000e.  When the driver gets a message that is too large to fit across the
      configured number of Tx descriptors, it stops the upper stack from queueing
      any more and gets stuck in this state.  After a timeout, the upper stack
      assumes the adapter is hung and calls the driver to reset it.
      
      Remove the unnecessary limitation of using up to only 4 MSS-sized segments
      per Tx descriptor, and put in a hard failure test to catch when attempting
      to check for message sizes larger than would fit in the whole Tx ring.
      Refactor the remaining logic that limits the size of data per Tx descriptor
      from a seemingly arbitrary 8KB to a limit based on the dynamic size of the
      Tx packet buffer as described in the hardware specification.
      
      Also, fix the logic in the check for space in the Tx ring for the next
      largest possible packet after the current one has been successfully queued
      for transmit, and use the appropriate defines for default ring sizes in
      e1000_probe instead of magic values.
      
      This issue goes back to the introduction of e1000e in 2.6.24 when it was
      split off from e1000.
      Reported-by: default avatarBen Hutchings <bhutchings@solarflare.com>
      Signed-off-by: default avatarBruce Allan <bruce.w.allan@intel.com>
      Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mac80211: introduce IEEE80211_HW_TEARDOWN_AGGR_ON_BAR_FAIL
      
      commit 5b632fe85ec82e5c43740b52e74c66df50a37db3 upstream.
      
      Commit f0425bed "mac80211: retry sending
      failed BAR frames later instead of tearing down aggr" caused regression
      on rt2x00 hardware (connection hangs). This regression was fixed by
      commit be03d4a45c09ee5100d3aaaedd087f19bc20d01 "rt2x00: Don't let
      mac80211 send a BAR when an AMPDU subframe fails". But the latter
      commit caused yet another problem reported in
      https://bugzilla.kernel.org/show_bug.cgi?id=42828#c22
      
      After long discussion in this thread:
      http://mid.gmane.org/20121018075615.GA18212@redhat.com
      and testing various alternative solutions, which failed on one or other
      setup, we have no other good fix for the issues like just revert both
      mentioned earlier commits.
      
      To do not affect other hardware which benefit from commit
      f0425bed
      
      , instead of reverting it,
      introduce flag that when used will restore mac80211 behaviour before
      the commit.
      Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
      [replaced link with mid.gmane.org that has message-id]
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [hq: Backported to 3.4: adjust context]
      Signed-off-by: default avatarQiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      PCI: shpchp: Use per-slot workqueues to avoid deadlock
      
      commit f652e7d2916fe2fcf9e7d709aa5b7476b431e2dd upstream.
      
      When we have an SHPC-capable bridge with a second SHPC-capable bridge
      below it, pushing the upstream bridge's attention button causes a
      deadlock.
      
      The deadlock happens because we use the shpchp_wq workqueue to run
      shpchp_pushbutton_thread(), which uses shpchp_disable_slot() to remove
      devices below the upstream bridge.  When we remove the downstream bridge,
      we call shpc_remove(), the shpchp driver's .remove() method.  That calls
      flush_workqueue(shpchp_wq), which deadlocks because the
      shpchp_pushbutton_thread() work item is still running.
      
      This patch avoids the deadlock by creating a workqueue for every slot
      and removing the single shared workqueue.
      
      Here's the call path that leads to the deadlock:
      
        shpchp_queue_pushbutton_work
          queue_work(shpchp_wq)		# shpchp_pushbutton_thread
          ...
      
        shpchp_pushbutton_thread
          shpchp_disable_slot
            remove_board
              shpchp_unconfigure_device
                pci_stop_and_remove_bus_device
                  ...
                    shpc_remove		# shpchp driver .remove method
                      hpc_release_ctlr
                        cleanup_slots
                          flush_workqueue(shpchp_wq)
      
      This change is based on code inspection, since we don't have hardware
      with this topology.
      Based-on-patch-by: default avatarYijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [hq: Backported to 3.4: adjust context]
      Signed-off-by: default avatarQiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      thinkpad-acpi: fix issuing duplicated key events for brightness up/down
      
      commit ff413195e830541afeae469fc866ecd0319abd7e upstream.
      
      The tp_features.bright_acpimode will not be set correctly for brightness
      control because ACPI_VIDEO_HID will not be located in ACPI. As a result,
      a duplicated key event will always be sent. acpi_video_backlight_support()
      is sufficient to detect standard ACPI brightness control.
      Signed-off-by: default avatarAlex Hung <alex.hung@canonical.com>
      Signed-off-by: default avatarMatthew Garrett <mjg@redhat.com>
      Cc: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: HDA: Add inverted internal mic quirk for Lenovo S205
      
      commit b3c5dce81584391af8b6dedb0647e65c17aab3a2 upstream.
      
      The Lenovo Ideapad S205 has an internal mic where the right channel
      is phase inverted.
      
      BugLink: https://bugs.launchpad.net/bugs/884652
      
      Signed-off-by: default avatarDavid Henningsson <david.henningsson@canonical.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Add inverted internal mic quirk for Lenovo IdeaPad U310
      
      commit e4db0952e542090c605fd41d31d761f1b4624f4a upstream.
      
      The Lenovo IdeaPad U310 has an internal mic where the right channel
      is phase inverted.
      Signed-off-by: default avatarFelix Kaechele <felix@fetzig.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Fix oops caused by recent commit "Fix internal mic for Lenovo Ideapad U300s"
      
      commit 83b0c6ba999643ee8ad6329f26e1cdc870e1a920 upstream.
      
      Make sure we don't dereference the "quirk" pointer when it is null.
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid Henningsson <david.henningsson@canonical.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Add stereo-dmic fixup for Acer Aspire One 522
      
      commit 63a077e27648b4043b1ca1b4e29f0c42d99616b6 upstream.
      
      Acer Aspire One 522 has the infamous digital mic unit that needs the
      phase inversion fixup for stereo.
      
      Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=715737
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda/conexant - Correct vendor IDs for new codecs
      
      commit 2d825fd82eb765412a558a56e193b77117d56699 upstream.
      
      Never trust datasheet...
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Add Conexant CX20755/20756/20757 codec IDs
      
      commit 42c364ace52ae6b4699105b39f2559c256b6cd4c upstream.
      
      These are just compatible with other CX2075x codecs.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Add support for CX20952
      
      commit 8f42d7698751a45cd9f7134a5da49bc5b6206179 upstream.
      
      It's a superset of the existing CX2075x codecs, so we can reuse the
      existing parser code.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tty: serial: imx: don't reinit clock in imx_setup_ufcr()
      
      commit 7be0670f7b9198382938a03ff3db7f47ef6b4780 upstream.
      
      Remove the clock configuration from imx_setup_ufcr(). This
      isn't needed here and will cause garbage output if done.
      
      To be be sure that we only touch the bits we want (TXTL and RXTL)
      we have to mask out all other bits of the UFCR register. Add
      one non-existing bit macro for this, too (bit 6, DCEDTE on i.MX6).
      Signed-off-by: default avatarDirk Behme <dirk.behme@de.bosch.com>
      CC: Shawn Guo <shawn.guo@linaro.org>
      CC: Sascha Hauer <s.hauer@pengutronix.de>
      CC: Troy Kisky <troy.kisky@boundarydevices.com>
      CC: Xinyu Chen <xinyu.chen@freescale.com>
      Acked-by: default avatarShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      [bwh: Backported to 3.2: deleted code in imx_setup_ufcr() refers to
       sport->clk not sport->clk_per]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86, build, icc: Remove uninitialized_var() from compiler-intel.h
      
      commit 503cf95c061a0551eb684da364509297efbe55d9 upstream.
      
      When compiling with icc, <linux/compiler-gcc.h> ends up included
      because the icc environment defines __GNUC__.  Thus, we neither need
      nor want to have this macro defined in both compiler-gcc.h and
      compiler-intel.h, and the fact that they are inconsistent just makes
      the compiler spew warnings.
      Reported-by: default avatarSunil K. Pandey <sunil.k.pandey@intel.com>
      Cc: Kevin B. Smith <kevin.b.smith@intel.com>
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      Link: http://lkml.kernel.org/n/tip-0mbwou1zt7pafij09b897lg3@git.kernel.org
      
      
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86, build: Pass in additional -mno-mmx, -mno-sse options
      
      commit 8b3b005d675726e38bc504d2e35a991e55819155 upstream.
      
      In checkin
      
          5551a34e5aea x86-64, build: Always pass in -mno-sse
      
      we unconditionally added -mno-sse to the main build, to keep newer
      compilers from generating SSE instructions from autovectorization.
      However, this did not extend to the special environments
      (arch/x86/boot, arch/x86/boot/compressed, and arch/x86/realmode/rm).
      Add -mno-sse to the compiler command line for these environments, and
      add -mno-mmx to all the environments as well, as we don't want a
      compiler to generate MMX code either.
      
      This patch also removes a $(cc-option) call for -m32, since we have
      long since stopped supporting compilers too old for the -m32 option,
      and in fact hardcode it in other places in the Makefiles.
      Reported-by: default avatarKevin B. Smith <kevin.b.smith@intel.com>
      Cc: Sunil K. Pandey <sunil.k.pandey@intel.com>
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      Cc: H. J. Lu <hjl.tools@gmail.com>
      Link: http://lkml.kernel.org/n/tip-j21wzqv790q834n7yc6g80j1@git.kernel.org
      
      
      [bwh: Backported to 3.2:
       - Drop changes to arch/x86/Makefile, which sets these flags earlier
       - Adjust context
       - Drop changes to arch/x86/realmode/rm/Makefile which doesn't exist]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86/apic: Disable I/O APIC before shutdown of the local APIC
      
      commit 522e66464467543c0d88d023336eec4df03ad40b upstream.
      
      In reboot and crash path, when we shut down the local APIC, the I/O APIC is
      still active. This may cause issues because external interrupts
      can still come in and disturb the local APIC during shutdown process.
      
      To quiet external interrupts, disable I/O APIC before shutdown local APIC.
      Signed-off-by: default avatarFenghua Yu <fenghua.yu@intel.com>
      Link: http://lkml.kernel.org/r/1382578212-4677-1-git-send-email-fenghua.yu@intel.com
      
      
      [ I suppose the 'issue' is a hang during shutdown. It's a fine change nevertheless. ]
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86: fix build error and kconfig for ia32_emulation and binfmt
      
      commit d1603990ea626668c78527376d9ec084d634202d upstream.
      
      Fix kconfig warning and build errors on x86_64 by selecting BINFMT_ELF
      when COMPAT_BINFMT_ELF is being selected.
      
      warning: (IA32_EMULATION) selects COMPAT_BINFMT_ELF which has unmet direct dependencies (COMPAT && BINFMT_ELF)
      
      fs/built-in.o: In function `elf_core_dump':
      compat_binfmt_elf.c:(.text+0x3e093): undefined reference to `elf_core_extra_phdrs'
      compat_binfmt_elf.c:(.text+0x3ebcd): undefined reference to `elf_core_extra_data_size'
      compat_binfmt_elf.c:(.text+0x3eddd): undefined reference to `elf_core_write_extra_phdrs'
      compat_binfmt_elf.c:(.text+0x3f004): undefined reference to `elf_core_write_extra_data'
      
      [ hpa: This was sent to me for -next but it is a low risk build fix ]
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Link: http://lkml.kernel.org/r/51C0B614.5000708@infradead.org
      
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      n_gsm : Flow control handling in Mux driver
      
      commit c01af4fec2c8f303d6b3354d44308d9e6bef8026 upstream.
      
      - Correcting handling of FCon/FCoff in order to respect 27.010 spec
      - Consider FCon/off will overide all dlci flow control except for
        dlci0 as we must be able to send control frames.
      - Dlci constipated handling according to FC, RTC and RTR values.
      - Modifying gsm_dlci_data_kick and gsm_dlci_data_sweep according
        to dlci constipated value
      Signed-off-by: default avatarFrederic Berat <fredericx.berat@intel.com>
      Signed-off-by: default avatarRuss Gorby <russ.gorby@intel.com>
      Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      char: n_gsm: remove message filtering for contipated DLCI
      
      commit 10c6c383e43565c9c6ec07ff8eb2825f8091bdf0 upstream.
      
      The design of uplink flow control in the mux driver is
      that for constipated channels data will backup into the
      per-channel fifos, and any messages that make it to the
      outbound message queue will still go out.
      Code was added to also stop messages that were in the outbound
      queue but this requires filtering through all the messages on the
      queue for stopped dlcis and changes some of the mux logic unneccessarily.
      
      The message fiiltering was removed to be in line w/ the original design
      as the message filtering does not provide any solution.
      Extra debug messages used during investigation were also removed.
      Signed-off-by: default avatarsamix.lebsir <samix.lebsir@intel.com>
      Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      n_gsm: avoid accessing freed memory during CMD_FCOFF condition
      
      commit b4338e1efc339986cf6c0a3652906e914a86e2d3 upstream.
      
      gsm_data_kick was recently modified to allow messages on the
      tx queue bound for DLCI0 to flow even during FCOFF conditions.
      Unfortunately we introduced a bug discovered by code inspection
      where subsequent list traversers can access freed memory if
      the DLCI0 messages were not all at the head of the list.
      
      Replaced singly linked tx list w/ a list_head and used
      provided interfaces for traversing and deleting members.
      Signed-off-by: default avatarRuss Gorby <russ.gorby@intel.com>
      Tested-by: default avatarYin, Fengwei <fengwei.yin@intel.com>
      Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      n_gsm: replace kfree_skb w/ appropriate dev_* versions
      
      commit 329e56780e514a7ab607bcb51a52ab0dc2669414 upstream.
      
      Drivers are supposed to use the dev_* versions of the kfree_skb
      interfaces. In a couple of cases we were called with IRQs
      disabled as well which kfree_skb() does not expect.
      
      Replaced kfree_skb calls w/ dev_kfree_skb and dev_kfree_skb_any
      Signed-off-by: default avatarRuss Gorby <russ.gorby@intel.com>
      Tested-by: default avatarYin, Fengwei <fengwei.yin@intel.com>
      Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86 get_unmapped_area: Access mmap_legacy_base through mm_struct member
      
      commit 41aacc1eea645c99edbe8fbcf78a97dc9b862adc upstream.
      
      This is the updated version of df54d6fa5427 ("x86 get_unmapped_area():
      use proper mmap base for bottom-up direction") that only randomizes the
      mmap base address once.
      Signed-off-by: default avatarRadu Caragea <sinaelgl@gmail.com>
      Reported-and-tested-by: default avatarJeff Shorey <shoreyjeff@gmail.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Michel Lespinasse <walken@google.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Adrian Sendroiu <molecula2788@gmail.com>
      Cc: Greg KH <greg@kroah.com>
      Cc: Kamal Mostafa <kamal@canonical.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ptrace/x86: Introduce set_task_blockstep() helper
      
      commit 848e8f5f0ad3169560c516fff6471be65f76e69f upstream.
      
      No functional changes, preparation for the next fix and for uprobes
      single-step fixes.
      
      Move the code playing with TIF_BLOCKSTEP/DEBUGCTLMSR_BTF into the
      new helper, set_task_blockstep().
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Acked-by: default avatarSrikar Dronamraju <srikar@linux.vnet.ibm.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ptrace/x86: Partly fix set_task_blockstep()->update_debugctlmsr() logic
      
      commit 95cf00fa5d5e2a200a2c044c84bde8389a237e02 upstream.
      
      Afaics the usage of update_debugctlmsr() and TIF_BLOCKSTEP in
      step.c was always very wrong.
      
      1. update_debugctlmsr() was simply unneeded. The child sleeps
         TASK_TRACED, __switch_to_xtra(next_p => child) should notice
         TIF_BLOCKSTEP and set/clear DEBUGCTLMSR_BTF after resume if
         needed.
      
      2. It is wrong. The state of DEBUGCTLMSR_BTF bit in CPU register
         should always match the state of current's TIF_BLOCKSTEP bit.
      
      3. Even get_debugctlmsr() + update_debugctlmsr() itself does not
         look right. Irq can change other bits in MSR_IA32_DEBUGCTLMSR
         register or the caller can be preempted in between.
      
      4. It is not safe to play with TIF_BLOCKSTEP if task != current.
         DEBUGCTLMSR_BTF and TIF_BLOCKSTEP should always match each
         other if the task is running. The tracee is stopped but it
         can be SIGKILL'ed right before set/clear_tsk_thread_flag().
      
      However, now that uprobes uses user_enable_single_step(current)
      we can't simply remove update_debugctlmsr(). So this patch adds
      the additional "task == current" check and disables irqs to avoid
      the race with interrupts/preemption.
      
      Unfortunately this patch doesn't solve the last problem, we need
      another fix. Probably we should teach ptrace_stop() to set/clear
      single/block stepping after resume.
      
      And afaics there is yet another problem: perf can play with
      MSR_IA32_DEBUGCTLMSR from nmi, this obviously means that even
      __switch_to_xtra() has problems.
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86/Sandy Bridge: mark arrays in __init functions as __initconst
      
      commit 91c90db1aa92a50fa1d7f289502b49ddb46a90d3 upstream.
      
      commit ab3cd8670e0b3fcde7f029e1503ed3c5138e9571 upstream.
      
      Mark static arrays as __initconst so they get removed when the init
      sections are flushed.
      Reported-by: default avatarMathias Krause <minipli@googlemail.com>
      Link: http://lkml.kernel.org/r/75F4BEE6-CB0E-4426-B40B-697451677738@googlemail.com
      
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      efi_pstore: Check remaining space with QueryVariableInfo() before writing data
      
      commit d80a361d779a9f19498943d1ca84243209cd5647 upstream.
      
      [Issue]
      
      As discussed in a thread below, Running out of space in EFI isn't a well-tested scenario.
      And we wouldn't expect all firmware to handle it gracefully.
      http://marc.info/?l=linux-kernel&m=134305325801789&w=2
      
      
      
      On the other hand, current efi_pstore doesn't check a remaining space of storage at writing time.
      Therefore, efi_pstore may not work if it tries to write a large amount of data.
      
      [Patch Description]
      
      To avoid handling the situation above, this patch checks if there is a space enough to log with
      QueryVariableInfo() before writing data.
      Signed-off-by: default avatarSeiji Aguchi <seiji.aguchi@hds.com>
      Acked-by: default avatarMike Waychison <mikew@google.com>
      Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      efivars: Disable external interrupt while holding efivars->lock
      
      commit 81fa4e581d9283f7992a0d8c534bb141eb840a14 upstream.
      
      [Problem]
      There is a scenario which efi_pstore fails to log messages in a panic case.
      
       - CPUA holds an efi_var->lock in either efivarfs parts
         or efi_pstore with interrupt enabled.
       - CPUB panics and sends IPI to CPUA in smp_send_stop().
       - CPUA stops with holding the lock.
       - CPUB kicks efi_pstore_write() via kmsg_dump(KSMG_DUMP_PANIC)
         but it returns without logging messages.
      
      [Patch Description]
      This patch disables an external interruption while holding efivars->lock
      as follows.
      
      In efi_pstore_write() and get_var_data(), spin_lock/spin_unlock is
      replaced by spin_lock_irqsave/spin_unlock_irqrestore because they may
      be called in an interrupt context.
      
      In other functions, they are replaced by spin_lock_irq/spin_unlock_irq.
      because they are all called from a process context.
      
      By applying this patch, we can avoid the problem above with
      a following senario.
      
       - CPUA holds an efi_var->lock with interrupt disabled.
       - CPUB panics and sends IPI to CPUA in smp_send_stop().
       - CPUA receives the IPI after releasing the lock because it is
         disabling interrupt while holding the lock.
       - CPUB waits for one sec until CPUA releases the lock.
       - CPUB kicks efi_pstore_write() via kmsg_dump(KSMG_DUMP_PANIC)
         And it can hold the lock successfully.
      Signed-off-by: default avatarSeiji Aguchi <seiji.aguchi@hds.com>
      Acked-by: default avatarMike Waychison <mikew@google.com>
      Acked-by: default avatarMatt Fleming <matt.fleming@intel.com>
      Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
      [bwh: Backported to 3.2:
       - Drop efivarfs changes
       - Adjust context
       - Drop change to efi_pstore_erase(), which is implemented using
         efi_pstore_write() here]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      efi: be more paranoid about available space when creating variables
      
      commit 68d929862e29a8b52a7f2f2f86a0600423b093cd upstream.
      
      UEFI variables are typically stored in flash. For various reasons, avaiable
      space is typically not reclaimed immediately upon the deletion of a
      variable - instead, the system will garbage collect during initialisation
      after a reboot.
      
      Some systems appear to handle this garbage collection extremely poorly,
      failing if more than 50% of the system flash is in use. This can result in
      the machine refusing to boot. The safest thing to do for the moment is to
      forbid writes if they'd end up using more than half of the storage space.
      We can make this more finegrained later if we come up with a method for
      identifying the broken machines.
      Signed-off-by: default avatarMatthew Garrett <matthew.garrett@nebula.com>
      Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
      [bwh: Backported to 3.2:
       - Drop efivarfs changes and unused check_var_size()
       - Add error codes to include/linux/efi.h, added upstream by
         commit 5d9db883761a ('efi: Add support for a UEFI variable filesystem')
       - Add efi_status_to_err(), added upstream by commit 7253eaba7b17
         ('efivarfs: Return an error if we fail to read a variable')]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      efivars: pstore: Do not check size when erasing variable
      
      commit 80a19debc2f2d398cfa57fae97bc99826748a602 upstream.
      
      In 3.2, unlike mainline, efi_pstore_erase() calls efi_pstore_write()
      with a size of 0, as the underlying EFI interface treats a size of 0
      as meaning deletion.
      
      This was not taken into account in my backport of commit d80a361d779a
      'efi_pstore: Check remaining space with QueryVariableInfo() before
      writing data'.  The size check should be omitted when erasing.
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      efivars: Allow disabling use as a pstore backend
      
      commit ed9dc8ce7a1c8115dba9483a9b51df8b63a2e0ef upstream.
      
      Add a new option, CONFIG_EFI_VARS_PSTORE, which can be set to N to
      avoid using efivars as a backend to pstore, as some users may want to
      compile out the code completely.
      
      Set the default to Y to maintain backwards compatability, since this
      feature has always been enabled until now.
      Signed-off-by: default avatarSeth Forshee <seth.forshee@canonical.com>
      Cc: Josh Boyer <jwboyer@redhat.com>
      Cc: Matthew Garrett <mjg59@srcf.ucam.org>
      Cc: Seiji Aguchi <seiji.aguchi@hds.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
      [xr: Backported to 3.4: adjust context]
      Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      efivars: Add module parameter to disable use as a pstore backend
      
      commit ec0971ba5372a4dfa753f232449d23a8fd98490e upstream.
      
      We know that with some firmware implementations writing too much data to
      UEFI variables can lead to bricking machines. Recent changes attempt to
      address this issue, but for some it may still be prudent to avoid
      writing large amounts of data until the solution has been proven on a
      wide variety of hardware.
      
      Crash dumps or other data from pstore can potentially be a large data
      source. Add a pstore_module parameter to efivars to allow disabling its
      use as a backend for pstore. Also add a config option,
      CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE, to allow setting the default
      value of this paramter to true (i.e. disabled by default).
      Signed-off-by: default avatarSeth Forshee <seth.forshee@canonical.com>
      Cc: Josh Boyer <jwboyer@redhat.com>
      Cc: Matthew Garrett <mjg59@srcf.ucam.org>
      Cc: Seiji Aguchi <seiji.aguchi@hds.com>
      Cc: Tony Luck <tony.luck@intel.com>
      Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      efivars: Fix check for CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE
      
      commit ca0ba26fbbd2d81c43085df49ce0abfe34535a90 upstream.
      
      The 'CONFIG_' prefix is not implicit in IS_ENABLED().
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Seth Forshee <seth.forshee@canonical.com>
      Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      efi_pstore: Introducing workqueue updating sysfs
      
      commit a93bc0c6e07ed9bac44700280e65e2945d864fd4 upstream.
      
      [Problem]
      efi_pstore creates sysfs entries, which enable users to access to NVRAM,
      in a write callback. If a kernel panic happens in an interrupt context,
      it may fail because it could sleep due to dynamic memory allocations during
      creating sysfs entries.
      
      [Patch Description]
      This patch removes sysfs operations from a write callback by introducing
      a workqueue updating sysfs entries which is scheduled after the write
      callback is called.
      
      Also, the workqueue is kicked in a just oops case.
      A system will go down in other cases such as panic, clean shutdown and emergency
      restart. And we don't need to create sysfs entries because there is no chance for
      users to access to them.
      
      efi_pstore will be robust against a kernel panic in an interrupt context with this patch.
      Signed-off-by: default avatarSeiji Aguchi <seiji.aguchi@hds.com>
      Acked-by: default avatarMatt Fleming <matt.fleming@intel.com>
      Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
      [xr: Backported to 3.4:
        - Adjust contest
        - Remove repeated definition of helper function variable_is_present]
      Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86, efivars: firmware bug workarounds should be in platform code
      
      commit a6e4d5a03e9e3587e88aba687d8f225f4f04c792 upstream.
      
      Let's not burden ia64 with checks in the common efivars code that we're not
      writing too much data to the variable store. That kind of thing is an x86
      firmware bug, plain and simple.
      
      efi_query_variable_store() provides platforms with a wrapper in which they can
      perform checks and workarounds for EFI variable storage bugs.
      
      Cc: H. Peter Anvin <hpa@zytor.com>
      Cc: Matthew Garrett <mjg59@srcf.ucam.org>
      Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
      [xr: Backported to 3.4: adjust context]
      Signed-off-by: default avatarRui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86,efi: Check max_size only if it is non-zero.
      
      commit 7791c8423f1f7f4dad94e753bae67461d5b80be8 upstream.
      
      Some EFI implementations return always a MaximumVariableSize of 0,
      check against max_size only if it is non-zero.
      My Intel DQ67SW desktop board has such an implementation.
      Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
      Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      efi: Export efi_query_variable_store() for efivars.ko
      
      commit 3668011d4ad556224f7c012c1e870a6eaa0e59da upstream.
      
      Fixes build with CONFIG_EFI_VARS=m which was broken after the commit
      "x86, efivars: firmware bug workarounds should be in platform code".
      Signed-off-by: default avatarSergey Vlasov <vsu@altlinux.ru>
      Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86,efi: Implement efi_no_storage_paranoia parameter
      
      commit 8c58bf3eec3b8fc8162fe557e9361891c20758f2 upstream.
      
      Using this parameter one can disable the storage_size/2 check if
      he is really sure that the UEFI does sane gc and fulfills the spec.
      
      This parameter is useful if a devices uses more than 50% of the
      storage by default.
      The Intel DQSW67 desktop board is such a sucker for exmaple.
      Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
      Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Modify UEFI anti-bricking code
      
      commit f8b8404337de4e2466e2e1139ea68b1f8295974f upstream.
      
      This patch reworks the UEFI anti-bricking code, including an effective
      reversion of cc5a080c and 31ff2f20. It turns out that calling
      QueryVariableInfo() from boot services results in some firmware
      implementations jumping to physical addresses even after entering virtual
      mode, so until we have 1:1 mappings for UEFI runtime space this isn't
      going to work so well.
      
      Reverting these gets us back to the situation where we'd refuse to create
      variables on some systems because they classify deleted variables as "used"
      until the firmware triggers a garbage collection run, which they won't do
      until they reach a lower threshold. This results in it being impossible to
      install a bootloader, which is unhelpful.
      
      Feedback from Samsung indicates that the firmware doesn't need more than
      5KB of storage space for its own purposes, so that seems like a reasonable
      threshold. However, there's still no guarantee that a platform will attempt
      garbage collection merely because it drops below this threshold. It seems
      that this is often only triggered if an attempt to write generates a
      genuine EFI_OUT_OF_RESOURCES error. We can force that by attempting to
      create a variable larger than the remaining space. This should fail, but if
      it somehow succeeds we can then immediately delete it.
      
      I've tested this on the UEFI machines I have available, but I don't have
      a Samsung and so can't verify that it avoids the bricking problem.
      Signed-off-by: default avatarMatthew Garrett <matthew.garrett@nebula.com>
      Signed-off-by: Lee, Chun-Y <jlee@suse.com> [ dummy variable cleanup ]
      Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
      [bwh: Backported to 3.2: the reverted changes were never applied here]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86/efi: Fix dummy variable buffer allocation
      
      commit b8cb62f82103083a6e8fa5470bfe634a2c06514d upstream.
      
      1. Check for allocation failure
      2. Clear the buffer contents, as they may actually be written to flash
      3. Don't leak the buffer
      
      Compile-tested only.
      
      [ Tested successfully on my buggy ASUS machine - Matt ]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
      Cc: Rui Xiang <rui.xiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nbd: fsync and kill block device on shutdown
      
      commit 3a2d63f87989e01437ba994df5f297528c353d7d upstream.
      
      There are two problems with shutdown in the NBD driver.
      
      1: Receiving the NBD_DISCONNECT ioctl does not sync the filesystem.
      
         This patch adds the sync operation into __nbd_ioctl()'s
         NBD_DISCONNECT handler.  This is useful because BLKFLSBUF is restricted
         to processes that have CAP_SYS_ADMIN, and the NBD client may not
         possess it (fsync of the block device does not sync the filesystem,
         either).
      
      2: Once we clear the socket we have no guarantee that later reads will
         come from the same backing storage.
      
         The patch adds calls to kill_bdev() in __nbd_ioctl()'s socket
         clearing code so the page cache is cleaned, lest reads that hit on the
         page cache will return stale data from the previously-accessible disk.
      
      Example:
      
          # qemu-nbd -r -c/dev/nbd0 /dev/sr0
          # file -s /dev/nbd0
          /dev/stdin: # UDF filesystem data (version 1.5) etc.
          # qemu-nbd -d /dev/nbd0
          # qemu-nbd -r -c/dev/nbd0 /dev/sda
          # file -s /dev/nbd0
          /dev/stdin: # UDF filesystem data (version 1.5) etc.
      
      While /dev/sda has:
      
          # file -s /dev/sda
          /dev/sda: x86 boot sector; etc.
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Acked-by: default avatarPaul Clements <Paul.Clements@steeleye.com>
      Cc: Alex Bligh <alex@alex.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      [bwh: Backported to 3.2:
       - Adjusted context
       - s/\bnbd\b/lo/
       - Incorporate export of kill_bdev() from commit ff01bb48
      
      
         ('fs: move code out of buffer.c')]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [hq: Backported to 3.4: Adjusted context]
      Signed-off-by: default avatarQiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drivers: hv: switch to use mb() instead of smp_mb()
      
      commit 35848f68b07df3f917cb13fc3c134718669f569b upstream.
      
      Even if guest were compiled without SMP support, it could not assume that host
      wasn't. So switch to use mb() instead of smp_mb() to force memory barriers for
      UP guest.
      Signed-off-by: default avatarJason Wang <jasowang@redhat.com>
      Cc: Haiyang Zhang <haiyangz@microsoft.com>
      Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      [bwh: Backported to 3.2:
       - Drop changes to functions that don't exist here
       - hv_ringbuffer_write() has only a write memory barrier]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [hq: Backported to 3.4:
       - Add the change in hv_ringbuffer_read]
      Signed-off-by: default avatarQiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915/sdvo: clean up connectors on intel_sdvo_init() failures
      
      commit d0ddfbd3d1346c1f481ec2289eef350cdba64b42 upstream.
      
      Any failures in intel_sdvo_init() after the intel_sdvo_setup_output() call
      left behind ghost connectors, attached (with a dangling pointer) to the
      sdvo that has been cleaned up and freed. Properly destroy any connectors
      attached to the encoder.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=46381
      
      
      CC: Chris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Tested-by: bjo@nord-west.org
      [danvet: added a comment to explain why we need to clean up connectors
      even when sdvo_output_setup fails.]
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm: fix documentation for drm_crtc_set_mode()
      
      commit 4c9287c6009b37754c42e0ba73a4cc79de92d8f8 upstream.
      
      x and y parameters are offsets, not width/height
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon/dce32+: use fractional fb dividers for high clocks
      
      commit a02dc74b317d78298cb0587b9b1f6f741fd5c139 upstream.
      
      Fixes flickering with some high res montiors.
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      [bwh: Backported to 3.2: use pll->flags instead of radeon_crtc->pll_flags]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon: fix amd afusion gpu setup aka sumo v2
      
      commit bd25f0783dc3fb72e1e2779c2b99b2d34b67fa8a upstream.
      
      Set the proper number of tile pipe that should be a multiple of
      pipe depending on the number of se engine.
      
      Fix:
      https://bugs.freedesktop.org/show_bug.cgi?id=56405
      https://bugs.freedesktop.org/show_bug.cgi?id=56720
      
      
      
      v2: Don't change sumo2
      Signed-off-by: default avatarJerome Glisse <jglisse@redhat.com>
      Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      [bwh: Backported to 3.2: don't define/use *_GB_ADDR_CONFIG_GOLDEN]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon: add connector table for SAM440ep embedded board
      
      commit 6a556039e7823d27a0a7f7724d4d455053ea9253 upstream.
      
      RV250 found on ppc embedded boards.
      
      Cc: Hans Verkuil <hverkuil@xs4all.nl>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon: add connector table for Mac G4 Silver
      
      commit cafa59b9011a7790be4ddd5979419259844a165d upstream.
      
      Apple cards do not provide data tables in the vbios
      so we have to hard code the connector parameters
      in the driver.
      Reported-by: default avatarAlbrecht Dreß <albrecht.dress@arcor.de>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/nouveau: fix init with agpgart-uninorth
      
      commit eda85d6ad490923152544fba0473798b6cc0edf6 upstream.
      
      Check that the AGP aperture can be mapped. This follows a similar change
      done for Radeon (commit 365048ff, drm/radeon: AGP memory is only I/O if
      the aperture can be mapped by the CPU.).
      
      The patch fixes the following error seen on G5 iMac:
      
      	nouveau E[     DRM] failed to create kernel channel, -12
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58806
      
      Reviewed-by: default avatarMichel Dänzer <michel@daenzer.net>
      Signed-off-by: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon: fix typo in evergreen_mc_resume()
      
      commit 695ddeb457584a602f2ba117d08ce37cf6ec1589 upstream.
      
      Add missing index that may have led us to enabling
      more crtcs than necessary.
      
      May also fix:
      https://bugs.freedesktop.org/show_bug.cgi?id=56139
      
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: default avatarMichel Dänzer <michel.daenzer@amd.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915: Close race between processing unpin task and queueing the flip
      
      commit e7d841ca03b7ab668620045cd7b428eda9f41601 upstream.
      
      Before queuing the flip but crucially after attaching the unpin-work to
      the crtc, we continue to setup the unpin-work. However, should the
      hardware fire early, we see the connected unpin-work and queue the task.
      The task then promptly runs and unpins the fb before we finish taking
      the required references or even pinning it... Havoc.
      
      To close the race, we use the flip-pending atomic to indicate when the
      flip is finally setup and enqueued. So during the flip-done processing,
      we can check more accurately whether the flip was expected.
      
      v2: Add the appropriate mb() to ensure that the writes to the page-flip
      worker are complete prior to marking it active and emitting the MI_FLIP.
      On the read side, the mb should be enforced by the spinlocks.
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: stable@vger.kernel.org
      [danvet: Review the barriers a bit, we need a write barrier both
      before and after updating ->pending. Similarly we need a read barrier
      in the interrupt handler both before and after reading ->pending. With
      well-ordered irqs only one barrier in each place should be required,
      but since this patch explicitly sets out to combat spurious interrupts
      with is staged activation of the unpin work we need to go full-bore on
      the barriers, too. Discussed with Chris Wilson on irc and changes
      acked by him.]
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      [wml: Backported to 3.4: adjust context]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915; Only increment the user-pin-count after successfully pinning the bo
      
      commit 93be8788e648817d62fda33e2998eb6ca6ebf3a3 upstream.
      
      As along the error path we do not correct the user pin-count for the
      failure, we may end up with userspace believing that it has a pinned
      object at offset 0 (when interrupted by a signal for example).
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915: dump UTS_RELEASE into the error_state
      
      commit 4518f611ba21ba165ea3714055938a8984a44ff9 upstream.
      
      Useful for statistics or on overflowing bug reports to keep things all
      lined up.
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915: add missing \n to UTS_RELEASE in the error_state
      
      commit fdfa175d0a9cfa2082ce24e67e284e5acbba452a upstream.
      
      Amending
      commit 4518f611ba21ba165ea3714055938a8984a44ff9
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Wed Jan 23 16:16:35 2013 +0100
      
          drm/i915: dump UTS_RELEASE into the error_state
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915: panel: invert brightness via parameter
      
      commit 7bd90909bbf9ce7c40e1da3d72b97b93839c188a upstream.
      
      Following the documentation of the Legacy Backlight Brightness (LBB)
      Register in the configuration space of some Intel PCI graphics adapters,
      setting the LBB register with the value 0x0 causes the backlight to be
      turned off, and 0xFF causes the backlight to be set to 100% intensity
      (http://download.intel.com/embedded/processors/Whitepaper/324567.pdf
      
      ).
      The Acer Aspire 5734Z, however, turns the backlight off at 0xFF and sets
      it to maximum intensity at 0. In consequence, the screen of this systems
      becomes dark at an early boot stage which makes it unusable. The same
      inversion applies to the BLC_PWM_CTL I915 register. This problem was
      introduced in kernel version 2.6.38 when the PCI device of this system
      was first supported by the i915 KMS module.
      
      This patch adds a parameter to the i915 module to enable inversion of
      the brightness variable (i915.invert_brightness).
      Signed-off-by: default avatarCarsten Emde <C.Emde@osadl.org>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Acked-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915: panel: invert brightness via quirk
      
      commit 4dca20efb1a9c2efefc28ad2867e5d6c3f5e1955 upstream.
      
      A machine may need to invert the panel backlight brightness value. This
      patch adds the infrastructure for a quirk to do so.
      Signed-off-by: default avatarCarsten Emde <C.Emde@osadl.org>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Acked-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [wml: Backported to 3.4:
      - Adjust context
      - one more flag QUIRK_NO_PCH_PWM_ENABLE]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915: panel: invert brightness acer aspire 5734z
      
      commit 5a15ab5b93e4a3ebcd4fa6c76cf646a45e9cf806 upstream.
      
      Mark the Acer Aspire 5734Z that this machines requires the module to
      invert the panel backlight brightness value after reading from and prior
      to writing to the PCI configuration space.
      Signed-off-by: default avatarCarsten Emde <C.Emde@osadl.org>
      Acked-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Acked-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [wml: Backported to 3.4: Adjust context]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915: add quirk to invert brightness on eMachines G725
      
      commit 1ffff60320879830e469e26062c18f75236822ba upstream.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=59628
      
      Reported-by: default avatarRoland Gruber <post@rolandgruber.de>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [wml: Backported to 3.4: Adjust context]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915: add quirk to invert brightness on eMachines e725
      
      commit 01e3a8feb40e54b962a20fa7eb595c5efef5e109 upstream.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=31522#c35
      
      
      [Note: There are more than one broken setups in the bug. This fixes one.]
      Reported-by: default avatarMartins <andrissr@inbox.lv>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [wml: Backported to 3.4: Adjust context]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915: add quirk to invert brightness on Packard Bell NCL20
      
      commit 5559ecadad5a73b27f863e92f4b4f369501dce6f upstream.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=44156
      
      Reported-by: default avatarAlan Zimmerman <alan.zimm@gmail.com>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [wml: Backported to 3.4: Adjust context]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      DRM/i915: Add QUIRK_INVERT_BRIGHTNESS for NCR machines.
      
      commit 5f85f176c2f1c9d2a23f60ca0b99e4d0aa5a26a7 upstream.
      
      NCR machines with LVDS panels using Intel chipsets need to have the
      QUIRK_INVERT_BRIGHTNESS bit set.
      Unfortunately NCR doesn't set a meaningful subvendor/subdevice ID,
      therefore we add a DMI dependent quirk list.
      Signed-off-by: default avatarEgbert Eich <eich@suse.de>
      [danvet: fixup whitespace fail.]
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Acked-by: default avatarJani Nikula <jani.nikula@intel.com>
      [bwh: Backported to 3.2:
       - Adjust context
       - Add #include <linux/dmi.h>]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon: use frac fb div on RS780/RS880
      
      commit 411678288d61ba17afe1f8afed92200be6bbc65d upstream.
      
      Monitors seem to prefer it.  Fixes:
      https://bugs.freedesktop.org/show_bug.cgi?id=37696
      
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      [bwh: Backported to 3.2:
       - Adjust context
       - Add to pll->flags, not radeon_crtc->pll_flags]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon: cleanup properly if mmio mapping fails
      
      commit 0cd9cb76ae26a19df21abc6f94f5fff141e689c7 upstream.
      
      If we fail to map the mmio BAR, skip driver tear down
      that requires mmio.
      
      Should fix:
      https://bugzilla.kernel.org/show_bug.cgi?id=56541
      
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915: Workaround incoherence between fences and LLC across multiple CPUs
      
      commit 25ff1195f8a0b3724541ae7bbe331b4296de9c06 upstream.
      
      In order to fully serialize access to the fenced region and the update
      to the fence register we need to take extreme measures on SNB+, and
      manually flush writes to memory prior to writing the fence register in
      conjunction with the memory barriers placed around the register write.
      
      Fixes i-g-t/gem_fence_thrash
      
      v2: Bring a bigger gun
      v3: Switch the bigger gun for heavier bullets (Arjan van de Ven)
      v4: Remove changes for working generations.
      v5: Reduce to a per-cpu wbinvd() call prior to updating the fences.
      v6: Rewrite comments to ellide forgotten history.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=62191
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Jon Bloomfield <jon.bloomfield@intel.com>
      Tested-by: Jon Bloomfield <jon.bloomfield@intel.com> (v2)
      Reviewed-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      [bwh: Backported to 3.2: insert the cache flush in i915_gem_object_get_fence()]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915: ensure single initialization and cleanup of backlight device
      
      commit dc652f90e088798bfa31f496ba994ddadd5d5680 upstream.
      
      Backlight cleanup in the eDP connector destroy callback caused the
      backlight device to be removed on some systems that first initialized LVDS
      and then attempted to initialize eDP. Prevent multiple backlight
      initializations, and ensure backlight cleanup is only done once by moving
      it to modeset cleanup.
      
      A small wrinkle is the introduced asymmetry in backlight
      setup/cleanup. This could be solved by adding refcounting, but it seems
      overkill considering that there should only ever be one backlight device.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=55701
      
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Tested-by: default avatarPeter Verthez <peter.verthez@skynet.be>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      [bwh: Backported to 3.2:
       - Adjust context
       - s/dev_priv->backlight\.device/dev_priv->backlight/]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon: Another card with wrong primary dac adj
      
      commit f7929f34fa0e0bb6736a2484fdc07d77a1653081 upstream.
      
      Hello,
      got another card with "too bright" problem:
      Sapphire Radeon VE 7000 DDR (VGA+S-Video)
      
      lspci -vnn:
      01:00.0 VGA compatible controller [0300]: Advanced Micro Devices [AMD] nee ATI RV100 QY [Radeon 7000/VE] [1002:5159] (prog-if 00 [VGA controller])
              Subsystem: PC Partner Limited Sapphire Radeon VE 7000 DDR [174b:7c28]
      
      The patch below fixes the problem for this card.
      But I don't like the blacklist, couldn't some heuristic be used instead?
      The interesting thing is that the manufacturer is the same as the other card
      needing the same quirk. I wonder how many different types are broken this way.
      
      The "wrong" ps2_pdac_adj value that comes from BIOS on this card is 0x300.
      
      ====================
      drm/radeon: Add primary dac adj quirk for Sapphire Radeon VE 7000 DDR
      
      Values from BIOS are wrong, causing too bright colors.
      Use default values instead.
      Signed-off-by: default avatarOndrej Zary <linux@rainbow-software.org>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/i915: try not to lose backlight CBLV precision
      
      commit cac6a5ae0118832936eb162ec4cedb30f2422bcc upstream.
      
      ACPI has _BCM and _BQC methods to set and query the backlight
      brightness, respectively. The ACPI opregion has variables BCLP and CBLV
      to hold the requested and current backlight brightness, respectively.
      
      The BCLP variable has range 0..255 while the others have range
      0..100. This means the _BCM method has to scale the brightness for BCLP,
      and the gfx driver has to scale the requested value back for CBLV. If
      the _BQC method uses the CBLV variable (apparently some implementations
      do, some don't) for current backlight level reporting, there's room for
      rounding errors.
      
      Use DIV_ROUND_UP for scaling back to CBLV to get back to the same values
      that were passed to _BCM, presuming the _BCM simply uses bclp = (in *
      255) / 100 for scaling to BCLP.
      
      Reference: https://gist.github.com/aaronlu/6314920
      
      Reported-by: default avatarAaron Lu <aaron.lu@intel.com>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Reviewed-by: default avatarAaron Lu <aaron.lu@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      [bwh: Backported to 3.2:
       - Adjust context
       - ASLE region is treated as normal memory rather than __iomem]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon: fix panel scaling with eDP and LVDS bridges
      
      commit 855f5f1d882a34e4e9dd27b299737cd3508a5624 upstream.
      
      We were using the wrong set_properly callback so we always
      ended up with Full scaling even if something else (Center or
      Full aspect) was selected.
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm: Pad drm_mode_get_connector to 64-bit boundary
      
      commit bc5bd37ce48c66e9192ad2e7231e9678880f6f8e upstream.
      
      Pavel Roskin reported that DRM_IOCTL_MODE_GETCONNECTOR was overwritting
      the 4 bytes beyond the end of its structure with a 32-bit userspace
      running on a 64-bit kernel. This is due to the padding gcc inserts as
      the drm_mode_get_connector struct includes a u64 and its size is not a
      natural multiple of u64s.
      
      64-bit kernel:
      
      sizeof(drm_mode_get_connector)=80, alignof=8
      sizeof(drm_mode_get_encoder)=20, alignof=4
      sizeof(drm_mode_modeinfo)=68, alignof=4
      
      32-bit userspace:
      
      sizeof(drm_mode_get_connector)=76, alignof=4
      sizeof(drm_mode_get_encoder)=20, alignof=4
      sizeof(drm_mode_modeinfo)=68, alignof=4
      
      Fortuituously we can insert explicit padding to the tail of our
      structures without breaking ABI.
      Reported-by: default avatarPavel Roskin <proski@gnu.org>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Dave Airlie <airlied@redhat.com>
      Cc: dri-devel@lists.freedesktop.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      [bwh: Backported to 3.2: adjust filename]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/ttm: Fix memory type compatibility check
      
      commit 59c8e66378fb78adbcd05f0d09783dde6fef282b upstream.
      
      Also check the busy placements before deciding to move a buffer object.
      Failing to do this may result in a completely unneccessary move within a
      single memory type.
      Signed-off-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
      Reviewed-by: default avatarJakob Bornecrantz <jakob@vmware.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon: fix hdmi mode enable on RS600/RS690/RS740
      
      commit dcb852905772416e322536ced5cb3c796d176af5 upstream.
      
      These chips were previously skipped since they are
      pre-R600.
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [wml: Backported to 3.4:
      - adjust context
      - no !ASIC_IS_DCE3(rdev)]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drm/radeon: always program the MC on startup
      
      commit 6fab3febf6d949b0a12b1e4e73db38e4a177a79e upstream.
      
      For r6xx+ asics.  This mirrors the behavior of pre-r6xx
      asics.  We need to program the MC even if something
      else in startup() fails.  Failure to do so results in
      an unusable GPU.
      
      Based on a fix from: Mark Kettenis <kettenis@openbsd.org>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      [wml: Backported to 3.4:
      - adjust context
      - drop changes to cik.c]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drivers/rtc/rtc-pl031.c: fix the missing operation on enable
      
      commit e7e034e18a0ab6bafb2425c3242cac311164f4d6 upstream.
      
      The RTC control register should be enabled in the process of
      initializing.
      
      Without this patch, I failed to enable RTC in Hisilicon Hi3620 SoC.  The
      register mapping section in RTC is always read as zero.  So I doubt that
      ST guys may already enable this register in bootloader.  So they won't
      meet this issue.
      Signed-off-by: default avatarHaojian Zhuang <haojian.zhuang@linaro.org>
      Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
      Cc: Linus Walleij <linus.walleij@linaro.org>
      Cc: Alessandro Zummo <a.zummo@towertech.it>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      wireless: rt2x00: rt{2500,73}usb.c put back duplicate id
      
      commit 8f35f787b75e9b6435ea37dabcae2d40dc72d31c upstream.
      
      put back 0x050d,0x7050 to rt73usb, same usb_id for two chips:
      
      K7SF5D7050A ver 2xxx is rt2500
      K7SF5D7050B ver 3xxx is rt73
      
      <http://en-us-support.belkin.com/app/answers/detail/a_id/297/kw/K7SF5D7050
      
      >
      Signed-off-by: default avatarXose Vazquez Perez <xose.vazquez@gmail.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Wireless: rt2x00: Add device id for Sweex LW323 to rt2800usb.c
      
      commit 36f318bb124b231c01db6965a009f46d5731f012 upstream.
      
      This patch adds detection for the Sweex LW323 USB wireless network card
      in the rt2x00 driver (just one line in rt2800usb.c).
      It applies to linux-3.7-rc3.
      Signed-off-by: default avatarJaume Delclòs <jaume@delclos.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      rt2800usb: Add support for 2001:3c1e (D-Link DWA-125 rev B1) USB Wi-Fi adapter
      
      commit fd7b9270120ca7e53fbf0469febe0c68acf6a0a2 upstream.
      
      D-Link DWA-125/B1 is a relatively new USB Wi-Fi adapter, using a
      Ralink chipset supported by the rt2800usb driver. Currently, to work
      around the problem (it's missing in all present kernel versions,
      up to and including 3.7.x), I had to add this to /etc/rc.local:
      
      echo 2001 3c1e >> /sys/bus/usb/drivers/rt2800usb/new_id
      
      After that, the device works without problems. Been using it for over
      a week with no bugs in sight.
      
      The attached patch is trivial and simply adds the new USB ID to the
      list of devices handled by rt2800usb.
      Signed-off-by: default avatarMaia Kozheva <sikon@ubuntu.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      drivers/rtc/rtc-pl031.c: restore ST variant functionality
      
      commit 3399cfb5df9594495b876d1843a7165f77366b2b upstream.
      
      Commit e7e034e18a0a ("drivers/rtc/rtc-pl031.c: fix the missing operation
      on enable") accidentally broke the ST variants of PL031.
      
      The bit that is being poked as "clockwatch" enable bit for the ST
      variants does the work of bit 0 on this variant.  Bit 0 is used for a
      clock divider on the ST variants, and setting it to 1 will affect
      timekeeping in a very bad way.
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Acked-by: default avatarHaojian Zhuang <haojian.zhuang@gmail.com>
      Cc: Mian Yousaf KAUKAB <mian.yousaf.kaukab@stericsson.com>
      Cc: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com>
      Cc: Alessandro Zummo <a.zummo@towertech.it>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ata_piix: Add Device IDs for Intel Lynx Point-LP PCH
      
      commit 389cd784969e9148fedcde0608f15bd74d6b769e upstream.
      
      This patch adds the IDE-mode SATA Device IDs for the Intel Lynx Point-LP PCH
      Signed-off-by: default avatarJames Ralston <james.d.ralston@intel.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      speakup: lower default software speech rate
      
      commit cfd757010691eae4e17acc246f74e7622c3a2f05 upstream.
      
      Speech synthesis beginners need a low speech rate, and trained people
      want a high speech rate.  A medium speech rate is thus actually not a
      good default for neither.  Since trained people will typically know how
      to change the rate, better default for a low speech rate, which
      beginners can grasp and learn how to increase it afterwards
      
      This was agreed with users on the speakup mailing list.
      Signed-off-by: default avatarSamuel Thibault <samuel.thibault@ens-lyon.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      i2c: tegra: check the clk_prepare_enable() return value
      
      commit 132c803f7b70b17322579f6f4f3f65cf68e55135 upstream.
      
      NVIDIA's Tegra SoC allows read/write of controller register only
      if controller clock is enabled. System hangs if read/write happens
      to registers without enabling clock.
      
      clk_prepare_enable() can be fail due to unknown reason and hence
      adding check for return value of this function. If this function
      success then only access register otherwise return to caller with
      error.
      Signed-off-by: default avatarLaxman Dewangan <ldewangan@nvidia.com>
      Reviewed-by: default avatarStephen Warren <swarren@nvidia.com>
      Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
      [bwh: Backported to 3.2:
       - Adjust context
       - Keep calling clk_enable() directly]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ixgbe: fix registration order of driver and DCA nofitication
      
      commit f01fc1a82c2ee68726b400fadb156bd623b5f2f1 upstream.
      
      ixgbe_notify_dca cannot be called before driver registration
      because it expects driver's klist_devices to be allocated and
      initialized. While on it make sure debugfs files are removed
      when registration fails.
      Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      [bwh: Backported to 3.2: no debugfs support]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      msi-wmi: Fix memory leak
      
      commit 51c94491c82c3d9029f6e87a1a153db321d88e35 upstream.
      
      Fix memory leak - don't forget to kfree ACPI object when returning from
      msi_wmi_notify() after suppressing key event.
      Signed-off-by: default avatarMaxim Mikityanskiy <maxtram95@gmail.com>
      Acked-by: default avatarAnisse Astier <anisse@astier.eu>
      Signed-off-by: default avatarLee, Chun-Yi <jlee@suse.com>
      Signed-off-by: default avatarMatthew Garrett <matthew.garrett@nebula.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      rapidio/tsi721: fix bug in MSI interrupt handling
      
      commit 1ccc819da6fda9bee10ab8b72e9adbb5ad3e4959 upstream.
      
      Fix bug in MSI interrupt handling which causes loss of event
      notifications.
      
      Typical indication of lost MSI interrupts are stalled message and
      doorbell transfers between RapidIO endpoints.  To avoid loss of MSI
      interrupts all interrupts from the device must be disabled on entering
      the interrupt handler routine and re-enabled when exiting it.
      Re-enabling device interrupts will trigger new MSI message(s) if Tsi721
      registered new events since entering interrupt handler routine.
      
      This patch is applicable to kernel versions starting from v3.2.
      Signed-off-by: default avatarAlexandre Bounine <alexandre.bounine@idt.com>
      Cc: Matt Porter <mporter@kernel.crashing.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      rapidio/tsi721: Fix interrupt mask when handling MSI
      
      commit 94e0104bca7d6927e85119030b8e6e31fde88a7a upstream.
      
      Commit 1619f441963e 'rapidio/tsi721: fix bug in MSI interrupt
      handling' (commit 1ccc819da6fd upstream) makes the MSI handler disable
      and re-enable interrupts.  When re-enabling interrupts, we should set
      the same flags as were originally set, but this changed in Linux 3.5 so
      the flags are now inconsistent in 3.2.  In fact, the extra flag isn't
      even defined in 3.2.  Remove the extra flag from the MSI handler.
      Reported-by: default avatarSteve Conklin <steve.conklin@canonical.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      cfg80211: check wdev->netdev in connection work
      
      commit c815797663b72e3ac1736f1886538152bc48e4af upstream.
      
      If a P2P-Device is present and another virtual interface triggers
      the connection work, the system crash because it tries to check
      if the P2P-Device's netdev (which doesn't exist) is up. Skip any
      wdevs that have no netdev to fix this.
      Reported-by: default avatarYanBo <dreamfly281@gmail.com>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      i2c-piix4: Add AMD CZ SMBus device ID
      
      commit b996ac90f595dda271cbd858b136b45557fc1a57 upstream.
      
      To add AMD CZ SMBus controller device ID.
      
      [bhelgaas: drop pci_ids.h update]
      Signed-off-by: default avatarShane Huang <shane.huang@amd.com>
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Reviewed-by: default avatarTejun Heo <tj@kernel.org>
      Reviewed-by: default avatarJean Delvare <khali@linux-fr.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      b43: ensue that BCMA is "y" when B43 is "y"
      
      commit 693026ef2e751fd94d2e6c71028e68343cc875d5 upstream.
      
      When b43 gets build into the kernel and it should use bcma we have to
      ensure that bcma was also build into the kernel and not as a module.
      In this patch this is also done for SSB, although you can not
      build b43 without ssb support for now.
      
      This fixes a build problem reported by Randy Dunlap in
      5187EB95.2060605@infradead.org
      Reported-By: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarHauke Mehrtens <hauke@hauke-m.de>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      vgacon.c: add cond reschedule points in vgacon_do_font_op
      
      commit 7e6d72c15ff4cc0c27573901bb05f9eddbd71ed4 upstream.
      
      Booting a 64-vcpu KVM guest, with CONFIG_PREEMPT_VOLUNTARY,
      can result in a soft lockup:
      
      BUG: soft lockup - CPU#41 stuck for 67s! [setfont:1505]
       RIP: 0010:[<ffffffff812c48da>]
      [<ffffffff812c48da>] vgacon_do_font_op.clone.0+0x1ba/0x550
      
      This is due to the 8192 (cmapsz) IO operations taking longer than expected
      due to lock contention in QEMU.
      
      Add conditional resched points in between writes allowing other tasks to
      execute.
      Signed-off-by: default avatarMarcelo Tosatti <mtosatti@redhat.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      [bwh: Backported to 3.2: add #include <linux/sched.h>, already present
       upstream]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mac80211: drop spoofed packets in ad-hoc mode
      
      commit 6329b8d917adc077caa60c2447385554130853a3 upstream.
      
      If an Ad-Hoc node receives packets with the Cell ID or its own MAC
      address as source address, it hits a WARN_ON in sta_info_insert_check()
      With many packets, this can massively spam the logs. One way that this
      can easily happen is through having Cisco APs in the area with rouge AP
      detection and countermeasures enabled.
      Such Cisco APs will regularly send fake beacons, disassoc and deauth
      packets that trigger these warnings.
      
      To fix this issue, drop such spoofed packets early in the rx path.
      Reported-by: default avatarThomas Huehn <thomas@net.t-labs.tu-berlin.de>
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
      [bwh: Backported to 3.2: use compare_ether_addr() instead of ether_addr_equal()]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      crypto: s390 - Fix aes-cbc IV corruption
      
      commit f262f0f5cad0c9eca61d1d383e3b67b57dcbe5ea upstream.
      
      The cbc-aes-s390 algorithm incorrectly places the IV in the tfm
      data structure.  As the tfm is shared between multiple threads,
      this introduces a possibility of data corruption.
      
      This patch fixes this by moving the parameter block containing
      the IV and key onto the stack (the block is 48 bytes long).
      
      The same bug exists elsewhere in the s390 crypto system and they
      will be fixed in subsequent patches.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mtd: m25p80: fix allocation size
      
      commit 778d226a1462572b51d6777cdb1d611543410cb4 upstream.
      
      This patch fixes two memory errors:
      
      1. During a probe failure (in mtd_device_parse_register?) the command
         buffer would not be freed.
      
      2. The command buffer's size is determined based on the 'fast_read'
         boolean, but the assignment of fast_read is made after this
         allocation. Thus, the buffer may be allocated "too small".
      
      To fix the first, just switch to the devres version of kzalloc.
      
      To fix the second, increase MAX_CMD_SIZE unconditionally. It's not worth
      saving a byte to fiddle around with the conditions here.
      
      This problem was reported by Yuhang Wang a while back.
      Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
      Reported-by: default avatarYuhang Wang <wangyuhang2014@gmail.com>
      Reviewed-by: default avatarSourav Poddar <sourav.poddar@ti.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      backlight: atmel-pwm-bl: fix gpio polarity in remove
      
      commit ad5066d4c2b1d696749f8d7816357c23b648c4d3 upstream.
      
      Make sure to honour gpio polarity also at remove so that the backlight is
      actually disabled on boards with active-low enable pin.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Acked-by: default avatarJingoo Han <jg1.han@samsung.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      can: sja1000: fix {pre,post}_irq() handling and IRQ handler return value
      
      commit 2fea6cd303c0d0cd9067da31d873b6a6d5bd75e7 upstream.
      
      This patch fixes the issue that the sja1000_interrupt() function may have
      returned IRQ_NONE without processing the optional pre_irq() and post_irq()
      function before. Further the irq processing counter 'n' is moved to the end of
      the while statement to return correct IRQ_[NONE|HANDLED] values at error
      conditions.
      Reported-by: default avatarWolfgang Grandegger <wg@grandegger.com>
      Acked-by: default avatarWolfgang Grandegger <wg@grandegger.com>
      Signed-off-by: default avatarOliver Hartkopp <socketcan@hartkopp.net>
      Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      [bwh: Backported to 3.2: s/SJA1000_IER/REG_IER/; s/SJA1000_IR/REG_IR/]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      crypto: s390 - Fix aes-xts parameter corruption
      
      commit 9dda2769af4f3f3093434648c409bb351120d9e8 upstream.
      
      Some s390 crypto algorithms incorrectly use the crypto_tfm structure to
      store private data. As the tfm can be shared among multiple threads, this
      can result in data corruption.
      
      This patch fixes aes-xts by moving the xts and pcc parameter blocks from
      the tfm onto the stack (48 + 96 bytes).
      Signed-off-by: default avatarGerald Schaefer <gerald.schaefer@de.ibm.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      net: Add net_ratelimited_function and net_<level>_ratelimited macros
      
      commit 3a3bfb61e64476ff1e4ac3122cb6dec9c79b795c upstream.
      
      __ratelimit() can be considered an inverted bool test because
      it returns true when not ratelimited.  Several tests in the
      kernel tree use this __ratelimit() function incorrectly.
      
      No net_ratelimit uses are incorrect currently though.
      
      Most uses of net_ratelimit are to log something via printk or
      pr_<level>.
      
      In order to minimize the uses of net_ratelimit, and to start
      standardizing the code style used for __ratelimit() and net_ratelimit(),
      add a net_ratelimited_function() macro and net_<level>_ratelimited()
      logging macros similar to pr_<level>_ratelimited that use the global
      net_ratelimit instead of a static per call site "struct ratelimit_state".
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      xen-netfront: reduce gso_max_size to account for max TCP header
      
      commit 9ecd1a75d977e2e8c48139c7d3efed183f898d94 upstream.
      
      The maximum packet including header that can be handled by netfront / netback
      wire format is 65535. Reduce gso_max_size accordingly.
      
      Drop skb and print warning when skb->len > 65535. This can 1) save the effort
      to send malformed packet to netback, 2) help spotting misconfiguration of
      netfront in the future.
      Signed-off-by: default avatarWei Liu <wei.liu2@citrix.com>
      Acked-by: default avatarIan Campbell <ian.campbell@citrix.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [hq: Backported to 3.4: adjust context]
      Signed-off-by: default avatarQiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      PCI/ASPM: Don't touch ASPM if forcibly disabled
      
      commit a26d5ecb3201c11e03663a8f4a7dedc0c5f85c07 upstream.
      
      Don't allocate and track PCIe ASPM state when "pcie_aspm=off" is specified
      on the kernel command line.
      
      Based-on-patch-from: Matthew Garrett <mjg59@srcf.ucam.org>
      Signed-off-by: default avatarJoe Lawrence <joe.lawrence@stratus.com>
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      Reviewed-by: default avatarDavid Bulkow <david.bulkow@stratus.com>
      Acked-by: default avatarMyron Stowe <myron.stowe@redhat.com>
      [wyj: Backported to 3.4: context adjust]
      Signed-off-by: default avatarYijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: logitech: don't use stack based dj_report structures
      
      commit d8dc3494f77a5cc3b274bae36f7e74e85cf8a407 upstream.
      
      On a system with a logitech wireless keyboard/mouse and DMA-API debugging
      enabled, this warning appears at boot:
      
      kernel: WARNING: at lib/dma-debug.c:929 check_for_stack.part.12+0x70/0xa7()
      kernel: Hardware name: MS-7593
      kernel: uhci_hcd 0000:00:1d.1: DMA-API: device driver maps memory fromstack [addr=ffff8801b0079c29]
      
      Make logi_dj_recv_query_paired_devices and logi_dj_recv_switch_to_dj_mode
      use a structure allocated with kzalloc rather than a stack based one.
      Signed-off-by: default avatarMarc Dionne <marc.c.dionne@gmail.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      dj: memory scribble in logi_dj
      
      commit 8a55ade76551e3927b4e41ee9e7751875d18bc25 upstream.
      
      Allocate a structure not a pointer to it !
      Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Cc: Marc Dionne <marc.c.dionne@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ath9k: protect tid->sched check
      
      commit 21f8aaee0c62708654988ce092838aa7df4d25d8 upstream.
      
      We check tid->sched without a lock taken on ath_tx_aggr_sleep(). That
      is race condition which can result of doing list_del(&tid->list) twice
      (second time with poisoned list node) and cause crash like shown below:
      
      [424271.637220] BUG: unable to handle kernel paging request at 00100104
      [424271.637328] IP: [<f90fc072>] ath_tx_aggr_sleep+0x62/0xe0 [ath9k]
      ...
      [424271.639953] Call Trace:
      [424271.639998]  [<f90f6900>] ? ath9k_get_survey+0x110/0x110 [ath9k]
      [424271.640083]  [<f90f6942>] ath9k_sta_notify+0x42/0x50 [ath9k]
      [424271.640177]  [<f809cfef>] sta_ps_start+0x8f/0x1c0 [mac80211]
      [424271.640258]  [<c10f730e>] ? free_compound_page+0x2e/0x40
      [424271.640346]  [<f809e915>] ieee80211_rx_handlers+0x9d5/0x2340 [mac80211]
      [424271.640437]  [<c112f048>] ? kmem_cache_free+0x1d8/0x1f0
      [424271.640510]  [<c1345a84>] ? kfree_skbmem+0x34/0x90
      [424271.640578]  [<c10fc23c>] ? put_page+0x2c/0x40
      [424271.640640]  [<c1345a84>] ? kfree_skbmem+0x34/0x90
      [424271.640706]  [<c1345a84>] ? kfree_skbmem+0x34/0x90
      [424271.640787]  [<f809dde3>] ? ieee80211_rx_handlers_result+0x73/0x1d0 [mac80211]
      [424271.640897]  [<f80a07a0>] ieee80211_prepare_and_rx_handle+0x520/0xad0 [mac80211]
      [424271.641009]  [<f809e22d>] ? ieee80211_rx_handlers+0x2ed/0x2340 [mac80211]
      [424271.641104]  [<c13846ce>] ? ip_output+0x7e/0xd0
      [424271.641182]  [<f80a1057>] ieee80211_rx+0x307/0x7c0 [mac80211]
      [424271.641266]  [<f90fa6ee>] ath_rx_tasklet+0x88e/0xf70 [ath9k]
      [424271.641358]  [<f80a0f2c>] ? ieee80211_rx+0x1dc/0x7c0 [mac80211]
      [424271.641445]  [<f90f82db>] ath9k_tasklet+0xcb/0x130 [ath9k]
      
      Bug report:
      https://bugzilla.kernel.org/show_bug.cgi?id=70551
      
      Reported-and-tested-by: default avatarMax Sydorenko <maxim.stargazer@gmail.com>
      Signed-off-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      [bwh: Backported to 3.2:
       - Adjust context
       - Use spin_unlock_bh() directly]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [gkh: backported to 3.4:
       - adjust context
       - back out bwh's spinlock change]
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      802af5e9
    • Greg Kroah-Hartman's avatar
      Linux 3.4.91 · a5cba8de
      Greg Kroah-Hartman authored
      
      SCSI: megaraid: missing bounds check in mimd_to_kioc()
      
      commit 3de2260140417759c669d391613d583baf03b0cf upstream.
      
      pthru32->dataxferlen comes from the user so we need to check that it's
      not too large so we don't overflow the buffer.
      Reported-by: default avatarNico Golde <nico@ngolde.de>
      Reported-by: default avatarFabian Yamaguchi <fabs@goesec.de>
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Acked-by: default avatarSumit Saxena <sumit.saxena@lsi.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      blktrace: fix accounting of partially completed requests
      
      commit af5040da01ef980670b3741b3e10733ee3e33566 upstream.
      
      trace_block_rq_complete does not take into account that request can
      be partially completed, so we can get the following incorrect output
      of blkparser:
      
        C   R 232 + 240 [0]
        C   R 240 + 232 [0]
        C   R 248 + 224 [0]
        C   R 256 + 216 [0]
      
      but should be:
      
        C   R 232 + 8 [0]
        C   R 240 + 8 [0]
        C   R 248 + 8 [0]
        C   R 256 + 8 [0]
      
      Also, the whole output summary statistics of completed requests and
      final throughput will be incorrect.
      
      This patch takes into account real completion size of the request and
      fixes wrong completion accounting.
      Signed-off-by: default avatarRoman Pen <r.peniaev@gmail.com>
      CC: Steven Rostedt <rostedt@goodmis.org>
      CC: Frederic Weisbecker <fweisbec@gmail.com>
      CC: Ingo Molnar <mingo@redhat.com>
      CC: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      netfilter: nf_conntrack: reserve two bytes for nf_ct_ext->len
      
      commit 223b02d923ecd7c84cf9780bb3686f455d279279 upstream.
      
      "len" contains sizeof(nf_ct_ext) and size of extensions. In a worst
      case it can contain all extensions. Bellow you can find sizes for all
      types of extensions. Their sum is definitely bigger than 256.
      
      nf_ct_ext_types[0]->len = 24
      nf_ct_ext_types[1]->len = 32
      nf_ct_ext_types[2]->len = 24
      nf_ct_ext_types[3]->len = 32
      nf_ct_ext_types[4]->len = 152
      nf_ct_ext_types[5]->len = 2
      nf_ct_ext_types[6]->len = 16
      nf_ct_ext_types[7]->len = 8
      
      I have seen "len" up to 280 and my host has crashes w/o this patch.
      
      The right way to fix this problem is reducing the size of the ecache
      extension (4) and Florian is going to do this, but these changes will
      be quite large to be appropriate for a stable tree.
      
      Fixes: 5b423f6a40a0 (netfilter: nf_conntrack: fix racy timer handling with reliable)
      Cc: Pablo Neira Ayuso <pablo@netfilter.org>
      Cc: Patrick McHardy <kaber@trash.net>
      Cc: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarAndrey Vagin <avagin@openvz.org>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      net: Add net_ratelimited_function and net_<level>_ratelimited macros
      
      commit 3a3bfb61e64476ff1e4ac3122cb6dec9c79b795c upstream.
      
      __ratelimit() can be considered an inverted bool test because
      it returns true when not ratelimited.  Several tests in the
      kernel tree use this __ratelimit() function incorrectly.
      
      No net_ratelimit uses are incorrect currently though.
      
      Most uses of net_ratelimit are to log something via printk or
      pr_<level>.
      
      In order to minimize the uses of net_ratelimit, and to start
      standardizing the code style used for __ratelimit() and net_ratelimit(),
      add a net_ratelimited_function() macro and net_<level>_ratelimited()
      logging macros similar to pr_<level>_ratelimited that use the global
      net_ratelimit instead of a static per call site "struct ratelimit_state".
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      netfilter: Can't fail and free after table replacement
      
      commit c58dd2dd443c26d856a168db108a0cd11c285bf3 upstream.
      
      All xtables variants suffer from the defect that the copy_to_user()
      to copy the counters to user memory may fail after the table has
      already been exchanged and thus exposed. Return an error at this
      point will result in freeing the already exposed table. Any
      subsequent packet processing will result in a kernel panic.
      
      We can't copy the counters before exposing the new tables as we
      want provide the counter state after the old table has been
      unhooked. Therefore convert this into a silent error.
      
      Cc: Florian Westphal <fw@strlen.de>
      Signed-off-by: default avatarThomas Graf <tgraf@suug.ch>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tracepoint: Do not waste memory on mods with no tracepoints
      
      commit 7dec935a3aa04412cba2cebe1524ae0d34a30c24 upstream.
      
      No reason to allocate tp_module structures for modules that have no
      tracepoints. This just wastes memory.
      
      Fixes: b75ef8b4
      
       "Tracepoint: Dissociate from module mutex"
      Acked-by: default avatarMathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      powerpc: Add vr save/restore functions
      
      commit 8fe9c93e7453e67b8bd09f263ec1bb0783c733fc upstream.
      
      GCC 4.8 now generates out-of-line vr save/restore functions when
      optimizing for size.  They are needed for the raid6 altivec support.
      Signed-off-by: default avatarAndreas Schwab <schwab@linux-m68k.org>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Guenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tgafb: fix mode setting with fbset
      
      commit 624966589041deb32a2626ee2e176e8274581101 upstream.
      
      Mode setting in the TGA driver is broken for these reasons:
      
      - info->fix.line_length is set just once in tgafb_init_fix function. If
        we change videomode, info->fix.line_length is not recalculated - so
        the video mode is changed but the screen is corrupted because of wrong
        info->fix.line_length.
      
      - info->fix.smem_len is set in tgafb_init_fix to the size of the default
        video mode (640x480). If we set a higher resolution,
        info->fix.smem_len is smaller than the current screen size, preventing
        the userspace program from mapping the framebuffer.
      
      This patch fixes it:
      
      - info->fix.line_length initialization is moved to tgafb_set_par so that
        it is recalculated with each mode change.
      
      - info->fix.smem_len is set to a fixed value representing the real
        amount of video ram (the values are taken from xfree86 driver).
      
      - add a check to tgafb_check_var to prevent us from setting a videomode
        that doesn't fit into videoram.
      
      - in tgafb_register, tgafb_init_fix is moved upwards, to be called
        before fb_find_mode (because fb_find_mode already needs the videoram
        size set in tgafb_init_fix).
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a5cba8de
    • Greg Kroah-Hartman's avatar
      Linux 3.4.90 · b18af1f0
      Greg Kroah-Hartman authored
      
      drivers/tty/hvc: don't free hvc_console_setup after init
      
      commit 501fed45b7e8836ee9373f4d31e2d85e3db6103a upstream.
      
      When 'console=hvc0' is specified to the kernel parameter in x86 KVM guest,
      hvc console is setup within a kthread. However, that will cause SEGV
      and the boot will fail when the driver is builtin to the kernel,
      because currently hvc_console_setup() is annotated with '__init'. This
      patch removes '__init' to boot the guest successfully with 'console=hvc0'.
      Signed-off-by: default avatarTomoki Sekiyama <tomoki.sekiyama@hds.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      floppy: ignore kernel-only members in FDRAWCMD ioctl input
      
      commit ef87dbe7614341c2e7bfe8d32fcb7028cc97442c upstream.
      
      Always clear out these floppy_raw_cmd struct members after copying the
      entire structure from userspace so that the in-kernel version is always
      valid and never left in an interdeterminate state.
      Signed-off-by: default avatarMatthew Daley <mattd@bugfuzz.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      floppy: don't write kernel-only members to FDRAWCMD ioctl output
      
      commit 2145e15e0557a01b9195d1c7199a1b92cb9be81f upstream.
      
      Do not leak kernel-only floppy_raw_cmd structure members to userspace.
      This includes the linked-list pointer and the pointer to the allocated
      DMA space.
      Signed-off-by: default avatarMatthew Daley <mattd@bugfuzz.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      MIPS: Hibernate: Flush TLB entries in swsusp_arch_resume()
      
      commit c14af233fbe279d0e561ecf84f1208b1bae087ef upstream.
      
      The original MIPS hibernate code flushes cache and TLB entries in
      swsusp_arch_resume(). But they are removed in Commit 44eeab67
      
      
      (MIPS: Hibernation: Remove SMP TLB and cacheflushing code.). A cross-
      CPU flush is surely unnecessary because all but the local CPU have
      already been disabled. But a local flush (at least the TLB flush) is
      needed. When we do hibernation on Loongson-3 with an E1000E NIC, it is
      very easy to produce a kernel panic (kernel page fault, or unaligned
      access). The root cause is E1000E driver use vzalloc_node() to allocate
      pages, the stale TLB entries of the booting kernel will be misused by
      the resumed target kernel.
      Signed-off-by: default avatarHuacai Chen <chenhc@lemote.com>
      Cc: John Crispin <john@phrozen.org>
      Cc: Steven J. Hill <Steven.Hill@imgtec.com>
      Cc: Aurelien Jarno <aurelien@aurel32.net>
      Cc: linux-mips@linux-mips.org
      Cc: Fuxin Zhang <zhangfx@lemote.com>
      Cc: Zhangjin Wu <wuzhangjin@gmail.com>
      Patchwork: https://patchwork.linux-mips.org/patch/6643/
      
      Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      virtio_balloon: don't softlockup on huge balloon changes.
      
      commit 1f74ef0f2d7d692fcd615621e0e734c3e7771413 upstream.
      
      When adding or removing 100G from a balloon:
      
          BUG: soft lockup - CPU#0 stuck for 22s! [vballoon:367]
      
      We have a wait_event_interruptible(), but the condition is always true
      (more ballooning to do) so we don't ever sleep.  We also have a
      wait_event() for the host to ack, but that is also always true as QEMU
      is synchronous for balloon operations.
      Reported-by: default avatarGopesh Kumar Chaudhary <gopchaud@in.ibm.com>
      Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mpt2sas: Don't disable device twice at suspend.
      
      commit af61e27c3f77c7623b5335590ae24b6a5c323e22 upstream.
      
      On suspend, _scsih_suspend calls mpt2sas_base_free_resources, which
      in turn calls pci_disable_device if the device is enabled prior to
      suspending. However, _scsih_suspend also calls pci_disable_device
      itself.
      
      Thus, in the event that the device is enabled prior to suspending,
      pci_disable_device will be called twice. This patch removes the
      duplicate call to pci_disable_device in _scsi_suspend as it is both
      unnecessary and results in a kernel oops.
      Signed-off-by: default avatarTyler Stachecki <tstache1@binghamton.edu>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      crypto: ghash-clmulni-intel - use C implementation for setkey()
      
      commit 8ceee72808d1ae3fb191284afc2257a2be964725 upstream.
      
      The GHASH setkey() function uses SSE registers but fails to call
      kernel_fpu_begin()/kernel_fpu_end(). Instead of adding these calls, and
      then having to deal with the restriction that they cannot be called from
      interrupt context, move the setkey() implementation to the C domain.
      
      Note that setkey() does not use any particular SSE features and is not
      expected to become a performance bottleneck.
      Signed-off-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
      Acked-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      Fixes: 0e1227d3
      
       (crypto: ghash - Add PCLMULQDQ accelerated implementation)
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      framebuffer: fix cfb_copyarea
      
      commit 00a9d699bc85052d2d3ed56251cd928024ce06a3 upstream.
      
      The function cfb_copyarea is buggy when the copy operation is not aligned on
      long boundary (4 bytes on 32-bit machines, 8 bytes on 64-bit machines).
      
      How to reproduce:
      - use x86-64 machine
      - use a framebuffer driver without acceleration (for example uvesafb)
      - set the framebuffer to 8-bit depth
      	(for example fbset -a 1024x768-60 -depth 8)
      - load a font with character width that is not a multiple of 8 pixels
      	note: the console-tools package cannot load a font that has
      	width different from 8 pixels. You need to install the packages
      	"kbd" and "console-terminus" and use the program "setfont" to
      	set font width (for example: setfont Uni2-Terminus20x10)
      - move some text left and right on the bash command line and you get a
      	screen corruption
      
      To expose more bugs, put this line to the end of uvesafb_init_info:
      info->flags |= FBINFO_HWACCEL_COPYAREA | FBINFO_READS_FAST;
      - Now framebuffer console will use cfb_copyarea for console scrolling.
      You get a screen corruption when console is scrolled.
      
      This patch is a rewrite of cfb_copyarea. It fixes the bugs, with this
      patch, console scrolling in 8-bit depth with a font width that is not a
      multiple of 8 pixels works fine.
      
      The cfb_copyarea code was very buggy and it looks like it was written
      and never tried with non-8-pixel font.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      matroxfb: restore the registers M_ACCESS and M_PITCH
      
      commit a772d4736641ec1b421ad965e13457c17379fc86 upstream.
      
      When X11 is running and the user switches back to console, the card
      modifies the content of registers M_MACCESS and M_PITCH in periodic
      intervals.
      
      This patch fixes it by restoring the content of these registers before
      issuing any accelerator command.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mach64: use unaligned access
      
      commit c29dd8696dc5dbd50b3ac441b8a26751277ba520 upstream.
      
      This patch fixes mach64 to use unaligned access to the font bitmap.
      
      This fixes unaligned access warning on sparc64 when 14x8 font is loaded.
      
      On x86(64), unaligned access is handled in hardware, so both functions
      le32_to_cpup and get_unaligned_le32 perform the same operation.
      
      On RISC machines, unaligned access is not handled in hardware, so we
      better use get_unaligned_le32 to avoid the unaligned trap and warning.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mach64: fix cursor when character width is not a multiple of 8 pixels
      
      commit 43751a1b8ee2e70ce392bf31ef3133da324e68b3 upstream.
      
      This patch fixes the hardware cursor on mach64 when font width is not a
      multiple of 8 pixels.
      
      If you load such a font, the cursor is expanded to the next 8-byte
      boundary and a part of the next character after the cursor is not
      visible.
      For example, when you load a font with 12-pixel width, the cursor width
      is 16 pixels and when the cursor is displayed, 4 pixels of the next
      character are not visible.
      
      The reason is this: atyfb_cursor is called with proper parameters to
      load an image that is 12-pixel wide. However, the number is aligned on
      the next 8-pixel boundary on the line
      "unsigned int width = (cursor->image.width + 7) >> 3;" and the whole
      function acts as it is was loading a 16-pixel image.
      
      This patch fixes it so that the value written to the framebuffer is
      padded with 0xaaaa (the transparent pattern) when the image size it not
      a multiple of 8 pixels. The transparent pattern causes that the cursor
      will not interfere with the next character.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      b43: Fix machine check error due to improper access of B43_MMIO_PSM_PHY_HDR
      
      commit 12cd43c6ed6da7bf7c5afbd74da6959cda6d056b upstream.
      
      Register B43_MMIO_PSM_PHY_HDR is 16 bit one, so accessing it with 32b
      functions isn't safe. On my machine it causes delayed (!) CPU exception:
      
      Disabling lock debugging due to kernel taint
      mce: [Hardware Error]: CPU 0: Machine Check Exception: 4 Bank 4: b200000000070f0f
      mce: [Hardware Error]: TSC 164083803dc
      mce: [Hardware Error]: PROCESSOR 2:20fc2 TIME 1396650505 SOCKET 0 APIC 0 microcode 0
      mce: [Hardware Error]: Run the above through 'mcelog --ascii'
      mce: [Hardware Error]: Machine check: Processor context corrupt
      Kernel panic - not syncing: Fatal machine check on current CPU
      Kernel Offset: 0x0 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffff9fffffff)
      Signed-off-by: default avatarRafał Miłecki <zajec5@gmail.com>
      Acked-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      libata/ahci: accommodate tag ordered controllers
      
      commit 8a4aeec8d2d6a3edeffbdfae451cdf05cbf0fefd upstream.
      
      The AHCI spec allows implementations to issue commands in tag order
      rather than FIFO order:
      
      	5.3.2.12 P:SelectCmd
      	HBA sets pSlotLoc = (pSlotLoc + 1) mod (CAP.NCS + 1)
      	or HBA selects the command to issue that has had the
      	PxCI bit set to '1' longer than any other command
      	pending to be issued.
      
      The result is that commands posted sequentially (time-wise) may play out
      of sequence when issued by hardware.
      
      This behavior has likely been hidden by drives that arrange for commands
      to complete in issue order.  However, it appears recent drives (two from
      different vendors that we have found so far) inflict out-of-order
      completions as a matter of course.  So, we need to take care to maintain
      ordered submission, otherwise we risk triggering a drive to fall out of
      sequential-io automation and back to random-io processing, which incurs
      large latency and degrades throughput.
      
      This issue was found in simple benchmarks where QD=2 seq-write
      performance was 30-50% *greater* than QD=32 seq-write performance.
      
      Tagging for -stable and making the change globally since it has a low
      risk-to-reward ratio.  Also, word is that recent versions of an unnamed
      OS also does it this way now.  So, drives in the field are already
      experienced with this tag ordering scheme.
      
      Cc: Dave Jiang <dave.jiang@intel.com>
      Cc: Ed Ciechanowski <ed.ciechanowski@intel.com>
      Reviewed-by: default avatarMatthew Wilcox <matthew.r.wilcox@intel.com>
      Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      locks: allow __break_lease to sleep even when break_time is 0
      
      commit 4991a628a789dc5954e98e79476d9808812292ec upstream.
      
      A fl->fl_break_time of 0 has a special meaning to the lease break code
      that basically means "never break the lease". knfsd uses this to ensure
      that leases don't disappear out from under it.
      
      Unfortunately, the code in __break_lease can end up passing this value
      to wait_event_interruptible as a timeout, which prevents it from going
      to sleep at all. This causes __break_lease to spin in a tight loop and
      causes soft lockups.
      
      Fix this by ensuring that we pass a minimum value of 1 as a timeout
      instead.
      
      Cc: J. Bruce Fields <bfields@fieldses.org>
      Reported-by: default avatarTerry Barnaby <terry1@beam.ltd.uk>
      Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      rtlwifi: rtl8192cu: Fix too long disable of IRQs
      
      commit a53268be0cb9763f11da4f6fe3fb924cbe3a7d4a upstream.
      
      In commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 entitled "rtlwifi:
      rtl8192ce: Fix too long disable of IRQs", Olivier Langlois
      <olivier@trillion01.com> fixed a problem caused by an extra long disabling
      of interrupts. This patch makes the same fix for rtl8192cu.
      Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      rtlwifi: rtl8192se: Fix too long disable of IRQs
      
      commit 2610decdd0b3808ba20471a999835cfee5275f98 upstream.
      
      In commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 entitled "rtlwifi:
      rtl8192ce: Fix too long disable of IRQs", Olivier Langlois
      <olivier@trillion01.com> fixed a problem caused by an extra long disabling
      of interrupts. This patch makes the same fix for rtl8192se.
      Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      gpio: mxs: Allow for recursive enable_irq_wake() call
      
      commit a585f87c863e4e1d496459d382b802bf5ebe3717 upstream.
      
      The scenario here is that someone calls enable_irq_wake() from somewhere
      in the code. This will result in the lockdep producing a backtrace as can
      be seen below. In my case, this problem is triggered when using the wl1271
      (TI WlCore) driver found in drivers/net/wireless/ti/ .
      
      The problem cause is rather obvious from the backtrace, but let's outline
      the dependency. enable_irq_wake() grabs the IRQ buslock in irq_set_irq_wake(),
      which in turns calls mxs_gpio_set_wake_irq() . But mxs_gpio_set_wake_irq()
      calls enable_irq_wake() again on the one-level-higher IRQ , thus it tries to
      grab the IRQ buslock again in irq_set_irq_wake() . Because the spinlock in
      irq_set_irq_wake()->irq_get_desc_buslock()->__irq_get_desc_lock() is not
      marked as recursive, lockdep will spew the stuff below.
      
      We know we can safely re-enter the lock, so use IRQ_GC_INIT_NESTED_LOCK to
      fix the spew.
      
       =============================================
       [ INFO: possible recursive locking detected ]
       3.10.33-00012-gf06b763-dirty #61 Not tainted
       ---------------------------------------------
       kworker/0:1/18 is trying to acquire lock:
        (&irq_desc_lock_class){-.-...}, at: [<c00685f0>] __irq_get_desc_lock+0x48/0x88
      
       but task is already holding lock:
        (&irq_desc_lock_class){-.-...}, at: [<c00685f0>] __irq_get_desc_lock+0x48/0x88
      
       other info that might help us debug this:
        Possible unsafe locking scenario:
      
              CPU0
              ----
         lock(&irq_desc_lock_class);
         lock(&irq_desc_lock_class);
      
        *** DEADLOCK ***
      
        May be due to missing lock nesting notation
      
       3 locks held by kworker/0:1/18:
        #0:  (events){.+.+.+}, at: [<c0036308>] process_one_work+0x134/0x4a4
        #1:  ((&fw_work->work)){+.+.+.}, at: [<c0036308>] process_one_work+0x134/0x4a4
        #2:  (&irq_desc_lock_class){-.-...}, at: [<c00685f0>] __irq_get_desc_lock+0x48/0x88
      
       stack backtrace:
       CPU: 0 PID: 18 Comm: kworker/0:1 Not tainted 3.10.33-00012-gf06b763-dirty #61
       Workqueue: events request_firmware_work_func
       [<c0013eb4>] (unwind_backtrace+0x0/0xf0) from [<c0011c74>] (show_stack+0x10/0x14)
       [<c0011c74>] (show_stack+0x10/0x14) from [<c005bb08>] (__lock_acquire+0x140c/0x1a64)
       [<c005bb08>] (__lock_acquire+0x140c/0x1a64) from [<c005c6a8>] (lock_acquire+0x9c/0x104)
       [<c005c6a8>] (lock_acquire+0x9c/0x104) from [<c051d5a4>] (_raw_spin_lock_irqsave+0x44/0x58)
       [<c051d5a4>] (_raw_spin_lock_irqsave+0x44/0x58) from [<c00685f0>] (__irq_get_desc_lock+0x48/0x88)
       [<c00685f0>] (__irq_get_desc_lock+0x48/0x88) from [<c0068e78>] (irq_set_irq_wake+0x20/0xf4)
       [<c0068e78>] (irq_set_irq_wake+0x20/0xf4) from [<c027260c>] (mxs_gpio_set_wake_irq+0x1c/0x24)
       [<c027260c>] (mxs_gpio_set_wake_irq+0x1c/0x24) from [<c0068cf4>] (set_irq_wake_real+0x30/0x44)
       [<c0068cf4>] (set_irq_wake_real+0x30/0x44) from [<c0068ee4>] (irq_set_irq_wake+0x8c/0xf4)
       [<c0068ee4>] (irq_set_irq_wake+0x8c/0xf4) from [<c0310748>] (wlcore_nvs_cb+0x10c/0x97c)
       [<c0310748>] (wlcore_nvs_cb+0x10c/0x97c) from [<c02be5e8>] (request_firmware_work_func+0x38/0x58)
       [<c02be5e8>] (request_firmware_work_func+0x38/0x58) from [<c0036394>] (process_one_work+0x1c0/0x4a4)
       [<c0036394>] (process_one_work+0x1c0/0x4a4) from [<c0036a4c>] (worker_thread+0x138/0x394)
       [<c0036a4c>] (worker_thread+0x138/0x394) from [<c003cb74>] (kthread+0xa4/0xb0)
       [<c003cb74>] (kthread+0xa4/0xb0) from [<c000ee00>] (ret_from_fork+0x14/0x34)
       wlcore: loaded
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Acked-by: default avatarShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tgafb: fix data copying
      
      commit 6b0df6827bb6fcacb158dff29ad0a62d6418b534 upstream.
      
      The functions for data copying copyarea_foreward_8bpp and
      copyarea_backward_8bpp are buggy, they produce screen corruption.
      
      This patch fixes the functions and moves the logic to one function
      "copyarea_8bpp". For simplicity, the function only handles copying that
      is aligned on 8 pixes. If we copy an unaligned area, generic function
      cfb_copyarea is used.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mtd: nuc900_nand: NULL dereference in nuc900_nand_enable()
      
      commit c69dbbf3335a21aae74376d7e5db50a486d52439 upstream.
      
      Instead of writing to "nand->reg + REG_FMICSR" we write to "REG_FMICSR"
      which is NULL and not a valid register.
      
      Fixes: 8bff82cb
      
       ('mtd: add nand support for w90p910 (v2)')
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mtd: sm_ftl: heap corruption in sm_create_sysfs_attributes()
      
      commit b4c233057771581698a13694ab6f33b48ce837dc upstream.
      
      We always put a NUL terminator one space past the end of the "vendor"
      buffer.  Walter Harms also pointed out that this should just use
      kstrndup().
      
      Fixes: 7d17c02a
      
       ('mtd: Add new SmartMedia/xD FTL')
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Skip intel_crt_init for Dell XPS 8700
      
      commit 10b6ee4a87811a110cb01eaca01eb04da6801baf upstream.
      
      The Dell XPS 8700 has a onboard Display port and HDMI port and no VGA port.
      The call intel_crt_init freeze the machine, so skip such call.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=73559
      
      
      Signed-off-by: Giacomo Comes <comes at naic.edu>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      dm thin: fix dangling bio in process_deferred_bios error path
      
      commit fe76cd88e654124d1431bb662a0fc6e99ca811a5 upstream.
      
      If unable to ensure_next_mapping() we must add the current bio, which
      was removed from the @bios list via bio_list_pop, back to the
      deferred_bios list before all the remaining @bios.
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      Acked-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b18af1f0
    • Greg Kroah-Hartman's avatar
      Linux 3.4.89 · abf5a168
      Greg Kroah-Hartman authored
      
      ASoC: cs42l73: Fix mask bits for SOC_VALUE_ENUM_SINGLE
      
      commit 1555b652970e541fa1cb80c61ffc696bbfb92bb7 upstream.
      
      The mask bits values were wrong for the SOC_VALUE_ENUM_SINGLE for the mono mix controls.
      Reported-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBrian Austin <brian.austin@cirrus.com>
      Signed-off-by: default avatarMark Brown <broonie@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: OMAP2+: INTC: Acknowledge stuck active interrupts
      
      commit 698b48532539484b012fb7c4176b959d32a17d00 upstream.
      
      When an interrupt has become active on the INTC it will stay active
      until it is acked, even if masked or de-asserted. The
      INTC_PENDING_IRQn registers are however updated and since these are
      used by omap_intc_handle_irq to determine which interrupt to handle,
      it will never see the active interrupt. This will result in a storm of
      useless interrupts that is only stopped when another higher priority
      interrupt is asserted.
      
      Fix by sending the INTC an acknowledge if we find no interrupts to
      handle.
      Signed-off-by: default avatarStefan Sørensen <stefan.sorensen@spectralink.com>
      Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: OMAP3: hwmod data: Correct clock domains for USB modules
      
      commit c6c56697ae4bf1226263c19e8353343d7083f40e upstream.
      
      OMAP3 doesn't contain "l3_init_clkdm" clock domain. Use the
      proper clock domains for USB Host and USB TLL modules.
      
      Gets rid of the following warnings during boot
       omap_hwmod: usb_host_hs: could not associate to clkdm l3_init_clkdm
       omap_hwmod: usb_tll_hs: could not associate to clkdm l3_init_clkdm
      Reported-by: default avatarNishanth Menon <nm@ti.com>
      Cc: Paul Walmsley <paul@pwsan.com>
      Signed-off-by: default avatarRoger Quadros <rogerq@ti.com>
      Fixes: de231388
      
       ("ARM: OMAP: USB: EHCI and OHCI hwmod structures for OMAP3")
      Cc: Keshava Munegowda <keshava_mgowda@ti.com>
      Cc: Partha Basak <parthab@india.ti.com>
      Signed-off-by: default avatarPaul Walmsley <paul@pwsan.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: 8027/1: fix do_div() bug in big-endian systems
      
      commit 80bb3ef109ff40a7593d9481c17de9bbc4d7c0e2 upstream.
      
      In big-endian systems, "%1" get the most significant part of the value, cause the instruction to get the wrong result.
      
      When viewing ftrace record in big-endian ARM systems, we found that
      the timestamp errors:
      
      swapper-0   [001] 1325.970000:   0:120:R ==> [001]    16:120:R events/1
      events/1-16 [001] 1325.970000:   16:120:S ==> [001]    0:120:R swapper
      swapper-0   [000] 1325.1000000:  0:120:R   + [000]    15:120:R events/0
      swapper-0   [000] 1325.1000000:  0:120:R ==> [000]    15:120:R events/0
      swapper-0   [000] 1326.030000:   0:120:R   + [000]  1150:120:R sshd
      swapper-0   [000] 1326.030000:   0:120:R ==> [000]  1150:120:R sshd
      
      When viewed ftrace records, it will call the do_div(n, base) function, which achieved arch/arm/include/asm/div64.h in. When n = 10000000, base = 1000000, in do_div(n, base) will execute "umull %Q0, %R0, %1, %Q2".
      Reviewed-by: default avatarDave Martin <Dave.Martin@arm.com>
      Reviewed-by: default avatarNicolas Pitre <nico@linaro.org>
      Signed-off-by: default avatarAlex Wu <wuquanming@huawei.com>
      Signed-off-by: default avatarXiangyu Lu <luxiangyu@huawei.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: 8030/1: ARM : kdump : add arch_crash_save_vmcoreinfo
      
      commit 56b700fd6f1e49149880fb1b6ffee0dca5be45fb upstream.
      
      For vmcore generated by LPAE enabled kernel, user space
      utility such as crash needs additional infomation to
      parse.
      
      So this patch add arch_crash_save_vmcoreinfo as what PAE enabled
      i386 linux does.
      Reviewed-by: default avatarWill Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarLiu Hua <sdu.liu@huawei.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Enable beep for ASUS 1015E
      
      commit a4b7f21d7b42b33609df3f86992a8deff80abfaf upstream.
      
      The `lspci -nnvv` output contains (wrapped for line length):
      
        00:1b.0 Audio device [0403]:
          Intel Corporation 7 Series/C210 Series Chipset Family
          High Definition Audio Controller [8086:1e20] (rev 04)
              Subsystem: ASUSTeK Computer Inc. Device [1043:115d]
      Signed-off-by: default avatarW. Trevor King <wking@tremily.us>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: ice1712: Fix boundary checks in PCM pointer ops
      
      commit 4f8e940095536bc002a81666a4107a581c84e9b9 upstream.
      
      PCM pointer callbacks in ice1712 driver check the buffer size boundary
      wrongly between bytes and frames.  This leads to PCM core warnings
      like:
         snd_pcm_update_hw_ptr0: 105 callbacks suppressed
         ALSA pcm_lib.c:352 BUG: pcmC3D0c:0, pos = 5461, buffer size = 5461, period size = 2730
      
      This patch fixes these checks to be placed after the proper unit
      conversions.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mfd: max8925: Fix possible NULL pointer dereference on i2c_new_dummy error
      
      commit 96cf3dedc491d2f1f66cc26217f2b06b0c7b6797 upstream.
      
      During probe the driver allocates dummy I2C devices for RTC and ADC
      with i2c_new_dummy() but it does not check the return value of this
      calls.
      
      In case of error (i2c_new_device(): memory allocation failure or I2C
      address cannot be used) this function returns NULL which is later used
      by i2c_unregister_device().
      
      If i2c_new_dummy() fails for RTC or ADC devices, fail also the probe
      for main MFD driver.
      Signed-off-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mfd: max8998: Fix possible NULL pointer dereference on i2c_new_dummy error
      
      commit ed26f87b9f71693a1d1ee85f5e6209601505080f upstream.
      
      During probe the driver allocates dummy I2C device for RTC with i2c_new_dummy() but it does not check the return value of this call.
      
      In case of error (i2c_new_device(): memory allocation failure or I2C
      address cannot be used) this function returns NULL which is later used
      by i2c_unregister_device().
      
      If i2c_new_dummy() fails for RTC device, fail also the probe for
      main MFD driver.
      Signed-off-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mfd: max8997: Fix possible NULL pointer dereference on i2c_new_dummy error
      
      commit 97dc4ed3fa377ec91bb60ba98b70d645c2099384 upstream.
      
      During probe the driver allocates dummy I2C devices for RTC, haptic and
      MUIC with i2c_new_dummy() but it does not check the return value of this
      calls.
      
      In case of error (i2c_new_device(): memory allocation failure or I2C
      address cannot be used) this function returns NULL which is later used
      by i2c_unregister_device().
      
      If i2c_new_dummy() fails for RTC, haptic or MUIC devices, fail also the
      probe for main MFD driver.
      Signed-off-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      w1: fix w1_send_slave dropping a slave id
      
      commit 6b355b33a64fd6d8ead2b838ec16fb9b551f71e8 upstream.
      
      Previous logic,
      if (avail > 8) {
      	store slave;
      	return;
      }
      send data; clear;
      
      The logic error is, if there isn't space send the buffer and clear,
      but the slave wasn't added to the now empty buffer loosing that slave
      id.  It also should have been "if (avail >= 8)" because when it is 8,
      there is space.
      
      Instead, if there isn't space send and clear the buffer, then there is
      always space for the slave id.
      Signed-off-by: default avatarDavid Fries <David@Fries.net>
      Acked-by: default avatarEvgeniy Polyakov <zbr@ioremap.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      staging:serqt_usb2: Fix sparse warning restricted __le16 degrades to integer
      
      commit abe5d64d1a74195a44cd14624f8178b9f48b7cc7 upstream.
      
      This patch fixes the following sparse warning :
      drivers/staging/serqt_usb2/serqt_usb2.c:727:40: warning: restricted __le16 degrades to integer
      Signed-off-by: default avatarHimangi Saraogi <himangi774@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      staging: r8712u: Fix case where ethtype was never obtained and always be checked against 0
      
      commit f764cd68d9036498f08fe8834deb6a367b5c2542 upstream.
      
      Zero-initializing ether_type masked that the ether type would never be
      obtained for 8021x packets and the comparison against eapol_type
      would always fail.
      Reported-by: default avatarJes Sorensen <Jes.Sorensen@redhat.com>
      Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86-64, modify_ldt: Ban 16-bit segments on 64-bit kernels
      
      commit b3b42ac2cbae1f3cecbb6229964a4d48af31d382 upstream.
      
      The IRET instruction, when returning to a 16-bit segment, only
      restores the bottom 16 bits of the user space stack pointer.  We have
      a software workaround for that ("espfix") for the 32-bit kernel, but
      it relies on a nonzero stack segment base which is not available in
      32-bit mode.
      
      Since 16-bit support is somewhat crippled anyway on a 64-bit kernel
      (no V86 mode), and most (if not quite all) 64-bit processors support
      virtualization for the users who really need it, simply reject
      attempts at creating a 16-bit segment when running on top of a 64-bit
      kernel.
      
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      Link: http://lkml.kernel.org/n/tip-kicdm89kzw9lldryb1br9od0@git.kernel.org
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: fix crash during hotplug of PCI USB controller card
      
      commit a2ff864b53eac9a0e9b05bfe9d1781ccd6c2af71 upstream.
      
      The code in hcd-pci.c that matches up EHCI controllers with their
      companion UHCI or OHCI controllers assumes that the private drvdata
      fields don't get set too early.  However, it turns out that this field
      gets set by usb_create_hcd(), before hcd-pci expects it, and this can
      result in a crash when two controllers are probed in parallel (as can
      happen when a new controller card is hotplugged).
      
      The companions_rwsem lock was supposed to prevent this sort of thing,
      but usb_create_hcd() is called outside the scope of the rwsem.
      
      A simple solution is to check that the root-hub pointer has been
      initialized as well as the drvdata field.  This doesn't happen until
      usb_add_hcd() is called; that call and the check are both protected by
      the rwsem.
      
      This patch should be applied to stable kernels from 3.10 onward.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Reported-by: default avatarStefani Seibold <stefani@seibold.net>
      Tested-by: default avatarStefani Seibold <stefani@seibold.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd4: session needs room for following op to error out
      
      commit 4c69d5855a16f7378648c5733632628fa10431db upstream.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd4: buffer-length check for SUPPATTR_EXCLCREAT
      
      commit de3997a7eeb9ea286b15879fdf8a95aae065b4f7 upstream.
      
      This was an omission from 8c18f205
      
      
      "nfsd41: SUPPATTR_EXCLCREAT attribute".
      
      Cc: Benny Halevy <bhalevy@primarydata.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd4: fix test_stateid error reply encoding
      
      commit a11fcce1544df08c723d950ff0edef3adac40405 upstream.
      
      If the entire operation fails then there's nothing to encode.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd: notify_change needs elevated write count
      
      commit 9f67f189939eccaa54f3d2c9cf10788abaf2d584 upstream.
      
      Looks like this bug has been here since these write counts were
      introduced, not sure why it was just noticed now.
      
      Thanks also to Jan Kara for pointing out the problem.
      Reported-by: default avatarMatthew Rahtz <mrahtz@rapitasystems.com>
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      nfsd4: fix setclientid encode size
      
      commit 480efaee085235bb848f1063f959bf144103c342 upstream.
      Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      IB/ipath: Fix potential buffer overrun in sending diag packet routine
      
      commit a2cb0eb8a64adb29a99fd864013de957028f36ae upstream.
      
      Guard against a potential buffer overrun.  The size to read from the
      user is passed in, and due to the padding that needs to be taken into
      account, as well as the place holder for the ICRC it is possible to
      overflow the 32bit value which would cause more data to be copied from
      user space than is allocated in the buffer.
      Reported-by: default avatarNico Golde <nico@ngolde.de>
      Reported-by: default avatarFabian Yamaguchi <fabs@goesec.de>
      Reviewed-by: default avatarMike Marciniszyn <mike.marciniszyn@intel.com>
      Signed-off-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
      Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      IB/nes: Return an error on ib_copy_from_udata() failure instead of NULL
      
      commit 9d194d1025f463392feafa26ff8c2d8247f71be1 upstream.
      
      In case of error while accessing to userspace memory, function
      nes_create_qp() returns NULL instead of an error code wrapped through
      ERR_PTR().  But NULL is not expected by ib_uverbs_create_qp(), as it
      check for error with IS_ERR().
      
      As page 0 is likely not mapped, it is going to trigger an Oops when
      the kernel will try to dereference NULL pointer to access to struct
      ib_qp's fields.
      
      In some rare cases, page 0 could be mapped by userspace, which could
      turn this bug to a vulnerability that could be exploited: the function
      pointers in struct ib_device will be under userspace total control.
      
      This was caught when using spatch (aka. coccinelle)
      to rewrite calls to ib_copy_{from,to}_udata().
      
      Link: https://www.gitorious.org/opteya/ib-hw-nes-create-qp-null
      Link: https://www.gitorious.org/opteya/coccib/source/75ebf2c1033c64c1d81df13e4ae44ee99c989eba:ib_copy_udata.cocci
      Link: http://marc.info/?i=cover.1394485254.git.ydroneaud@opteya.com
      
      Signed-off-by: default avatarYann Droneaud <ydroneaud@opteya.com>
      Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      IB/mthca: Return an error on ib_copy_to_udata() failure
      
      commit 08e74c4b00c30c232d535ff368554959403d0432 upstream.
      
      In case of error when writing to userspace, the function mthca_create_cq()
      does not set an error code before following its error path.
      
      This patch sets the error code to -EFAULT when ib_copy_to_udata() fails.
      
      This was caught when using spatch (aka. coccinelle)
      to rewrite call to ib_copy_{from,to}_udata().
      
      Link: https://www.gitorious.org/opteya/coccib/source/75ebf2c1033c64c1d81df13e4ae44ee99c989eba:ib_copy_udata.cocci
      Link: http://marc.info/?i=cover.1394485254.git.ydroneaud@opteya.com
      
      Signed-off-by: default avatarYann Droneaud <ydroneaud@opteya.com>
      Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      IB/ehca: Returns an error on ib_copy_to_udata() failure
      
      commit 5bdb0f02add5994b0bc17494f4726925ca5d6ba1 upstream.
      
      In case of error when writing to userspace, function ehca_create_cq()
      does not set an error code before following its error path.
      
      This patch sets the error code to -EFAULT when ib_copy_to_udata()
      fails.
      
      This was caught when using spatch (aka. coccinelle)
      to rewrite call to ib_copy_{from,to}_udata().
      
      Link: https://www.gitorious.org/opteya/coccib/source/75ebf2c1033c64c1d81df13e4ae44ee99c989eba:ib_copy_udata.cocci
      Link: http://marc.info/?i=cover.1394485254.git.ydroneaud@opteya.com
      
      Signed-off-by: default avatarYann Droneaud <ydroneaud@opteya.com>
      Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ib_srpt: Use correct ib_sg_dma primitives
      
      commit b076808051f2c80d38e03fb2f1294f525c7a446d upstream.
      
      The code was incorrectly using sg_dma_address() and
      sg_dma_len() instead of ib_sg_dma_address() and
      ib_sg_dma_len().
      
      This prevents srpt from functioning with the
      Intel HCA and indeed will corrupt memory
      badly.
      
      Cc: Bart Van Assche <bvanassche@acm.org>
      Reviewed-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
      Tested-by: default avatarVinod Kumar <vinod.kumar@intel.com>
      Signed-off-by: default avatarMike Marciniszyn <mike.marciniszyn@intel.com>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      SCSI: arcmsr: upper 32 of dma address lost
      
      commit e2c70425f05219b142b3a8a9489a622c736db39d upstream.
      
      The original code always set the upper 32 bits to zero because it was
      doing a shift of the wrong variable.
      
      Fixes: 1a4f550a
      
       ('[SCSI] arcmsr: 1.20.00.15: add SATA RAID plus other fixes')
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      iscsi-target: Fix ERL=2 ASYNC_EVENT connection pointer bug
      
      commit d444edc679e7713412f243b792b1f964e5cff1e1 upstream.
      
      This patch fixes a long-standing bug in iscsit_build_conn_drop_async_message()
      where during ERL=2 connection recovery, a bogus conn_p pointer could
      end up being used to send the ISCSI_OP_ASYNC_EVENT + DROPPING_CONNECTION
      notifying the initiator that cmd->logout_cid has failed.
      
      The bug was manifesting itself as an OOPs in iscsit_allocate_cmd() with
      a bogus conn_p pointer in iscsit_build_conn_drop_async_message().
      Reported-by: default avatarArshad Hussain <arshad.hussain@calsoftinc.com>
      Reported-by: default avatarsantosh kulkarni <santosh.kulkarni@calsoftinc.com>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      target/tcm_fc: Fix use-after-free of ft_tpg
      
      commit 2c42be2dd4f6586728dba5c4e197afd5cfaded78 upstream.
      
      ft_del_tpg checks tpg->tport is set before unlinking the tpg from the
      tport when the tpg is being removed. Set this pointer in ft_tport_create,
      or the unlinking won't happen in ft_del_tpg and tport->tpg will reference
      a deleted object.
      
      This patch sets tpg->tport in ft_tport_create, because that's what
      ft_del_tpg checks, and is the only way to get back to the tport to
      clear tport->tpg.
      
      The bug was occuring when:
      
      - lport created, tport (our per-lport, per-provider context) is
        allocated.
        tport->tpg = NULL
      - tpg created
      - a PRLI is received. ft_tport_create is called, tpg is found and
        tport->tpg is set
      - tpg removed. ft_tpg is freed in ft_del_tpg. Since tpg->tport was not
        set, tport->tpg is not cleared and points at freed memory
      - Future calls to ft_tport_create return tport via first conditional,
        instead of searching for new tpg by calling ft_lport_find_tpg.
        tport->tpg is still invalid, and will access freed memory.
      
      see https://bugzilla.redhat.com/show_bug.cgi?id=1071340
      
      Signed-off-by: default avatarAndy Grover <agrover@redhat.com>
      Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      reiserfs: fix race in readdir
      
      commit 01d8885785a60ae8f4c37b0ed75bdc96d0fc6a44 upstream.
      
      jdm-20004 reiserfs_delete_xattrs: Couldn't delete all xattrs (-2)
      
      The -ENOENT is due to readdir calling dir_emit on the same entry twice.
      
      If the dir_emit callback sleeps and the tree is changed underneath us,
      we won't be able to trust deh_offset(deh) anymore. We need to save
      next_pos before we might sleep so we can find the next entry.
      Signed-off-by: default avatarJeff Mahoney <jeffm@suse.com>
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: musb: set TXMAXP and AUTOSET for full speed bulk in device mode
      
      commit bb3a2ef2eb8cfaea335dcb3426350df7f3d48069 upstream.
      
      The TXMAXP register is not set correctly for full speed bulk case
      when the can_bulk_split() is used. Without this PIO transfers will
      not take place correctly
      
      The "mult" factor needs to be updated correctly for the
      can_bulk_split() case
      
      The AUTOSET bit in the TXCSR is not being set if the "mult"
      factor is greater than 0 for the High Bandwidth ISO case.
      But the "mult" factor is also greater than 0 in case of Full speed
      bulk transfers with the packet splitting in TXMAXP register
      
      Without the AUTOSET the DMA transfers will not progress in mode1
      
      [ balbi@ti.com : add braces to both branches ]
      Signed-off-by: default avatarsupriya karanth <supriya.karanth@stericsson.com>
      Signed-off-by: default avatarPraveena NADAHALLY <praveen.nadahally@stericsson.com>
      Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Cc: ian coolidge <iancoolidge@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      xhci: extend quirk for Renesas cards
      
      commit 6db249ebefc6bf5c39f35dfaacc046d8ad3ffd70 upstream.
      
      After suspend another Renesas PCI-X USB 3.0 card doesn't work.
      [root@fedora-20 ~]# lspci -vmnnd 1912:
      Device:	03:00.0
      Class:	USB controller [0c03]
      Vendor:	Renesas Technology Corp. [1912]
      Device:	uPD720202 USB 3.0 Host Controller [0015]
      SVendor:	Renesas Technology Corp. [1912]
      SDevice:	uPD720202 USB 3.0 Host Controller [0015]
      Rev:	02
      ProgIf:	30
      
      This patch should be applied to stable kernel 3.14 that contain
      the commit 1aa9578c1a9450fb21501c4f549f5b1edb557e6d
      "xhci: Fix resume issues on Renesas chips in Samsung laptops"
      Reported-and-tested-by: default avatarAnatoly Kharchenko <rfr-bugs@yandex.ru>
      Reference: http://redmine.russianfedora.pro/issues/1315
      
      Signed-off-by: default avatarIgor Gnatenko <i.gnatenko.brain@gmail.com>
      Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb/xhci: fix compilation warning
      
      usb: dwc3: fix wrong bit mask in dwc3_event_devt
      
      commit 06f9b6e59661cee510b04513b13ea7927727d758 upstream.
      
      Around DWC USB3 2.30a release another bit has been added to the
      Device-Specific Event (DEVT) Event Information (EvtInfo) bitfield.
      
      Because of that, what used to be 8 bits long, has become 9 bits long.
      
      Per dwc3 2.30a+ spec in the Device-Specific Event (DEVT), the field of
      Event Information Bits(EvtInfo) uses [24:16] bits, and it has 9 bits
      not 8 bits. And the following reserved field uses [31:25] bits not
      [31:24] bits, and it has 7 bits.
      
      So in dwc3_event_devt, the bit mask should be:
      event_info	[24:16]		9 bits
      reserved31_25	[31:25]		7 bits
      
      This patch makes sure that newer core releases will work fine with
      Linux and that we will decode the event information properly on new
      core releases.
      
      [ balbi@ti.com : improve commit log a bit ]
      Signed-off-by: default avatarHuang Rui <ray.huang@amd.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hvc: ensure hvc_init is only ever called once in hvc_console.c
      
      commit f76a1cbed18c86e2d192455f0daebb48458965f3 upstream.
      
      Commit 3e6c6f63 ("Delay creation of
      khcvd thread") moved the call of hvc_init from being a device_initcall
      into hvc_alloc, and used a non-null hvc_driver as indication of whether
      hvc_init had already been called.
      
      The problem with this is that hvc_driver is only assigned a value
      at the bottom of hvc_init, and so there is a window where multiple
      hvc_alloc calls can be in progress at the same time and hence try
      and call hvc_init multiple times.  Previously the use of device_init
      guaranteed that hvc_init was only called once.
      
      This manifests itself as sporadic instances of two hvc_init calls
      racing each other, and with the loser of the race getting -EBUSY
      from tty_register_driver() and hence that virtual console fails:
      
          Couldn't register hvc console driver
          virtio-ports vport0p1: error -16 allocating hvc for port
      
      Here we add an atomic_t to guarantee we'll never run hvc_init twice.
      
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Fixes: 3e6c6f63
      
       ("Delay creation of khcvd thread")
      Reported-by: default avatarJim Somerville <Jim.Somerville@windriver.com>
      Tested-by: default avatarJim Somerville <Jim.Somerville@windriver.com>
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: unbind all interfaces before rebinding any
      
      commit 6aec044cc2f5670cf3b143c151c8be846499bd15 upstream.
      
      When a driver doesn't have pre_reset, post_reset, or reset_resume
      methods, the USB core unbinds that driver when its device undergoes a
      reset or a reset-resume, and then rebinds it afterward.
      
      The existing straightforward implementation can lead to problems,
      because each interface gets unbound and rebound before the next
      interface is handled.  If a driver claims additional interfaces, the
      claim may fail because the old binding instance may still own the
      additional interface when the new instance tries to claim it.
      
      This patch fixes the problem by first unbinding all the interfaces
      that are marked (i.e., their needs_binding flag is set) and then
      rebinding all of them.
      
      The patch also makes the helper functions in driver.c a little more
      uniform and adjusts some out-of-date comments.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Reported-and-tested-by: default avatar"Poulain, Loic" <loic.poulain@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      sh: fix format string bug in stack tracer
      
      commit a0c32761e73c9999cbf592b702f284221fea8040 upstream.
      
      Kees reported the following error:
      
         arch/sh/kernel/dumpstack.c: In function 'print_trace_address':
         arch/sh/kernel/dumpstack.c:118:2: error: format not a string literal and no format arguments [-Werror=format-security]
      
      Use the "%s" format so that it's impossible to interpret 'data' as a
      format string.
      Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
      Reported-by: default avatarKees Cook <keescook@chromium.org>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mm: hugetlb: fix softlockup when a large number of hugepages are freed.
      
      commit 55f67141a8927b2be3e51840da37b8a2320143ed upstream.
      
      When I decrease the value of nr_hugepage in procfs a lot, softlockup
      happens.  It is because there is no chance of context switch during this
      process.
      
      On the other hand, when I allocate a large number of hugepages, there is
      some chance of context switch.  Hence softlockup doesn't happen during
      this process.  So it's necessary to add the context switch in the
      freeing process as same as allocating process to avoid softlockup.
      
      When I freed 12 TB hugapages with kernel-2.6.32-358.el6, the freeing
      process occupied a CPU over 150 seconds and following softlockup message
      appeared twice or more.
      
      $ echo 6000000 > /proc/sys/vm/nr_hugepages
      $ cat /proc/sys/vm/nr_hugepages
      6000000
      $ grep ^Huge /proc/meminfo
      HugePages_Total:   6000000
      HugePages_Free:    6000000
      HugePages_Rsvd:        0
      HugePages_Surp:        0
      Hugepagesize:       2048 kB
      $ echo 0 > /proc/sys/vm/nr_hugepages
      
      BUG: soft lockup - CPU#16 stuck for 67s! [sh:12883] ...
      Pid: 12883, comm: sh Not tainted 2.6.32-358.el6.x86_64 #1
      Call Trace:
        free_pool_huge_page+0xb8/0xd0
        set_max_huge_pages+0x128/0x190
        hugetlb_sysctl_handler_common+0x113/0x140
        hugetlb_sysctl_handler+0x1e/0x20
        proc_sys_call_handler+0x97/0xd0
        proc_sys_write+0x14/0x20
        vfs_write+0xb8/0x1a0
        sys_write+0x51/0x90
        __audit_syscall_exit+0x265/0x290
        system_call_fastpath+0x16/0x1b
      
      I have not confirmed this problem with upstream kernels because I am not
      able to prepare the machine equipped with 12TB memory now.  However I
      confirmed that the amount of decreasing hugepages was directly
      proportional to the amount of required time.
      
      I measured required times on a smaller machine.  It showed 130-145
      hugepages decreased in a millisecond.
      
        Amount of decreasing     Required time      Decreasing rate
        hugepages                     (msec)         (pages/msec)
        ------------------------------------------------------------
        10,000 pages == 20GB         70 -  74          135-142
        30,000 pages == 60GB        208 - 229          131-144
      
      It means decrement of 6TB hugepages will trigger softlockup with the
      default threshold 20sec, in this decreasing rate.
      Signed-off-by: default avatarMasayoshi Mizuma <m.mizuma@jp.fujitsu.com>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
      Cc: Aneesh Kumar <aneesh.kumar@linux.vnet.ibm.com>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hung_task: check the value of "sysctl_hung_task_timeout_sec"
      
      commit 80df28476505ed4e6701c3448c63c9229a50c655 upstream.
      
      As sysctl_hung_task_timeout_sec is unsigned long, when this value is
      larger then LONG_MAX/HZ, the function schedule_timeout_interruptible in
      watchdog will return immediately without sleep and with print :
      
        schedule_timeout: wrong timeout value ffffffffffffff83
      
      and then the funtion watchdog will call schedule_timeout_interruptible
      again and again.  The screen will be filled with
      
      	"schedule_timeout: wrong timeout value ffffffffffffff83"
      
      This patch does some check and correction in sysctl, to let the function
      schedule_timeout_interruptible allways get the valid parameter.
      Signed-off-by: default avatarLiu Hua <sdu.liu@huawei.com>
      Tested-by: default avatarSatoru Takeuchi <satoru.takeuchi@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ocfs2: dlm: fix lock migration crash
      
      commit 34aa8dac482f1358d59110d5e3a12f4351f6acaa upstream.
      
      This issue was introduced by commit 800deef3
      
       ("ocfs2: use
      list_for_each_entry where benefical") in 2007 where it replaced
      list_for_each with list_for_each_entry.  The variable "lock" will point
      to invalid data if "tmpq" list is empty and a panic will be triggered
      due to this.  Sunil advised reverting it back, but the old version was
      also not right.  At the end of the outer for loop, that
      list_for_each_entry will also set "lock" to an invalid data, then in the
      next loop, if the "tmpq" list is empty, "lock" will be an stale invalid
      data and cause the panic.  So reverting the list_for_each back and reset
      "lock" to NULL to fix this issue.
      
      Another concern is that this seemes can not happen because the "tmpq"
      list should not be empty.  Let me describe how.
      
      old lock resource owner(node 1):                                  migratation target(node 2):
      image there's lockres with a EX lock from node 2 in
      granted list, a NR lock from node x with convert_type
      EX in converting list.
      dlm_empty_lockres() {
       dlm_pick_migration_target() {
         pick node 2 as target as its lock is the first one
         in granted list.
       }
       dlm_migrate_lockres() {
         dlm_mark_lockres_migrating() {
           res->state |= DLM_LOCK_RES_BLOCK_DIRTY;
           wait_event(dlm->ast_wq, !dlm_lockres_is_dirty(dlm, res));
      	 //after the above code, we can not dirty lockres any more,
           // so dlm_thread shuffle list will not run
                                                                         downconvert lock from EX to NR
                                                                         upconvert lock from NR to EX
      <<< migration may schedule out here, then
      <<< node 2 send down convert request to convert type from EX to
      <<< NR, then send up convert request to convert type from NR to
      <<< EX, at this time, lockres granted list is empty, and two locks
      <<< in the converting list, node x up convert lock followed by
      <<< node 2 up convert lock.
      
      	 // will set lockres RES_MIGRATING flag, the following
      	 // lock/unlock can not run
           dlm_lockres_release_ast(dlm, res);
         }
      
         dlm_send_one_lockres()
                                                                       dlm_process_recovery_data()
                                                                         for (i=0; i<mres->num_locks; i++)
                                                                           if (ml->node == dlm->node_num)
                                                                             for (j = DLM_GRANTED_LIST; j <= DLM_BLOCKED_LIST; j++) {
                                                                              list_for_each_entry(lock, tmpq, list)
                                                                              if (lock) break; <<< lock is invalid as grant list is empty.
                                                                             }
                                                                             if (lock->ml.node != ml->node)
                                                                               BUG() >>> crash here
       }
      
      I see the above locks status from a vmcore of our internal bug.
      Signed-off-by: default avatarJunxiao Bi <junxiao.bi@oracle.com>
      Reviewed-by: default avatarWengang Wang <wen.gang.wang@oracle.com>
      Cc: Sunil Mushran <sunil.mushran@gmail.com>
      Reviewed-by: default avatarSrinivas Eeda <srinivas.eeda@oracle.com>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Mark Fasheh <mfasheh@suse.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ocfs2: dlm: fix recovery hung
      
      commit ded2cf71419b9353060e633b59e446c42a6a2a09 upstream.
      
      There is a race window in dlm_do_recovery() between dlm_remaster_locks()
      and dlm_reset_recovery() when the recovery master nearly finish the
      recovery process for a dead node.  After the master sends FINALIZE_RECO
      message in dlm_remaster_locks(), another node may become the recovery
      master for another dead node, and then send the BEGIN_RECO message to
      all the nodes included the old master, in the handler of this message
      dlm_begin_reco_handler() of old master, dlm->reco.dead_node and
      dlm->reco.new_master will be set to the second dead node and the new
      master, then in dlm_reset_recovery(), these two variables will be reset
      to default value.  This will cause new recovery master can not finish
      the recovery process and hung, at last the whole cluster will hung for
      recovery.
      
      old recovery master:                                 new recovery master:
      dlm_remaster_locks()
                                                        become recovery master for
                                                        another dead node.
                                                        dlm_send_begin_reco_message()
      dlm_begin_reco_handler()
      {
       if (dlm->reco.state & DLM_RECO_STATE_FINALIZE) {
        return -EAGAIN;
       }
       dlm_set_reco_master(dlm, br->node_idx);
       dlm_set_reco_dead_node(dlm, br->dead_node);
      }
      dlm_reset_recovery()
      {
       dlm_set_reco_dead_node(dlm, O2NM_INVALID_NODE_NUM);
       dlm_set_reco_master(dlm, O2NM_INVALID_NODE_NUM);
      }
                                                        will hang in dlm_remaster_locks() for
                                                        request dlm locks info
      
      Before send FINALIZE_RECO message, recovery master should set
      DLM_RECO_STATE_FINALIZE for itself and clear it after the recovery done,
      this can break the race windows as the BEGIN_RECO messages will not be
      handled before DLM_RECO_STATE_FINALIZE flag is cleared.
      
      A similar race may happen between new recovery master and normal node
      which is in dlm_finalize_reco_handler(), also fix it.
      Signed-off-by: default avatarJunxiao Bi <junxiao.bi@oracle.com>
      Reviewed-by: default avatarSrinivas Eeda <srinivas.eeda@oracle.com>
      Reviewed-by: default avatarWengang Wang <wen.gang.wang@oracle.com>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Mark Fasheh <mfasheh@suse.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ocfs2: do not put bh when buffer_uptodate failed
      
      commit f7cf4f5bfe073ad792ab49c04f247626b3e38db6 upstream.
      
      Do not put bh when buffer_uptodate failed in ocfs2_write_block and
      ocfs2_write_super_or_backup, because it will put bh in b_end_io.
      Otherwise it will hit a warning "VFS: brelse: Trying to free free
      buffer".
      Signed-off-by: default avatarAlex Chen <alex.chen@huawei.com>
      Reviewed-by: default avatarJoseph Qi <joseph.qi@huawei.com>
      Reviewed-by: default avatarSrinivas Eeda <srinivas.eeda@oracle.com>
      Cc: Mark Fasheh <mfasheh@suse.com>
      Acked-by: default avatarJoel Becker <jlbec@evilplan.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ext4: use i_size_read in ext4_unaligned_aio()
      
      commit 6e6358fc3c3c862bfe9a5bc029d3f8ce43dc9765 upstream.
      
      We haven't taken i_mutex yet, so we need to use i_size_read().
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: pl2303: add ids for Hewlett-Packard HP POS pole displays
      
      commit b16c02fbfb963fa2941b7517ebf1f8a21946775e upstream.
      
      Add device ids to pl2303 for the Hewlett-Packard HP POS pole displays:
      
      LD960: 03f0:0B39
      LCM220: 03f0:3139
      LCM960: 03f0:3239
      
      [ Johan: fix indentation and sort PIDs numerically ]
      Signed-off-by: default avatarAaron Sanders <aaron.sanders@hp.com>
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      abf5a168
    • Greg Kroah-Hartman's avatar
      Linux 3.4.88 · ad930f02
      Greg Kroah-Hartman authored
      net: sctp: fix skb leakage in COOKIE ECHO path of chunk->auth_chunk
      
      [ Upstream commit c485658bae87faccd7aed540fd2ca3ab37992310 ]
      
      While working on ec0223ec48a9 ("net: sctp: fix sctp_sf_do_5_1D_ce to
      verify if we/peer is AUTH capable"), we noticed that there's a skb
      memory leakage in the error path.
      
      Running the same reproducer as in ec0223ec48a9 and by unconditionally
      jumping to the error label (to simulate an error condition) in
      sctp_sf_do_5_1D_ce() receive path lets kmemleak detector bark about
      the unfreed chunk->auth_chunk skb clone:
      
      Unreferenced object 0xffff8800b8f3a000 (size 256):
        comm "softirq", pid 0, jiffies 4294769856 (age 110.757s)
        hex dump (first 32 bytes):
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
          89 ab 75 5e d4 01 58 13 00 00 00 00 00 00 00 00  ..u^..X.........
        backtrace:
          [<ffffffff816660be>] kmemleak_alloc+0x4e/0xb0
          [<ffffffff8119f328>] kmem_cache_alloc+0xc8/0x210
          [<ffffffff81566929>] skb_clone+0x49/0xb0
          [<ffffffffa0467459>] sctp_endpoint_bh_rcv+0x1d9/0x230 [sctp]
          [<ffffffffa046fdbc>] sctp_inq_push+0x4c/0x70 [sctp]
          [<ffffffffa047e8de>] sctp_rcv+0x82e/0x9a0 [sctp]
          [<ffffffff815abd38>] ip_local_deliver_finish+0xa8/0x210
          [<ffffffff815a64af>] nf_reinject+0xbf/0x180
          [<ffffffffa04b4762>] nfqnl_recv_verdict+0x1d2/0x2b0 [nfnetlink_queue]
          [<ffffffffa04aa40b>] nfnetlink_rcv_msg+0x14b/0x250 [nfnetlink]
          [<ffffffff815a3269>] netlink_rcv_skb+0xa9/0xc0
          [<ffffffffa04aa7cf>] nfnetlink_rcv+0x23f/0x408 [nfnetlink]
          [<ffffffff815a2bd8>] netlink_unicast+0x168/0x250
          [<ffffffff815a2fa1>] netlink_sendmsg+0x2e1/0x3f0
          [<ffffffff8155cc6b>] sock_sendmsg+0x8b/0xc0
          [<ffffffff8155d449>] ___sys_sendmsg+0x369/0x380
      
      What happens is that commit bbd0d598 clones the skb containing
      the AUTH chunk in sctp_endpoint_bh_rcv() when having the edge case
      that an endpoint requires COOKIE-ECHO chunks to be authenticated:
      
        ---------- INIT[RANDOM; CHUNKS; HMAC-ALGO] ---------->
        <------- INIT-ACK[RANDOM; CHUNKS; HMAC-ALGO] ---------
        ------------------ AUTH; COOKIE-ECHO ---------------->
        <-------------------- COOKIE-ACK ---------------------
      
      When we enter sctp_sf_do_5_1D_ce() and before we actually get to
      the point where we process (and subsequently free) a non-NULL
      chunk->auth_chunk, we could hit the "goto nomem_init" path from
      an error condition and thus leave the cloned skb around w/o
      freeing it.
      
      The fix is to centrally free such clones in sctp_chunk_destroy()
      handler that is invoked from sctp_chunk_free() after all refs have
      dropped; and also move both kfree_skb(chunk->auth_chunk) there,
      so that chunk->auth_chunk is either NULL (since sctp_chunkify()
      allocs new chunks through kmem_cache_zalloc()) or non-NULL with
      a valid skb pointer. chunk->skb and chunk->auth_chunk are the
      only skbs in the sctp_chunk structure that need to be handeled.
      
      While at it, we should use consume_skb() for both. It is the same
      as dev_kfree_skb() but more appropriately named as we are not
      a device but a protocol. Also, this effectively replaces the
      kfree_skb() from both invocations into consume_skb(). Functions
      are the same only that kfree_skb() assumes that the frame was
      being dropped after a failure (e.g. for tools like drop monitor),
      usage of consume_skb() seems more appropriate in function
      sctp_chunk_destroy() though.
      
      Fixes: bbd0d598
      
       ("[SCTP]: Implement the receive and verification of AUTH chunk")
      Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Cc: Vlad Yasevich <yasevich@gmail.com>
      Cc: Neil Horman <nhorman@tuxdriver.com>
      Acked-by: default avatarVlad Yasevich <vyasevich@gmail.com>
      Acked-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      bridge: multicast: add sanity check for query source addresses
      
      [ Upstream commit 6565b9eeef194afbb3beec80d6dd2447f4091f8c ]
      
      MLD queries are supposed to have an IPv6 link-local source address
      according to RFC2710, section 4 and RFC3810, section 5.1.14. This patch
      adds a sanity check to ignore such broken MLD queries.
      
      Without this check, such malformed MLD queries can result in a
      denial of service: The queries are ignored by any MLD listener
      therefore they will not respond with an MLD report. However,
      without this patch these malformed MLD queries would enable the
      snooping part in the bridge code, potentially shutting down the
      according ports towards these hosts for multicast traffic as the
      bridge did not learn about these listeners.
      Reported-by: default avatarJan Stancek <jstancek@redhat.com>
      Signed-off-by: default avatarLinus Lüssing <linus.luessing@web.de>
      Reviewed-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      net: unix: non blocking recvmsg() should not return -EINTR
      
      [ Upstream commit de1443916791d75fdd26becb116898277bb0273f ]
      
      Some applications didn't expect recvmsg() on a non blocking socket
      could return -EINTR. This possibility was added as a side effect
      of commit b3ca9b02 ("net: fix multithreaded signal handling in
      unix recv routines").
      
      To hit this bug, you need to be a bit unlucky, as the u->readlock
      mutex is usually held for very small periods.
      
      Fixes: b3ca9b02
      
       ("net: fix multithreaded signal handling in unix recv routines")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Cc: Rainer Weikusat <rweikusat@mobileactivedefense.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ipv6: don't set DST_NOCOUNT for remotely added routes
      
      [ Upstream commit c88507fbad8055297c1d1e21e599f46960cbee39 ]
      
      DST_NOCOUNT should only be used if an authorized user adds routes
      locally. In case of routes which are added on behalf of router
      advertisments this flag must not get used as it allows an unlimited
      number of routes getting added remotely.
      Signed-off-by: default avatarSabrina Dubroca <sd@queasysnail.net>
      Acked-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      vlan: Set correct source MAC address with TX VLAN offload enabled
      
      [ Upstream commit dd38743b4cc2f86be250eaf156cf113ba3dd531a ]
      
      With TX VLAN offload enabled the source MAC address for frames sent using the
      VLAN interface is currently set to the address of the real interface. This is
      wrong since the VLAN interface may be configured with a different address.
      
      The bug was introduced in commit 2205369a314e12fcec4781cc73ac9c08fc2b47de
      ("vlan: Fix header ops passthru when doing TX VLAN offload.").
      
      This patch sets the source address before calling the create function of the
      real interface.
      Signed-off-by: default avatarPeter Boström <peter.bostrom@netrounds.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      net: socket: error on a negative msg_namelen
      
      [ Upstream commit dbb490b96584d4e958533fb637f08b557f505657 ]
      
      When copying in a struct msghdr from the user, if the user has set the
      msg_namelen parameter to a negative value it gets clamped to a valid
      size due to a comparison between signed and unsigned values.
      
      Ensure the syscall errors when the user passes in a negative value.
      Signed-off-by: default avatarMatthew Leach <matthew.leach@arm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ipv6: Avoid unnecessary temporary addresses being generated
      
      [ Upstream commit ecab67015ef6e3f3635551dcc9971cf363cc1cd5 ]
      
      tmp_prefered_lft is an offset to ifp->tstamp, not now. Therefore
      age needs to be added to the condition.
      
      Age calculation in ipv6_create_tempaddr is different from the one
      in addrconf_verify and doesn't consider ADDRCONF_TIMER_FUZZ_MINUS.
      This can cause age in ipv6_create_tempaddr to be less than the one
      in addrconf_verify and therefore unnecessary temporary address to
      be generated.
      Use age calculation as in addrconf_modify to avoid this.
      Signed-off-by: default avatarHeiner Kallweit <heiner.kallweit@web.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ipv6: ip6_append_data_mtu do not handle the mtu of the second fragment properly
      
      [ Upstream commit e367c2d03dba4c9bcafad24688fadb79dd95b218 ]
      
      In ip6_append_data_mtu(), when the xfrm mode is not tunnel(such as
      transport),the ipsec header need to be added in the first fragment, so the mtu
      will decrease to reserve space for it, then the second fragment come, the mtu
      should be turn back, as the commit 0c1833797a5a6ec23ea9261d979aa18078720b74
      said.  however, in the commit a493e60ac4bbe2e977e7129d6d8cbb0dd236be, it use
      *mtu = min(*mtu, ...) to change the mtu, which lead to the new mtu is alway
      equal with the first fragment's. and cannot turn back.
      
      when I test through  ping6 -c1 -s5000 $ip (mtu=1280):
      ...frag (0|1232) ESP(spi=0x00002000,seq=0xb), length 1232
      ...frag (1232|1216)
      ...frag (2448|1216)
      ...frag (3664|1216)
      ...frag (4880|164)
      
      which should be:
      ...frag (0|1232) ESP(spi=0x00001000,seq=0x1), length 1232
      ...frag (1232|1232)
      ...frag (2464|1232)
      ...frag (3696|1232)
      ...frag (4928|116)
      
      so delete the min() when change back the mtu.
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Fixes: 75a493e60ac4bb ("ipv6: ip6_append_data_mtu did not care about pmtudisc and frag_size")
      Acked-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      vhost: fix total length when packets are too short
      
      [ Upstream commit d8316f3991d207fe32881a9ac20241be8fa2bad0 ]
      
      When mergeable buffers are disabled, and the
      incoming packet is too large for the rx buffer,
      get_rx_bufs returns success.
      
      This was intentional in order for make recvmsg
      truncate the packet and then handle_rx would
      detect err != sock_len and drop it.
      
      Unfortunately we pass the original sock_len to
      recvmsg - which means we use parts of iov not fully
      validated.
      
      Fix this up by detecting this overrun and doing packet drop
      immediately.
      
      CVE-2014-0077
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      vhost: validate vhost_get_vq_desc return value
      
      [ Upstream commit a39ee449f96a2cd44ce056d8a0a112211a9b1a1f ]
      
      vhost fails to validate negative error code
      from vhost_get_vq_desc causing
      a crash: we are using -EFAULT which is 0xfffffff2
      as vector size, which exceeds the allocated size.
      
      The code in question was introduced in commit
      8dd014ad
      
      
          vhost-net: mergeable buffers support
      
      CVE-2014-0055
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      xen-netback: remove pointless clause from if statement
      
      [ Upstream commit 0576eddf24df716d8570ef8ca11452a9f98eaab2 ]
      
      This patch removes a test in start_new_rx_buffer() that checks whether
      a copy operation is less than MAX_BUFFER_OFFSET in length, since
      MAX_BUFFER_OFFSET is defined to be PAGE_SIZE and the only caller of
      start_new_rx_buffer() already limits copy operations to PAGE_SIZE or less.
      Signed-off-by: default avatarPaul Durrant <paul.durrant@citrix.com>
      Cc: Ian Campbell <ian.campbell@citrix.com>
      Cc: Wei Liu <wei.liu2@citrix.com>
      Cc: Sander Eikelenboom <linux@eikelenboom.it>
      Reported-By: default avatarSander Eikelenboom <linux@eikelenboom.it>
      Tested-By: default avatarSander Eikelenboom <linux@eikelenboom.it>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ipv6: some ipv6 statistic counters failed to disable bh
      
      [ Upstream commit 43a43b6040165f7b40b5b489fe61a4cb7f8c4980 ]
      
      After commit c15b1ccadb323ea ("ipv6: move DAD and addrconf_verify
      processing to workqueue") some counters are now updated in process context
      and thus need to disable bh before doing so, otherwise deadlocks can
      happen on 32-bit archs. Fabio Estevam noticed this while while mounting
      a NFS volume on an ARM board.
      
      As a compensation for missing this I looked after the other *_STATS_BH
      and found three other calls which need updating:
      
      1) icmp6_send: ip6_fragment -> icmpv6_send -> icmp6_send (error handling)
      2) ip6_push_pending_frames: rawv6_sendmsg -> rawv6_push_pending_frames -> ...
         (only in case of icmp protocol with raw sockets in error handling)
      3) ping6_v6_sendmsg (error handling)
      
      Fixes: c15b1ccadb323ea ("ipv6: move DAD and addrconf_verify processing to workqueue")
      Reported-by: default avatarFabio Estevam <festevam@gmail.com>
      Tested-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Signed-off-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      netlink: don't compare the nul-termination in nla_strcmp
      
      [ Upstream commit 8b7b932434f5eee495b91a2804f5b64ebb2bc835 ]
      
      nla_strcmp compares the string length plus one, so it's implicitly
      including the nul-termination in the comparison.
      
       int nla_strcmp(const struct nlattr *nla, const char *str)
       {
              int len = strlen(str) + 1;
              ...
                      d = memcmp(nla_data(nla), str, len);
      
      However, if NLA_STRING is used, userspace can send us a string without
      the nul-termination. This is a problem since the string
      comparison will not match as the last byte may be not the
      nul-termination.
      
      Fix this by skipping the comparison of the nul-termination if the
      attribute data is nul-terminated. Suggested by Thomas Graf.
      
      Cc: Florian Westphal <fw@strlen.de>
      Cc: Thomas Graf <tgraf@suug.ch>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      isdnloop: Validate NUL-terminated strings from user.
      
      [ Upstream commit 77bc6bed7121936bb2e019a8c336075f4c8eef62 ]
      
      Return -EINVAL unless all of user-given strings are correctly
      NUL-terminated.
      Signed-off-by: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      isdnloop: several buffer overflows
      
      [ Upstream commit 7563487cbf865284dcd35e9ef5a95380da046737 ]
      
      There are three buffer overflows addressed in this patch.
      
      1) In isdnloop_fake_err() we add an 'E' to a 60 character string and
      then copy it into a 60 character buffer.  I have made the destination
      buffer 64 characters and I'm changed the sprintf() to a snprintf().
      
      2) In isdnloop_parse_cmd(), p points to a 6 characters into a 60
      character buffer so we have 54 characters.  The ->eazlist[] is 11
      characters long.  I have modified the code to return if the source
      buffer is too long.
      
      3) In isdnloop_command() the cbuf[] array was 60 characters long but the
      max length of the string then can be up to 79 characters.  I made the
      cbuf array 80 characters long and changed the sprintf() to snprintf().
      I also removed the temporary "dial" buffer and changed it to use "p"
      directly.
      
      Unfortunately, we pass the "cbuf" string from isdnloop_command() to
      isdnloop_writecmd() which truncates anything over 60 characters to make
      it fit in card->omsg[].  (It can accept values up to 255 characters so
      long as there is a '\n' character every 60 characters).  For now I have
      just fixed the memory corruption bug and left the other problems in this
      driver alone.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      rds: prevent dereference of a NULL device in rds_iw_laddr_check
      
      [ Upstream commit bf39b4247b8799935ea91d90db250ab608a58e50 ]
      
      Binding might result in a NULL device which is later dereferenced
      without checking.
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      sparc: PCI: Fix incorrect address calculation of PCI Bridge windows on Simba-bridges
      
      [ Upstream commit 557fc5873ef178c4b3e1e36a42db547ecdc43f9b ]
      
      The SIMBA APB Bridges lacks the 'ranges' of-property describing the
      PCI I/O and memory areas located beneath the bridge. Faking this
      information has been performed by reading range registers in the
      APB bridge, and calculating the corresponding areas.
      
      In commit 01f94c4a
      ("Fix sabre pci controllers with new probing scheme.") a bug was
      introduced into this calculation, causing the PCI memory areas
      to be calculated incorrectly: The shift size was set to be
      identical for I/O and MEM ranges, which is incorrect.
      
      This patch set the shift size of the MEM range back to the
      value used before 01f94c4a
      
      .
      Signed-off-by: default avatarKjetil Oftedal <oftedal@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Revert "sparc64: Fix __copy_{to,from}_user_inatomic defines."
      
      [ Upstream commit 16932237f2978a2265662f8de4af743b1f55a209 ]
      
      This reverts commit 145e1c00
      
      .
      
      This commit broke the behavior of __copy_from_user_inatomic when
      it is only partially successful. Instead of returning the number
      of bytes not copied, it now returns 1. This translates to the
      wrong value being returned by iov_iter_copy_from_user_atomic.
      
      xfstests generic/246 and LTP writev01 both fail on btrfs and nfs
      because of this.
      Signed-off-by: default avatarDave Kleikamp <dave.kleikamp@oracle.com>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: sparclinux@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      sparc32: fix build failure for arch_jump_label_transform
      
      [ Upstream commit 4f6500fff5f7644a03c46728fd7ef0f62fa6940b ]
      
      In arch/sparc/Kernel/Makefile, we see:
      
         obj-$(CONFIG_SPARC64)   += jump_label.o
      
      However, the Kconfig selects HAVE_ARCH_JUMP_LABEL unconditionally
      for all SPARC.  This in turn leads to the following failure when
      doing allmodconfig coverage builds:
      
      kernel/built-in.o: In function `__jump_label_update':
      jump_label.c:(.text+0x8560c): undefined reference to `arch_jump_label_transform'
      kernel/built-in.o: In function `arch_jump_label_transform_static':
      (.text+0x85cf4): undefined reference to `arch_jump_label_transform'
      make: *** [vmlinux] Error 1
      
      Change HAVE_ARCH_JUMP_LABEL to be conditional on SPARC64 so that it
      matches the Makefile.
      Signed-off-by: default avatarPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      sparc64: don't treat 64-bit syscall return codes as 32-bit
      
      [ Upstream commit 1535bd8adbdedd60a0ee62e28fd5225d66434371 ]
      
      When checking a system call return code for an error,
      linux_sparc_syscall was sign-extending the lower 32-bit value and
      comparing it to -ERESTART_RESTARTBLOCK. lseek can return valid return
      codes whose lower 32-bits alone would indicate a failure (such as 4G-1).
      Use the whole 64-bit value to check for errors. Only the 32-bit path
      should sign extend the lower 32-bit value.
      Signed-off-by: default avatarDave Kleikamp <dave.kleikamp@oracle.com>
      Acked-by: default avatarBob Picco <bob.picco@oracle.com>
      Acked-by: default avatarAllen Pais <allen.pais@oracle.com>
      Cc: David S. Miller <davem@davemloft.net>
      Cc: sparclinux@vger.kernel.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Char: ipmi_bt_sm, fix infinite loop
      
      commit a94cdd1f4d30f12904ab528152731fb13a812a16 upstream.
      
      In read_all_bytes, we do
      
        unsigned char i;
        ...
        bt->read_data[0] = BMC2HOST;
        bt->read_count = bt->read_data[0];
        ...
        for (i = 1; i <= bt->read_count; i++)
          bt->read_data[i] = BMC2HOST;
      
      If bt->read_data[0] == bt->read_count == 255, we loop infinitely in the
      'for' loop.  Make 'i' an 'int' instead of 'char' to get rid of the
      overflow and finish the loop after 255 iterations every time.
      Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
      Reported-and-debugged-by: default avatarRui Hui Dian <rhdian@novell.com>
      Cc: Tomas Cech <tcech@suse.cz>
      Cc: Corey Minyard <minyard@acm.org>
      Cc: <openipmi-developer@lists.sourceforge.net>
      Signed-off-by: default avatarCorey Minyard <cminyard@mvista.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      jffs2: Fix segmentation fault found in stress test
      
      commit 3367da5610c50e6b83f86d366d72b41b350b06a2 upstream.
      
      Creating a large file on a JFFS2 partition sometimes crashes with this call
      trace:
      
      [  306.476000] CPU 13 Unable to handle kernel paging request at virtual address c0000000dfff8002, epc == ffffffffc03a80a8, ra == ffffffffc03a8044
      [  306.488000] Oops[#1]:
      [  306.488000] Cpu 13
      [  306.492000] $ 0   : 0000000000000000 0000000000000000 0000000000008008 0000000000008007
      [  306.500000] $ 4   : c0000000dfff8002 000000000000009f c0000000e0007cde c0000000ee95fa58
      [  306.508000] $ 8   : 0000000000000001 0000000000008008 0000000000010000 ffffffffffff8002
      [  306.516000] $12   : 0000000000007fa9 000000000000ff0e 000000000000ff0f 80e55930aebb92bb
      [  306.524000] $16   : c0000000e0000000 c0000000ee95fa5c c0000000efc80000 ffffffffc09edd70
      [  306.532000] $20   : ffffffffc2b60000 c0000000ee95fa58 0000000000000000 c0000000efc80000
      [  306.540000] $24   : 0000000000000000 0000000000000004
      [  306.548000] $28   : c0000000ee950000 c0000000ee95f738 0000000000000000 ffffffffc03a8044
      [  306.556000] Hi    : 00000000000574a5
      [  306.560000] Lo    : 6193b7a7e903d8c9
      [  306.564000] epc   : ffffffffc03a80a8 jffs2_rtime_compress+0x98/0x198
      [  306.568000]     Tainted: G        W
      [  306.572000] ra    : ffffffffc03a8044 jffs2_rtime_compress+0x34/0x198
      [  306.580000] Status: 5000f8e3    KX SX UX KERNEL EXL IE
      [  306.584000] Cause : 00800008
      [  306.588000] BadVA : c0000000dfff8002
      [  306.592000] PrId  : 000c1100 (Netlogic XLP)
      [  306.596000] Modules linked in:
      [  306.596000] Process dd (pid: 170, threadinfo=c0000000ee950000, task=c0000000ee6e0858, tls=0000000000c47490)
      [  306.608000] Stack : 7c547f377ddc7ee4 7ffc7f967f5d7fae 7f617f507fc37ff4 7e7d7f817f487f5f
              7d8e7fec7ee87eb3 7e977ff27eec7f9e 7d677ec67f917f67 7f3d7e457f017ed7
              7fd37f517f867eb2 7fed7fd17ca57e1d 7e5f7fe87f257f77 7fd77f0d7ede7fdb
              7fba7fef7e197f99 7fde7fe07ee37eb5 7f5c7f8c7fc67f65 7f457fb87f847e93
              7f737f3e7d137cd9 7f8e7e9c7fc47d25 7dbb7fac7fb67e52 7ff17f627da97f64
              7f6b7df77ffa7ec5 80057ef17f357fb3 7f767fa27dfc7fd5 7fe37e8e7fd07e53
              7e227fcf7efb7fa1 7f547e787fa87fcc 7fcb7fc57f5a7ffb 7fc07f6c7ea97e80
              7e2d7ed17e587ee0 7fb17f9d7feb7f31 7f607e797e887faa 7f757fdd7c607ff3
              7e877e657ef37fbd 7ec17fd67fe67ff7 7ff67f797ff87dc4 7eef7f3a7c337fa6
              7fe57fc97ed87f4b 7ebe7f097f0b8003 7fe97e2a7d997cba 7f587f987f3c7fa9
              ...
      [  306.676000] Call Trace:
      [  306.680000] [<ffffffffc03a80a8>] jffs2_rtime_compress+0x98/0x198
      [  306.684000] [<ffffffffc0394f10>] jffs2_selected_compress+0x110/0x230
      [  306.692000] [<ffffffffc039508c>] jffs2_compress+0x5c/0x388
      [  306.696000] [<ffffffffc039dc58>] jffs2_write_inode_range+0xd8/0x388
      [  306.704000] [<ffffffffc03971bc>] jffs2_write_end+0x16c/0x2d0
      [  306.708000] [<ffffffffc01d3d90>] generic_file_buffered_write+0xf8/0x2b8
      [  306.716000] [<ffffffffc01d4e7c>] __generic_file_aio_write+0x1ac/0x350
      [  306.720000] [<ffffffffc01d50a0>] generic_file_aio_write+0x80/0x168
      [  306.728000] [<ffffffffc021f7dc>] do_sync_write+0x94/0xf8
      [  306.732000] [<ffffffffc021ff6c>] vfs_write+0xa4/0x1a0
      [  306.736000] [<ffffffffc02202e8>] SyS_write+0x50/0x90
      [  306.744000] [<ffffffffc0116cc0>] handle_sys+0x180/0x1a0
      [  306.748000]
      [  306.748000]
      Code: 020b202d  0205282d  90a50000 <90840000> 14a40038  00000000  0060602d  0000282d  016c5823
      [  306.760000] ---[ end trace 79dd088435be02d0 ]---
      Segmentation fault
      
      This crash is caused because the 'positions' is declared as an array of signed
      short. The value of position is in the range 0..65535, and will be converted
      to a negative number when the position is greater than 32767 and causes a
      corruption and crash. Changing the definition to 'unsigned short' fixes this
      issue
      Signed-off-by: default avatarJayachandran C <jchandra@broadcom.com>
      Signed-off-by: default avatarKamlakant Patel <kamlakant.patel@broadcom.com>
      Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      jffs2: Fix crash due to truncation of csize
      
      commit 41bf1a24c1001f4d0d41a78e1ac575d2f14789d7 upstream.
      
      mounting JFFS2 partition sometimes crashes with this call trace:
      
      [ 1322.240000] Kernel bug detected[#1]:
      [ 1322.244000] Cpu 2
      [ 1322.244000] $ 0   : 0000000000000000 0000000000000018 000000003ff00070 0000000000000001
      [ 1322.252000] $ 4   : 0000000000000000 c0000000f3980150 0000000000000000 0000000000010000
      [ 1322.260000] $ 8   : ffffffffc09cd5f8 0000000000000001 0000000000000088 c0000000ed300de8
      [ 1322.268000] $12   : e5e19d9c5f613a45 ffffffffc046d464 0000000000000000 66227ba5ea67b74e
      [ 1322.276000] $16   : c0000000f1769c00 c0000000ed1e0200 c0000000f3980150 0000000000000000
      [ 1322.284000] $20   : c0000000f3a80000 00000000fffffffc c0000000ed2cfbd8 c0000000f39818f0
      [ 1322.292000] $24   : 0000000000000004 0000000000000000
      [ 1322.300000] $28   : c0000000ed2c0000 c0000000ed2cfab8 0000000000010000 ffffffffc039c0b0
      [ 1322.308000] Hi    : 000000000000023c
      [ 1322.312000] Lo    : 000000000003f802
      [ 1322.316000] epc   : ffffffffc039a9f8 check_tn_node+0x88/0x3b0
      [ 1322.320000]     Not tainted
      [ 1322.324000] ra    : ffffffffc039c0b0 jffs2_do_read_inode_internal+0x1250/0x1e48
      [ 1322.332000] Status: 5400f8e3    KX SX UX KERNEL EXL IE
      [ 1322.336000] Cause : 00800034
      [ 1322.340000] PrId  : 000c1004 (Netlogic XLP)
      [ 1322.344000] Modules linked in:
      [ 1322.348000] Process jffs2_gcd_mtd7 (pid: 264, threadinfo=c0000000ed2c0000, task=c0000000f0e68dd8, tls=0000000000000000)
      [ 1322.356000] Stack : c0000000f1769e30 c0000000ed010780 c0000000ed010780 c0000000ed300000
              c0000000f1769c00 c0000000f3980150 c0000000f3a80000 00000000fffffffc
              c0000000ed2cfbd8 ffffffffc039c0b0 ffffffffc09c6340 0000000000001000
              0000000000000dec ffffffffc016c9d8 c0000000f39805a0 c0000000f3980180
              0000008600000000 0000000000000000 0000000000000000 0000000000000000
              0001000000000dec c0000000f1769d98 c0000000ed2cfb18 0000000000010000
              0000000000010000 0000000000000044 c0000000f3a80000 c0000000f1769c00
              c0000000f3d207a8 c0000000f1769d98 c0000000f1769de0 ffffffffc076f9c0
              0000000000000009 0000000000000000 0000000000000000 ffffffffc039cf90
              0000000000000017 ffffffffc013fbdc 0000000000000001 000000010003e61c
              ...
      [ 1322.424000] Call Trace:
      [ 1322.428000] [<ffffffffc039a9f8>] check_tn_node+0x88/0x3b0
      [ 1322.432000] [<ffffffffc039c0b0>] jffs2_do_read_inode_internal+0x1250/0x1e48
      [ 1322.440000] [<ffffffffc039cf90>] jffs2_do_crccheck_inode+0x70/0xd0
      [ 1322.448000] [<ffffffffc03a1b80>] jffs2_garbage_collect_pass+0x160/0x870
      [ 1322.452000] [<ffffffffc03a392c>] jffs2_garbage_collect_thread+0xdc/0x1f0
      [ 1322.460000] [<ffffffffc01541c8>] kthread+0xb8/0xc0
      [ 1322.464000] [<ffffffffc0106d18>] kernel_thread_helper+0x10/0x18
      [ 1322.472000]
      [ 1322.472000]
      Code: 67bd0050  94a4002c  2c830001 <00038036> de050218  2403fffc  0080a82d  00431824  24630044
      [ 1322.480000] ---[ end trace b052bb90e97dfbf5 ]---
      
      The variable csize in structure jffs2_tmp_dnode_info is of type uint16_t, but it
      is used to hold the compressed data length(csize) which is declared as uint32_t.
      So, when the value of csize exceeds 16bits, it gets truncated when assigned to
      tn->csize. This is causing a kernel BUG.
      Changing the definition of csize in jffs2_tmp_dnode_info to uint32_t fixes the issue.
      Signed-off-by: default avatarAjesh Kunhipurayil Vijayan <ajesh@broadcom.com>
      Signed-off-by: default avatarKamlakant Patel <kamlakant.patel@broadcom.com>
      Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      jffs2: avoid soft-lockup in jffs2_reserve_space_gc()
      
      commit 13b546d96207c131eeae15dc7b26c6e7d0f1cad7 upstream.
      
      We triggered soft-lockup under stress test on 2.6.34 kernel.
      
      BUG: soft lockup - CPU#1 stuck for 60009ms! [lockf2.test:14488]
      ...
      [<bf09a4d4>] (jffs2_do_reserve_space+0x420/0x440 [jffs2])
      [<bf09a528>] (jffs2_reserve_space_gc+0x34/0x78 [jffs2])
      [<bf0a1350>] (jffs2_garbage_collect_dnode.isra.3+0x264/0x478 [jffs2])
      [<bf0a2078>] (jffs2_garbage_collect_pass+0x9c0/0xe4c [jffs2])
      [<bf09a670>] (jffs2_reserve_space+0x104/0x2a8 [jffs2])
      [<bf09dc48>] (jffs2_write_inode_range+0x5c/0x4d4 [jffs2])
      [<bf097d8c>] (jffs2_write_end+0x198/0x2c0 [jffs2])
      [<c00e00a4>] (generic_file_buffered_write+0x158/0x200)
      [<c00e14f4>] (__generic_file_aio_write+0x3a4/0x414)
      [<c00e15c0>] (generic_file_aio_write+0x5c/0xbc)
      [<c012334c>] (do_sync_write+0x98/0xd4)
      [<c0123a84>] (vfs_write+0xa8/0x150)
      [<c0123d74>] (sys_write+0x3c/0xc0)]
      
      Fix this by adding a cond_resched() in the while loop.
      
      [akpm@linux-foundation.org: don't initialize `ret']
      Signed-off-by: default avatarLi Zefan <lizefan@huawei.com>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      jffs2: remove from wait queue after schedule()
      
      commit 3ead9578443b66ddb3d50ed4f53af8a0c0298ec5 upstream.
      
      @wait is a local variable, so if we don't remove it from the wait queue
      list, later wake_up() may end up accessing invalid memory.
      
      This was spotted by eyes.
      Signed-off-by: default avatarLi Zefan <lizefan@huawei.com>
      Cc: David Woodhouse <dwmw2@infradead.org>
      Cc: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarBrian Norris <computersforpeace@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      wait: fix reparent_leader() vs EXIT_DEAD->EXIT_ZOMBIE race
      
      commit dfccbb5e49a621c1b21a62527d61fc4305617aca upstream.
      
      wait_task_zombie() first does EXIT_ZOMBIE->EXIT_DEAD transition and
      drops tasklist_lock.  If this task is not the natural child and it is
      traced, we change its state back to EXIT_ZOMBIE for ->real_parent.
      
      The last transition is racy, this is even documented in 50b8d257
      
      
      "ptrace: partially fix the do_wait(WEXITED) vs EXIT_DEAD->EXIT_ZOMBIE
      race".  wait_consider_task() tries to detect this transition and clear
      ->notask_error but we can't rely on ptrace_reparented(), debugger can
      exit and do ptrace_unlink() before its sub-thread sets EXIT_ZOMBIE.
      
      And there is another problem which were missed before: this transition
      can also race with reparent_leader() which doesn't reset >exit_signal if
      EXIT_DEAD, assuming that this task must be reaped by someone else.  So
      the tracee can be re-parented with ->exit_signal != SIGCHLD, and if
      /sbin/init doesn't use __WALL it becomes unreapable.
      
      Change reparent_leader() to update ->exit_signal even if EXIT_DEAD.
      Note: this is the simple temporary hack for -stable, it doesn't try to
      solve all problems, it will be reverted by the next changes.
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Reported-by: default avatarJan Kratochvil <jan.kratochvil@redhat.com>
      Reported-by: default avatarMichal Schmidt <mschmidt@redhat.com>
      Tested-by: default avatarMichal Schmidt <mschmidt@redhat.com>
      Cc: Al Viro <viro@ZenIV.linux.org.uk>
      Cc: Lennart Poettering <lpoetter@redhat.com>
      Cc: Roland McGrath <roland@hack.frob.com>
      Cc: Tejun Heo <tj@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ad930f02
    • Greg Kroah-Hartman's avatar
      Linux 3.4.87 · 9f394999
      Greg Kroah-Hartman authored
      
      proc: pid/status: show all supplementary groups
      
      commit 8d238027b87e654be552eabdf492042a34c5c300 upstream.
      
      We display a list of supplementary group for each process in
      /proc/<pid>/status.  However, we show only the first 32 groups, not all of
      them.
      
      Although this is rare, but sometimes processes do have more than 32
      supplementary groups, and this kernel limitation breaks user-space apps
      that rely on the group list in /proc/<pid>/status.
      
      Number 32 comes from the internal NGROUPS_SMALL macro which defines the
      length for the internal kernel "small" groups buffer.  There is no
      apparent reason to limit to this value.
      
      This patch removes the 32 groups printing limit.
      
      The Linux kernel limits the amount of supplementary groups by NGROUPS_MAX,
      which is currently set to 65536.  And this is the maximum count of groups
      we may possibly print.
      Signed-off-by: default avatarArtem Bityutskiy <artem.bityutskiy@linux.intel.com>
      Acked-by: default avatarSerge E. Hallyn <serge.hallyn@ubuntu.com>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      idr: fix top layer handling
      
      commit 326cf0f0f308933c10236280a322031f0097205d upstream.
      
      Most functions in idr fail to deal with the high bits when the idr
      tree grows to the maximum height.
      
      * idr_get_empty_slot() stops growing idr tree once the depth reaches
        MAX_IDR_LEVEL - 1, which is one depth shallower than necessary to
        cover the whole range.  The function doesn't even notice that it
        didn't grow the tree enough and ends up allocating the wrong ID
        given sufficiently high @starting_id.
      
        For example, on 64 bit, if the starting id is 0x7fffff01,
        idr_get_empty_slot() will grow the tree 5 layer deep, which only
        covers the 30 bits and then proceed to allocate as if the bit 30
        wasn't specified.  It ends up allocating 0x3fffff01 without the bit
        30 but still returns 0x7fffff01.
      
      * __idr_remove_all() will not remove anything if the tree is fully
        grown.
      
      * idr_find() can't find anything if the tree is fully grown.
      
      * idr_for_each() and idr_get_next() can't iterate anything if the tree
        is fully grown.
      
      Fix it by introducing idr_max() which returns the maximum possible ID
      given the depth of tree and replacing the id limit checks in all
      affected places.
      
      As the idr_layer pointer array pa[] needs to be 1 larger than the
      maximum depth, enlarge pa[] arrays by one.
      
      While this plugs the discovered issues, the whole code base is
      horrible and in desparate need of rewrite.  It's fragile like hell,
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      [bwh: Backported to 3.2:
       - Adjust context
       - s/MAX_IDR_LEVEL/MAX_LEVEL/; s/MAX_IDR_SHIFT/MAX_ID_SHIFT/
       - Drop change to idr_alloc()]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      audit: wait_for_auditd() should use TASK_UNINTERRUPTIBLE
      
      commit f000cfdde5de4fc15dead5ccf524359c07eadf2b upstream.
      
      audit_log_start() does wait_for_auditd() in a loop until
      audit_backlog_wait_time passes or audit_skb_queue has a room.
      
      If signal_pending() is true this becomes a busy-wait loop, schedule() in
      TASK_INTERRUPTIBLE won't block.
      
      Thanks to Guy for fully investigating and explaining the problem.
      
      (akpm: that'll cause the system to lock up on a non-preemptible
      uniprocessor kernel)
      
      (Guy: "Our customer was in fact running a uniprocessor machine, and they
      reported a system hang.")
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Reported-by: default avatarGuy Streeter <streeter@redhat.com>
      Cc: Eric Paris <eparis@redhat.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      [bwh: Backported to 3.2: adjust context, indentation]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      printk: Fix rq->lock vs logbuf_lock unlock lock inversion
      
      commit dbda92d16f8655044e082930e4e9d244b87fde77 upstream.
      
      commit 07354eb1 ("locking printk: Annotate logbuf_lock as raw")
      reintroduced a lock inversion problem which was fixed in commit
      0b5e1c52
      
       ("printk: Release console_sem after logbuf_lock"). This
      happened probably when fixing up patch rejects.
      
      Restore the ordering and unlock logbuf_lock before releasing
      console_sem.
      Signed-off-by: default avatarybu <ybu@qti.qualcomm.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/E807E903FE6CBE4D95E420FBFCC273B827413C@nasanexd01h.na.qualcomm.com
      
      Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      workqueue: cond_resched() after processing each work item
      
      commit b22ce2785d97423846206cceec4efee0c4afd980 upstream.
      
      If !PREEMPT, a kworker running work items back to back can hog CPU.
      This becomes dangerous when a self-requeueing work item which is
      waiting for something to happen races against stop_machine.  Such
      self-requeueing work item would requeue itself indefinitely hogging
      the kworker and CPU it's running on while stop_machine would wait for
      that CPU to enter stop_machine while preventing anything else from
      happening on all other CPUs.  The two would deadlock.
      
      Jamie Liu reports that this deadlock scenario exists around
      scsi_requeue_run_queue() and libata port multiplier support, where one
      port may exclude command processing from other ports.  With the right
      timing, scsi_requeue_run_queue() can end up requeueing itself trying
      to execute an IO which is asked to be retried while another device has
      an exclusive access, which in turn can't make forward progress due to
      stop_machine.
      
      Fix it by invoking cond_resched() after executing each work item.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Reported-by: default avatarJamie Liu <jamieliu@google.com>
      References: http://thread.gmane.org/gmane.linux.kernel/1552567
      
      
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      compiler-gcc.h: Add gcc-recommended GCC_VERSION macro
      
      commit 3f3f8d2f48acfd8ed3b8e6b7377935da57b27b16 upstream.
      
      Throughout compiler*.h, many version checks are made.  These can be
      simplified by using the macro that gcc's documentation recommends.
      However, my primary reason for adding this is that I need bug-check
      macros that are enabled at certain gcc versions and it's cleaner to use
      this macro than the tradition method:
      
        #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ => 2)
      
      If you add patch level, it gets this ugly:
      
        #if __GNUC__ > 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ > 2 || \
            __GNUC_MINOR__ == 2 __GNUC_PATCHLEVEL__ >= 1))
      
      As opposed to:
      
        #if GCC_VERSION >= 40201
      
      While having separate headers for gcc 3 & 4 eliminates some of this
      verbosity, they can still be cleaned up by this.
      
      See also:
      
        http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
      
      Signed-off-by: default avatarDaniel Santos <daniel.santos@pobox.com>
      Acked-by: default avatarBorislav Petkov <bp@alien8.de>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Joe Perches <joe@perches.com>
      Cc: Josh Triplett <josh@joshtriplett.org>
      Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      compiler/gcc4: Add quirk for 'asm goto' miscompilation bug
      
      commit 3f0116c3238a96bc18ad4b4acefe4e7be32fa861 upstream.
      
      Fengguang Wu, Oleg Nesterov and Peter Zijlstra tracked down
      a kernel crash to a GCC bug: GCC miscompiles certain 'asm goto'
      constructs, as outlined here:
      
        http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
      
      
      
      Implement a workaround suggested by Jakub Jelinek.
      Reported-and-tested-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      Reported-by: default avatarOleg Nesterov <oleg@redhat.com>
      Reported-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
      Suggested-by: default avatarJakub Jelinek <jakub@redhat.com>
      Reviewed-by: default avatarRichard Henderson <rth@twiddle.net>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [hq: Backported to 3.4: Adjust context]
      Signed-off-by: default avatarQiang Huang <h.huangqiang@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ipc, msg: fix message length check for negative values
      
      commit 4e9b45a19241354daec281d7a785739829b52359 upstream.
      
      On 64 bit systems the test for negative message sizes is bogus as the
      size, which may be positive when evaluated as a long, will get truncated
      to an int when passed to load_msg().  So a long might very well contain a
      positive value but when truncated to an int it would become negative.
      
      That in combination with a small negative value of msg_ctlmax (which will
      be promoted to an unsigned type for the comparison against msgsz, making
      it a big positive value and therefore make it pass the check) will lead to
      two problems: 1/ The kmalloc() call in alloc_msg() will allocate a too
      small buffer as the addition of alen is effectively a subtraction.  2/ The
      copy_from_user() call in load_msg() will first overflow the buffer with
      userland data and then, when the userland access generates an access
      violation, the fixup handler copy_user_handle_tail() will try to fill the
      remainder with zeros -- roughly 4GB.  That almost instantly results in a
      system crash or reset.
      
        ,-[ Reproducer (needs to be run as root) ]--
        | #include <sys/stat.h>
        | #include <sys/msg.h>
        | #include <unistd.h>
        | #include <fcntl.h>
        |
        | int main(void) {
        |     long msg = 1;
        |     int fd;
        |
        |     fd = open("/proc/sys/kernel/msgmax", O_WRONLY);
        |     write(fd, "-1", 2);
        |     close(fd);
        |
        |     msgsnd(0, &msg, 0xfffffff0, IPC_NOWAIT);
        |
        |     return 0;
        | }
        '---
      
      Fix the issue by preventing msgsz from getting truncated by consistently
      using size_t for the message length.  This way the size checks in
      do_msgsnd() could still be passed with a negative value for msg_ctlmax but
      we would fail on the buffer allocation in that case and error out.
      
      Also change the type of m_ts from int to size_t to avoid similar nastiness
      in other code paths -- it is used in similar constructs, i.e.  signed vs.
      unsigned checks.  It should never become negative under normal
      circumstances, though.
      
      Setting msg_ctlmax to a negative value is an odd configuration and should
      be prevented.  As that might break existing userland, it will be handled
      in a separate commit so it could easily be reverted and reworked without
      reintroducing the above described bug.
      
      Hardening mechanisms for user copy operations would have catched that bug
      early -- e.g.  checking slab object sizes on user copy operations as the
      usercopy feature of the PaX patch does.  Or, for that matter, detect the
      long vs.  int sign change due to truncation, as the size overflow plugin
      of the very same patch does.
      
      [akpm@linux-foundation.org: fix i386 min() warnings]
      Signed-off-by: default avatarMathias Krause <minipli@googlemail.com>
      Cc: Pax Team <pageexec@freemail.hu>
      Cc: Davidlohr Bueso <davidlohr@hp.com>
      Cc: Brad Spengler <spender@grsecurity.net>
      Cc: Manfred Spraul <manfred@colorfullife.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      [bwh: Backported to 3.2:
       - Adjust context
       - Drop changes to alloc_msg() and copy_msg(), which don't exist]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      idr: idr_for_each_entry() macro
      
      commit 9749f30f1a387070e6e8351f35aeb829eacc3ab6 upstream.
      
      Inspired by the list_for_each_entry() macro
      Signed-off-by: default avatarPhilipp Reisner <philipp.reisner@linbit.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      pps: Add pps_lookup_dev() function
      
      commit 513b032c98b4b9414aa4e9b4a315cb1bf0380101 upstream.
      
      The PPS serial line discipline wants to attach a PPS device to a tty
      without changing the tty code to add a struct pps_device * pointer.
      
      Since the number of PPS devices in a typical system is generally very low
      (n=1 is by far the most common), it's practical to search the entire list
      of allocated pps devices.  (We capture the timestamp before the lookup,
      so the timing isn't affected.)
      
      It is a bit ugly that this function, which is part of the in-kernel
      PPS API, has to be in pps.c as opposed to kapi,c, but that's not
      something that affects users.
      Signed-off-by: default avatarGeorge Spelvin <linux@horizon.com>
      Acked-by: default avatarRodolfo Giometti <giometti@enneenne.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      pps: Use pps_lookup_dev to reduce ldisc coupling
      
      commit 03a7ffe4e542310838bac70ef85acc17536b6d7c upstream.
      
      Now that N_TTY uses tty->disc_data for its private data,
      'subclass' ldiscs cannot use ->disc_data for their own private data.
      (This is a regression is v3.8-rc1)
      
      Use pps_lookup_dev to associate the tty with the pps source instead.
      
      This fixes a crashing regression in 3.8-rc1.
      Signed-off-by: default avatarGeorge Spelvin <linux@horizon.com>
      Acked-by: default avatarRodolfo Giometti <giometti@enneenne.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      pps: Fix a use-after free bug when unregistering a source.
      
      commit d953e0e837e65ecc1ddaa4f9560f7925878a0de6 upstream.
      
      Remove the cdev from the system (with cdev_del) *before* deallocating it
      (in pps_device_destruct, called via kobject_put from device_destroy).
      
      Also prevent deallocating a device with open file handles.
      
      A better long-term fix is probably to remove the cdev from the pps_device
      entirely, and instead have all devices reference one global cdev.  Then
      the deallocation ordering becomes simpler.
      
      But that's more complex and invasive change, so we leave that
      for later.
      Signed-off-by: default avatarGeorge Spelvin <linux@horizon.com>
      Acked-by: default avatarRodolfo Giometti <giometti@enneenne.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Cc: Li Zefan <lizefan@huawei.com>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      selinux: correctly label /proc inodes in use before the policy is loaded
      
      commit f64410ec665479d7b4b77b7519e814253ed0f686 upstream.
      
      This patch is based on an earlier patch by Eric Paris, he describes
      the problem below:
      
        "If an inode is accessed before policy load it will get placed on a
         list of inodes to be initialized after policy load.  After policy
         load we call inode_doinit() which calls inode_doinit_with_dentry()
         on all inodes accessed before policy load.  In the case of inodes
         in procfs that means we'll end up at the bottom where it does:
      
           /* Default to the fs superblock SID. */
           isec->sid = sbsec->sid;
      
           if ((sbsec->flags & SE_SBPROC) && !S_ISLNK(inode->i_mode)) {
                   if (opt_dentry) {
                           isec->sclass = inode_mode_to_security_class(...)
                           rc = selinux_proc_get_sid(opt_dentry,
                                                     isec->sclass,
                                                     &sid);
                           if (rc)
                                   goto out_unlock;
                           isec->sid = sid;
                   }
           }
      
         Since opt_dentry is null, we'll never call selinux_proc_get_sid()
         and will leave the inode labeled with the label on the superblock.
         I believe a fix would be to mimic the behavior of xattrs.  Look
         for an alias of the inode.  If it can't be found, just leave the
         inode uninitialized (and pick it up later) if it can be found, we
         should be able to call selinux_proc_get_sid() ..."
      
      On a system exhibiting this problem, you will notice a lot of files in
      /proc with the generic "proc_t" type (at least the ones that were
      accessed early in the boot), for example:
      
         # ls -Z /proc/sys/kernel/shmmax | awk '{ print $4 " " $5 }'
         system_u:object_r:proc_t:s0 /proc/sys/kernel/shmmax
      
      However, with this patch in place we see the expected result:
      
         # ls -Z /proc/sys/kernel/shmmax | awk '{ print $4 " " $5 }'
         system_u:object_r:sysctl_kernel_t:s0 /proc/sys/kernel/shmmax
      
      Cc: Eric Paris <eparis@redhat.com>
      Signed-off-by: default avatarPaul Moore <pmoore@redhat.com>
      Acked-by: default avatarEric Paris <eparis@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      intel_idle: Check cpu_idle_get_driver() for NULL before dereferencing it.
      
      commit 3735d524da64b70b41c764359da36f88aded3610 upstream.
      
      If the machine is booted without any cpu_idle driver set
      (b/c disable_cpuidle() has been called) we should follow
      other users of cpu_idle API and check the return value
      for NULL before using it.
      Reported-and-tested-by: default avatarMark van Dijk <mark@internecto.net>
      Suggested-by: default avatarJan Beulich <JBeulich@suse.com>
      Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
      Cc: Daniel Kiper <daniel.kiper@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: add quirk for Freescale i.MX28 ROM recovery
      
      commit 2843b673d03421e0e73cf061820d1db328f7c8eb upstream.
      
      The USB recovery mode present in i.MX28 ROM emulates USB HID.
      It needs this quirk to behave properly.
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Chen Peter <B29397@freescale.com>
      Cc: Greg KH <greg@kroah.com>
      Cc: Jiri Kosina <jkosina@suse.cz>
      [jkosina@suse.cz: fix alphabetical ordering]
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [yjw: Backported to 3.4: adjust context]
      Signed-off-by: default avatarYijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: usbhid: quirk for Formosa IR receiver
      
      commit 320cde19a4e8f122b19d2df7a5c00636e11ca3fb upstream.
      
      Patch to add the Formosa Industrial Computing, Inc. Infrared Receiver
      [IR605A/Q] to hid-ids.h and hid-quirks.c.  This IR receiver causes about a 10
      second timeout when the usbhid driver attempts to initialze the device.  Adding
      this device to the quirks list with HID_QUIRK_NO_INIT_REPORTS removes the
      delay.
      Signed-off-by: default avatarNicholas Santos <nicholas.santos@gmail.com>
      [jkosina@suse.cz: fix ordering]
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarNicholas Santos <nicholas.santos@gmail.com>
      [jkosina@suse.cz: fix ordering]
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [yjw: Backported to 3.4: adjust context]
      Signed-off-by: default avatarYijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: validate feature and input report details
      
      commit cc6b54aa54bf40b762cab45a9fc8aa81653146eb upstream.
      
      When dealing with usage_index, be sure to properly use unsigned instead of
      int to avoid overflows.
      
      When working on report fields, always validate that their report_counts are
      in bounds.
      Without this, a HID device could report a malicious feature report that
      could trick the driver into a heap overflow:
      
      [  634.885003] usb 1-1: New USB device found, idVendor=0596, idProduct=0500
      ...
      [  676.469629] BUG kmalloc-192 (Tainted: G        W   ): Redzone overwritten
      
      CVE-2013-2897
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      [bwh: Backported to 3.2:
       - Drop inapplicable changes to hid_usage::usage_index initialisation and
         to hid_report_raw_event()
       - Adjust context in report_features()
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [yijingwang: Backported to 3.4: context adjust]
      Signed-off-by: default avatarYijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: multitouch: validate indexes details
      
      commit 8821f5dc187bdf16cfb32ef5aa8c3035273fa79a upstream.
      
      When working on report indexes, always validate that they are in bounds.
      Without this, a HID device could report a malicious feature report that
      could trick the driver into a heap overflow:
      
      [  634.885003] usb 1-1: New USB device found, idVendor=0596, idProduct=0500
      ...
      [  676.469629] BUG kmalloc-192 (Tainted: G        W   ): Redzone overwritten
      
      Note that we need to change the indexes from s8 to s16 as they can
      be between -1 and 255.
      
      CVE-2013-2897
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Acked-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      [bwh: Backported to 3.2: mt_device::{cc,cc_value,inputmode}_index do not
       exist and the corresponding indices do not need to be validated.
       mt_device::maxcontact_report_id does not exist either.  So all we need
       to do is to widen mt_device::inputmode.]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [yjw: Backport to 3.4: maxcontact_report_id exists,
       need to be validated]
      Signed-off-by: default avatarYijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: hidraw: add proper error handling to raw event reporting
      
      commit b6787242f32700377d3da3b8d788ab3928bab849 upstream.
      
      If kmemdup() in hidraw_report_event() fails, we are not propagating
      this fact properly.
      
      Let hidraw_report_event() and hid_report_raw_event() return an error
      value to the caller.
      Reported-by: default avatarOliver Neukum <oneukum@suse.de>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: fix return value of hidraw_report_event() when !CONFIG_HIDRAW
      
      commit d6d7c873529abd622897cad5e36f1fd7d82f5110 upstream.
      
      Commit b6787242f327 ("HID: hidraw: add proper error handling to raw event
      reporting") forgot to update the static inline version of
      hidraw_report_event() for the case when CONFIG_HIDRAW is unset. Fix that
      up.
      Reported-by: default avatarStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: hidraw: fix list->buffer memleak
      
      commit 4c7b417ecb756e85dfc955b0e7a04fd45585533e upstream.
      
      If we don't read fast enough hidraw device, hidraw_report_event
      will cycle and we will leak list->buffer.
      Also list->buffer are not free on release.
      After this patch, kmemleak report nothing.
      Signed-off-by: default avatarMatthieu CASTET <matthieu.castet@parrot.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: hidraw: improve error handling in hidraw_init()
      
      commit bcb4a75bde3821cecb17a71d287abfd6ef9bd68d upstream.
      
      Several improvements in error handling:
      - do not report success if alloc_chrdev_region() failed
      - check for error code of cdev_add()
      - use unregister_chrdev_region() instead of unregister_chrdev()
        if class_create() failed
      
      Found by Linux Driver Verification project (linuxtesting.org).
      Signed-off-by: default avatarAlexey Khoroshilov <khoroshilov@ispras.ru>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: apple: Add Apple wireless keyboard 2011 ANSI PID
      
      commit 0a97e1e9f9a6765e6243030ac42b04694f3f3647 upstream.
      Signed-off-by: default avatarAlexey Kaminsky <me@akaminsky.net>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      [bwh: Backported to 3.2: add the device ID to hid-ids.h]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: add support for Sony RF receiver with USB product id 0x0374
      
      commit a464918419f94a0043d2f549d6defb4c3f69f68a upstream.
      
      Some Vaio desktop computers, among them the VGC-LN51JGB multimedia PC, have
      a RF receiver, multi-interface USB device 054c:0374, that is used to connect
      a wireless keyboard and a wireless mouse.
      
      The keyboard works flawlessly, but the mouse (VGP-WMS3 in my case) does not
      seem to be generating any pointer events. The problem is that the mouse pointer
      is wrongly declared as a constant non-data variable in the report descriptor
      (see lsusb and usbhid-dump output below), with the consequence that it is
      ignored by the HID code.
      
      Add this device to the have-special-driver list and fix up the report
      descriptor in the Sony-specific driver which happens to already have a fixup
      for a similar firmware bug.
      
      Bus 003 Device 002: ID 054c:0374 Sony Corp.
      Device Descriptor:
        bLength                18
        bDescriptorType         1
        bcdUSB               2.00
        bDeviceClass            0 (Defined at Interface level)
        bDeviceSubClass         0
        bDeviceProtocol         0
        bMaxPacketSize0         8
        idVendor           0x054c Sony Corp.
        idProduct          0x0374
        iSerial                 0
      [...]
          Interface Descriptor:
            bLength                 9
            bDescriptorType         4
            bInterfaceNumber        1
            bAlternateSetting       0
            bNumEndpoints           1
            bInterfaceClass         3 Human Interface Device
            bInterfaceSubClass      1 Boot Interface Subclass
            bInterfaceProtocol      2 Mouse
            iInterface              2 RF Receiver
      [...]
                Report Descriptor: (length is 100)
      [...]
                  Item(Global): Usage Page, data= [ 0x01 ] 1
                                  Generic Desktop Controls
                  Item(Local ): Usage, data= [ 0x30 ] 48
                                  Direction-X
                  Item(Local ): Usage, data= [ 0x31 ] 49
                                  Direction-Y
                  Item(Global): Report Count, data= [ 0x02 ] 2
                  Item(Global): Report Size, data= [ 0x08 ] 8
                  Item(Global): Logical Minimum, data= [ 0x81 ] 129
                  Item(Global): Logical Maximum, data= [ 0x7f ] 127
                  Item(Main  ): Input, data= [ 0x07 ] 7
                                  Constant Variable Relative No_Wrap Linear
                                  Preferred_State No_Null_Position Non_Volatile Bitfield
      
      003:002:001:DESCRIPTOR         1357910009.758544
       05 01 09 02 A1 01 05 01 09 02 A1 02 85 01 09 01
       A1 00 05 09 19 01 29 05 95 05 75 01 15 00 25 01
       81 02 75 03 95 01 81 01 05 01 09 30 09 31 95 02
       75 08 15 81 25 7F 81 07 A1 02 85 01 09 38 35 00
       45 00 15 81 25 7F 95 01 75 08 81 06 C0 A1 02 85
       01 05 0C 15 81 25 7F 95 01 75 08 0A 38 02 81 06
       C0 C0 C0 C0
      
      Cc: linux-input@vger.kernel.org
      Cc: linux-usb@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarFernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: clean up quirk for Sony RF receivers
      
      commit 99d249021abd4341771523ed8dd7946276103432 upstream.
      
      Document what the fix-up is does and make it more robust by ensuring
      that it is only applied to the USB interface that corresponds to the
      mouse (sony_report_fixup() is called once per interface during probing).
      
      Cc: linux-input@vger.kernel.org
      Cc: linux-usb@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarFernando Luis Vazquez Cao <fernando@oss.ntt.co.jp>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: usbhid: quirk for MSI GX680R led panel
      
      commit 620ae90ed8ca8b6e40cb9e10279b4f5ef9f0ab81 upstream.
      
      This keyboard backlight device causes a 10 second delay to boot.  Add it
      to the quirk list with HID_QUIRK_NO_INIT_REPORTS.
      
      This fixes Red Hat bugzilla https://bugzilla.redhat.com/show_bug.cgi?id=907221
      
      Signed-off-by: default avatarJosh Boyer <jwboyer@redhat.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: usbhid: fix build problem
      
      commit 570637dc8eeb2faba06228d497ff40bb019bcc93 upstream.
      
      Fix build problem caused by typo introduced by 620ae90ed8
      ("HID: usbhid: quirk for MSI GX680R led panel").
      
      Reported-by: fengguang.wu@intel.com
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      HID: hidraw: correctly deallocate memory on device disconnect
      
      commit 212a871a3934beccf43431608c27ed2e05a476ec upstream.
      
      This changes puts the commit 4fe9f8e203f back in place
      with the fixes for slab corruption because of the commit.
      
      When a device is unplugged, wait for all processes that
      have opened the device to close before deallocating the device.
      
      This commit was solving kernel crash because of the corruption in
      rb tree of vmalloc. The rootcause was the device data pointer was
      geting excessed after the memory associated with hidraw was freed.
      
      The commit 4fe9f8e203f was buggy as it was also freeing the hidraw
      first and then calling delete operation on the list associated with
      that hidraw leading to slab corruption.
      Signed-off-by: default avatarManoj Chourasia <mchourasia@nvidia.com>
      Tested-by: default avatarPeter Wu <lekensteyn@gmail.com>
      Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yijing Wang <wangyijing@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: dts: imx51-babbage: fix esdhc cd/wp properties
      
      commit a46d2619d7180bda12bad2bf15bbd0731dfc2dcf upstream.
      
      The binding doc and dts use properties "fsl,{cd,wp}-internal" while
      esdhc driver uses "fsl,{cd,wp}-controller".  Fix binding doc and dts
      to get them match driver code.
      Reported-by: default avatarChris Ball <cjb@laptop.org>
      Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
      Acked-by: default avatarChris Ball <cjb@laptop.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: w90x900: fix legacy assembly syntax
      
      commit fa5ce5f94c0f2bfa41ba68d2d2524298e1fc405e upstream.
      
      New ARM binutils don't allow extraneous whitespace inside
      of brackets, which causes this error on all mach-w90x900
      defconfigs:
      
      arch/arm/kernel/entry-armv.S: Assembler messages:
      arch/arm/kernel/entry-armv.S:214: Error: ARM register expected -- `ldr r0,[ r6,#(0x10C)]'
      arch/arm/kernel/entry-armv.S:214: Error: ARM register expected -- `ldr r0,[ r6,#(0x110)]'
      arch/arm/kernel/entry-armv.S:430: Error: ARM register expected -- `ldr r0,[ r6,#(0x10C)]'
      arch/arm/kernel/entry-armv.S:430: Error: ARM register expected -- `ldr r0,[ r6,#(0x110)]'
      
      This removes the whitespace in order to build the kernel
      again.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Cc: Wan ZongShun <mcuos.com@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: u300: fix ages old copy/paste bug
      
      commit 0259d9eb30d003af305626db2d8332805696e60d upstream.
      
      The UART1 is on the fast AHB bridge, not on the slow bus.
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: 7742/1: topology: export cpu_topology
      
      commit 92bdd3f5eba299b33c2f4407977d6fa2e2a6a0da upstream.
      
      The cpu_topology symbol is required by any driver using the topology
      interfaces, which leads to a couple of build errors:
      
      ERROR: "cpu_topology" [drivers/net/ethernet/sfc/sfc.ko] undefined!
      ERROR: "cpu_topology" [drivers/cpufreq/arm_big_little.ko] undefined!
      ERROR: "cpu_topology" [drivers/block/mtip32xx/mtip32xx.ko] undefined!
      
      The obvious solution is to export this symbol.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarWill Deacon <will.deacon@arm.com>
      Cc: Nicolas Pitre <nico@linaro.org>
      Cc: Vincent Guittot <vincent.guittot@linaro.org>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: footbridge: fix VGA initialisation
      
      commit 43659222e7a0113912ed02f6b2231550b3e471ac upstream.
      
      It's no good setting vga_base after the VGA console has been
      initialised, because if we do that we get this:
      
      Unable to handle kernel paging request at virtual address 000b8000
      pgd = c0004000
      [000b8000] *pgd=07ffc831, *pte=00000000, *ppte=00000000
      0Internal error: Oops: 5017 [#1] ARM
      Modules linked in:
      CPU: 0 PID: 0 Comm: swapper Not tainted 3.12.0+ #49
      task: c03e2974 ti: c03d8000 task.ti: c03d8000
      PC is at vgacon_startup+0x258/0x39c
      LR is at request_resource+0x10/0x1c
      pc : [<c01725d0>]    lr : [<c0022b50>]    psr: 60000053
      sp : c03d9f68  ip : 000b8000  fp : c03d9f8c
      r10: 000055aa  r9 : 4401a103  r8 : ffffaa55
      r7 : c03e357c  r6 : c051b460  r5 : 000000ff  r4 : 000c0000
      r3 : 000b8000  r2 : c03e0514  r1 : 00000000  r0 : c0304971
      Flags: nZCv  IRQs on  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
      
      which is an access to the 0xb8000 without the PCI offset required to
      make it work.
      
      Fixes: cc22b4c1
      
       ("ARM: set vga memory base at run-time")
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: pxa: prevent PXA270 occasional reboot freezes
      
      commit ff88b4724fde18056a4c539f7327389aec0f4c2d upstream.
      
      Erratum 71 of PXA270M Processor Family Specification Update
      (April 19, 2010) explains that watchdog reset time is just
      8us insead of 10ms in EMTS.
      
      If SDRAM is not reset, it causes memory bus congestion and
      the device hangs. We put SDRAM in selfresh mode before watchdog
      reset, removing potential freezes.
      
      Without this patch PXA270-based ICP DAS LP-8x4x hangs after up to 40
      reboots. With this patch it has successfully rebooted 500 times.
      Signed-off-by: default avatarSergei Ianovich <ynvich@gmail.com>
      Tested-by: default avatarMarek Vasut <marex@denx.de>
      Signed-off-by: default avatarHaojian Zhuang <haojian.zhuang@gmail.com>
      Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: Orion: Set eth packet size csum offload limit
      
      commit 58569aee5a1a5dcc25c34a0a2ed9a377874e6b05 upstream.
      
      The mv643xx ethernet controller limits the packet size for the TX
      checksum offloading. This patch sets this limits for Kirkwood and
      Dove which have smaller limits that the default.
      
      As a side note, this patch is an updated version of a patch sent some years
      ago: http://lists.infradead.org/pipermail/linux-arm-kernel/2010-June/017320.html
      
      
      which seems to have been lost.
      Signed-off-by: default avatarArnaud Patard <arnaud.patard@rtp-net.org>
      Signed-off-by: default avatarJason Cooper <jason@lakedaemon.net>
      [bwh: Backported to 3.2: adjust for the extra two parameters of
       orion_ge0{0,1}_init()]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [yangyl: Backported to 3.4: Adjust context]
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: 7628/1: head.S: map one extra section for the ATAG/DTB area
      
      commit 6f16f4998f98e42e3f2dedf663cfb691ff0324af upstream.
      
      We currently use a temporary 1MB section aligned to a 1MB boundary for
      mapping the provided device tree until the final page table is created.
      However, if the device tree happens to cross that 1MB boundary, the end
      of it remains unmapped and the kernel crashes when it attempts to access
      it.  Given no restriction on the location of that DTB, it could end up
      with only a few bytes mapped at the end of a section.
      
      Solve this issue by mapping two consecutive sections.
      Signed-off-by: default avatarNicolas Pitre <nico@linaro.org>
      Tested-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
      Tested-by: default avatarTomasz Figa <t.figa@samsung.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      [bwh: Backported to 3.2:
       - Adjust context
       - The mapping is not conditional; drop the 'ne' suffixes]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [yangyl: Backported to 3.4: Adjust context]
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ARM: 7791/1: a.out: remove partial a.out support
      
      commit acfdd4b1f7590d02e9bae3b73bdbbc4a31b05d38 upstream.
      
      a.out support on ARM requires that argc, argv and envp are passed in
      r0-r2 respectively, which requires hacking load_aout_binary to
      prevent argc being clobbered by the return code. Whilst mainline kernels
      do set the registers up in start_thread, the aout loader has never
      carried the hack in mainline.
      
      Initialising the registers in this way actually goes against the libc
      expectations for ELF binaries, where argc, argv and envp are passed on
      the stack, with r0 being used to hold a pointer to an exit function for
      cleaning up after the dynamic linker if required. If the pointer is
      NULL, then it is ignored. When execing an ELF binary, Linux currently
      zeroes r0, then sets it to argc and then finally clobbers it with the
      return value of the execve syscall, so we actually end up with:
      
      	r0 = 0
      	stack[0] = argc
      	r1 = stack[1] = argv
      	r2 = stack[2] = envp
      
      libc treats r1 and r2 as undefined. The clobbering of r0 by sys_execve
      works for user-spawned threads, but when executing an ELF binary from a
      kernel thread (via call_usermodehelper), the execve is performed on the
      ret_from_fork path, which restores r0 from the saved pt_regs, resulting
      in argc being presented to the C library. This has horrible consequences
      when the application exits, since we have an exit function registered
      using argc, resulting in a jump to hyperspace.
      
      This patch solves the problem by removing the partial a.out support from
      arch/arm/ altogether.
      
      Cc: Ashish Sangwan <ashishsangwan2@gmail.com>
      Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      [bwh: Backported to 3.2:
       - Adjust context
       - Adjust uapi filename]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [yangyl: Backported to 3.4: Adjust context]
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ath9k: Fix noisefloor calibration
      
      commit 696df78509d1f81b651dd98ecdc1aecab616db6b upstream.
      
      The commits,
      
      "ath9k: Fix regression in channelwidth switch at the same channel"
      "ath9k: Fix invalid noisefloor reading due to channel update"
      
      attempted to fix noisefloor calibration when a channel switch
      happens due to HT20/HT40 bandwidth change. This is causing invalid
      readings resulting in messages like:
      
      "ath: phy16: NF[0] (-45) > MAX (-95), correcting to MAX".
      
      This results in an incorrect noise being used initially for reporting
      the signal level of received packets, until NF calibration is done
      and the history buffer is updated via the ANI timer, which happens
      much later.
      
      When a bandwidth change happens, it is appropriate to reset
      the internal history data for the channel. Do this correctly in the
      reset() routine by checking the "chanmode" variable.
      
      Cc: Rajkumar Manoharan <rmanohar@qca.qualcomm.com>
      Signed-off-by: default avatarSujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      [bwh: Backported to 3.2: adjust context, indentation]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ath9k: fill channel mode in caldata
      
      commit 77d848372875d2e4cbdbf07030f0e08cab5e7f4d upstream.
      
      It is useful to have channel mode in caldata to find out
      whether operaing channel is in HT40/20 when we are currently
      on offchannel. It will be used by BTCOEX to enable/disable
      concurrent tx mechanism later.
      Signed-off-by: default avatarRajkumar Manoharan <rmanohar@qca.qualcomm.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ath9k_hw: Assign default xlna config for AR9485
      
      commit 30d5b709da23f4ab9836c7f66d2d2e780a69cf12 upstream.
      
      For AR9485 boards with XLNA, the default gpio config
      is not set correctly, fix this.
      Signed-off-by: default avatarSujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ath9k_htc: fix signal strength handling issues
      
      commit 838f427955dcfd16858b0108ce29029da0d56a4e upstream.
      
      The ath9k commit 2ef16755
      
      
      (ath9k: fix signal strength reporting issues) fixed an issue where the
      reported per-frame signal strength reported to mac80211 was being
      overwritten with an internal average. The same issue is also present
      in ath9k_htc.
      In addition to preventing the driver from overwriting the value, this
      commit also ensures that the internal average (which is used for ANI)
      only tracks beacons of the AP that we're connected to.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      [bwh: Backported to 3.2: use compare_ether_addr() instead of
       ether_addr_equal(), with opposite sense]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ath9k_hw: fix chain swap setting when setting rx chainmask to 5
      
      commit 959f049dfb62b517cbb3dd48ed2fb7d9c713ce16 upstream.
      
      commit 24171dd92096fc370b195f3f6bdc0798855dc3f9 upstream.
      
      Chain swapping should only be enabled when the EEPROM chainmask is set to 5,
      regardless of what the runtime chainmask is.
      Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      [bwh: Backported to 3.2: keep the special case for AR_SREV_9462 here]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ath9k_hw: Fix RX gain initvals for AR9485
      
      commit a796a1dd5da9645ad77aa687d1a890ecd63ab5a6 upstream.
      
      Populate iniModesRxGain with the correct initvals
      array for AR9485 v1.1
      Signed-off-by: default avatarSujith Manoharan <c_manoha@qca.qualcomm.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      [bwh: Backported to 3.2:
       - Adjust context
       - INIT_INI_ARRAY takes additional size and columns arguments]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ath9k_hw: Enable hw PLL power save for AR9462
      
      commit 1680260226a8fd2aab590319da83ad8e610da9bd upstream.
      
      This reduced the power consumption to half in full and network sleep.
      
      Cc: Paul Stewart <pstew@chromium.org>
      Signed-off-by: default avatarRajkumar Manoharan <rmanohar@qca.qualcomm.com>
      Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
      [bwh: Backported to 3.2:
       - INIT_INI_ARRAY macro requires an explicit size argument
       - Remove the now-redundant macro PCIE_PLL_ON_CREQ_DIS_L1_2P0]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: EHCI: bugfix: urb->hcpriv should not be NULL
      
      commit 2656a9abcf1ec8dd5fee6a75d6997a0f2fa0094e upstream.
      
      This patch (as1632b) fixes a bug in ehci-hcd.  The USB core uses
      urb->hcpriv to determine whether or not an URB is active; host
      controller drivers are supposed to set this pointer to a non-NULL
      value when an URB is queued.  However ehci-hcd sets it to NULL for
      isochronous URBs, which defeats the check in usbcore.
      
      In itself this isn't a big deal.  But people have recently found that
      certain sequences of actions will cause the snd-usb-audio driver to
      reuse URBs without waiting for them to complete.  In the absence of
      proper checking by usbcore, the URBs get added to their endpoint list
      twice.  This leads to list corruption and a system freeze.
      
      The patch makes ehci-hcd assign a meaningful value to urb->hcpriv for
      isochronous URBs.  Improving robustness always helps.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Reported-by: default avatarArtem S. Tashkinov <t.artem@lycos.com>
      Reported-by: default avatarChristof Meerwald <cmeerw@cmeerw.org>
      [bwh: Backported to 3.2:
       - Adjust context
       - Also use usb_pipetype() to work out whether we should call qh_put()]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: Add device quirk for Microsoft VX700 webcam
      
      commit bc009eca8d539162f7271c2daf0ab5e9e3bb90a0 upstream.
      
      Add device quirk for Microsoft Lifecam VX700 v2.0 webcams.
      Fixes squeaking noise of the microphone.
      Signed-off-by: default avatarAndreas Fleig <andreasfleig@gmail.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: Add quirk detection based on interface information
      
      commit 80da2e0df5af700518611b7d1cc4fc9945bcaf95 upstream.
      
      When a whole class of devices (possibly from a specific vendor, or
      across multiple vendors) require a quirk, explictly listing all devices
      in the class make the quirks table unnecessarily large. Fix this by
      allowing matching devices based on interface information.
      Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Conflicts:
      	drivers/usb/core/driver.c
      
      usb: Add USB_QUIRK_RESET_RESUME for all Logitech UVC webcams
      
      commit e387ef5c47ddeaeaa3cbdc54424cdb7a28dae2c0 upstream.
      
      Most Logitech UVC webcams (both early models that don't advertise UVC
      compatibility and newer UVC-advertised devices) require the RESET_RESUME
      quirk. Instead of listing each and every model, match the devices based
      on the UVC interface information.
      Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      [bwh: Adjust context to apply after 3.2.38]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: usb: Add quirk for 192KHz recording on E-Mu devices
      
      commit 1539d4f82ad534431cc67935e8e442ccf107d17d upstream.
      
      When recording at 176.2KHz or 192Khz, the device adds a 32-bit length
      header to the capture packets, which obviously needs to be ignored for
      recording to work properly.
      
      Userspace expected:  L0 L1 L2 R0 R1 R2
      ...but actually got: R2 L0 L1 L2 R0 R1
      
      Also, the last byte of the length header being interpreted as L0 of
      the first sample caused spikes every 0.5ms, resulting in a loud 16KHz
      tone (about the highest 'B' on a piano) being present throughout
      captures.
      
      Tested at all sample rates on an E-Mu 0404USB, and tested for
      regressions on a generic USB headset.
      Signed-off-by: default avatarCalvin Owens <jcalvinowens@gmail.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      [bwh: Backported to 3.2: adjust filenames, context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: aloop: Fix Oops while PM resume
      
      commit edac894389f9c9de2a1368c78809c824b343f3a5 upstream.
      
      snd-aloop driver has no proper PM implementation, thus the PM resume
      may trigger Oops due to leftover timer instance.  This patch adds the
      missing suspend/resume implementation.
      Reported-and-tested-by: default avatarEl boulangero <elboulangero@gmail.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Fix non-snoop page handling
      
      commit 9ddf1aeb2134e72275c97a2c6ff2e3eb04f2f27a upstream.
      
      For non-snoop mode, we fiddle with the page attributes of CORB/RIRB
      and the position buffer, but also the ring buffers.  The problem is
      that the current code blindly assumes that the buffer is contiguous.
      However, the ring buffers may be SG-buffers, thus a wrong vmapped
      address is passed there, leading to Oops.
      
      This patch fixes the handling for SG-buffers.
      
      Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=800701
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      [bwh: Backported to 3.2: open-code snd_pcm_get_dma_buf()]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Add Conexant CX20751/2/3/4 codec support
      
      commit 61d648fb4726f8a89c07cd1904f9c2e11bf26df5 upstream.
      
      These are almost compatible with the older Conexant codecs.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Revert "ALSA: hda - Shut up pins at power-saving mode with Conexnat codecs"
      
      commit 7ed4165e2d01bdbbb4c1086eb73eadf0f64cbbf0 upstream.
      
      This reverts commit 697c373e.
      
      The original patch was meant to remove clicking, but in fact caused even
      more clicking instead.
      
      Thanks to c4pp4 for doing most of the work with this bug.
      
      BugLink: https://bugs.launchpad.net/bugs/886975
      
      Signed-off-by: default avatarDavid Henningsson <david.henningsson@canonical.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Always turn on pins for HDMI/DP
      
      commit 6169b673618bf0b2518ce413b54925782a603f06 upstream.
      
      We've seen the broken HDMI *video* output on some machines with GM965,
      and the debugging session pointed that the culprit is the disabled
      audio output pins.  Toggling these pins dynamically on demand caused
      flickering of HDMI TV.
      
      This patch changes the behavior to keep the pin ON constantly.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=51421
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Fix internal mic for Lenovo Ideapad U300s
      
      commit 18dcd3044e4c4b3ab6341c98e8d0e81e0d58d5e3 upstream.
      
      The internal mic input is phase inverted on one channel.
      To avoid people in userspace summing the channels together
      and get zero result, use a separate mixer control for the
      inverted channel.
      
      BugLink: https://bugs.launchpad.net/bugs/903853
      
      Signed-off-by: default avatarDavid Henningsson <david.henningsson@canonical.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      [wml: Backported to 3.4:
       - Adjust context
       - one more enum value CXT_PINCFG_LENOVO_TP410
       - Change both invocations of apply_pin_fixup()]
      Signed-off-by: default avatarWeng Meiling <wengmeiling.weng@huawei.com>
      
      USB: serial: add modem-status-change wait queue
      
      commit e5b33dc9d16053c2ae4c2c669cf008829530364b upstream.
      
      Add modem-status-change wait queue to struct usb_serial_port that
      subdrivers can use to implement TIOCMIWAIT.
      
      Currently subdrivers use a private wait queue which may have been
      released when waking up after device disconnected.
      
      Note that we're adding a new wait queue rather than reusing the tty-port
      one as we do not want to get woken up at hangup (yet).
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: ark3116: fix use-after-free in TIOCMIWAIT
      
      commit 5018860321dc7a9e50a75d5f319bc981298fb5b7 upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: ch341: fix use-after-free in TIOCMIWAIT
      
      commit fa1e11d5231c001c80a479160b5832933c5d35fb upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: cypress_m8: fix use-after-free in TIOCMIWAIT
      
      commit 356050d8b1e526db093e9d2c78daf49d6bf418e3 upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      
      Also remove bogus test for private data pointer being NULL as it is
      never assigned in the loop.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: ftdi_sio: fix use-after-free in TIOCMIWAIT
      
      commit 71ccb9b01981fabae27d3c98260ea4613207618e upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      
      When switching to tty ports, some lifetime assumptions were changed.
      Specifically, close can now be called before the final tty reference is
      dropped as part of hangup at device disconnect. Even with the ftdi
      private-data refcounting this means that the port private data can be
      freed while a process is sleeping on modem-status changes and thus
      cannot be relied on to detect disconnects when woken up.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: io_edgeport: fix use-after-free in TIOCMIWAIT
      
      commit 333576255d4cfc53efd056aad438568184b36af6 upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: io_ti: fix use-after-free in TIOCMIWAIT
      
      commit 7b2459690584f239650a365f3411ba2ec1c6d1e0 upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: mct_u232: fix use-after-free in TIOCMIWAIT
      
      commit cf1d24443677a0758cfa88ca40f24858b89261c0 upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: mos7840: fix broken TIOCMIWAIT
      
      commit e670c6af12517d08a403487b1122eecf506021cf upstream.
      
      Make sure waiting processes are woken on modem-status changes.
      
      Currently processes are only woken on termios changes regardless of
      whether the modem status has changed.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: mos7840: fix use-after-free in TIOCMIWAIT
      
      commit a14430db686b8e459e1cf070a6ecf391515c9ab9 upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: oti6858: fix use-after-free in TIOCMIWAIT
      
      commit 8edfdab37157d2683e51b8be5d3d5697f66a9f7b upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      [bwh: Backported to 3.2: adjust context, indentation]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: pl2303: fix use-after-free in TIOCMIWAIT
      
      commit 40509ca982c00c4b70fc00be887509feca0bff15 upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: spcp8x5: fix use-after-free in TIOCMIWAIT
      
      commit d1baabc8006fd238ad8da4d734dc815a8de02362 upstream.
      
      commit dbcea7615d8d7d58f6ff49d2c5568113f70effe9 upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      [bwh: Backported to 3.2: adjust context, indentation]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: ssu100: fix use-after-free in TIOCMIWAIT
      
      commit 43a66b4c417ad15f6d2f632ce67ad195bdf999e8 upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: ti_usb_3410_5052: fix use-after-free in TIOCMIWAIT
      
      commit 3668b9c17765cacf411effc4fc6e44099ac30800 upstream.
      
      commit fc98ab873aa3dbe783ce56a2ffdbbe7c7609521a upstream.
      
      Use the port wait queue and make sure to check the serial disconnected
      flag before accessing private port data after waking up.
      
      This is is needed as the private port data (including the wait queue
      itself) can be gone when waking up after a disconnect.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: serial: fix hang when opening port
      
      commit eba0e3c3a0ba7b96f01cbe997680f6a4401a0bfc upstream.
      
      Johan's 'fix use-after-free in TIOCMIWAIT' patchset[1] introduces
      one bug which can cause kernel hang when opening port.
      
      This patch initialized the 'port->delta_msr_wait' waitqueue head
      to fix the bug which is introduced in 3.9-rc4.
      
      [1], http://marc.info/?l=linux-usb&m=136368139627876&w=2
      
      Signed-off-by: default avatarMing Lei <tom.leiming@gmail.com>
      Acked-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: ftdi_sio: enable two UART ports on ST Microconnect Lite
      
      commit 71d9a2b95fc9c9474d46d764336efd7a5a805555 upstream.
      
      The FT4232H used in the ST Micro Connect Lite has four hi-speed UART ports.
      The first two ports are reserved for the JTAG interface.
      
      We enable by default ports 2 and 3 as UARTs (where port 2 is a
      conventional RS-232 UART)
      Signed-off-by: default avatarAdrian Thomasset <adrian.thomasset@st.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: dwc3: gadget: free trb pool only from epnum 2
      
      commit 5bf8fae33d14cc5c3c53a926f9079f92c8b082b0 upstream.
      
      we never allocate a TRB pool for physical endpoints
      0 and 1 so trying to free it (a invalid TRB pool pointer)
      will lead us in a warning while removing dwc3.ko module.
      
      In order to fix the situation, all we have to do is skip
      dwc3_free_trb_pool() for physical endpoints 0 and 1 just
      as we while deleting endpoints from the endpoints list.
      Signed-off-by: default avatarGeorge Cherian <george.cherian@ti.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: serial: Add Option GTM681W to qcserial device table.
      
      commit 8a2f132a01c2dd4c3905fa560f92019761ed72b1 upstream.
      
      The Option GTM681W uses a qualcomm chip and can be
      served by the qcserial device driver.
      Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Conflicts:
      	drivers/usb/serial/qcserial.c
      
      USB: spcp8x5: fix device initialisation at open
      
      commit 5e4211f1c47560c36a8b3d4544dfd866dcf7ccd0 upstream.
      
      Do not use uninitialised termios data to determine when to configure the
      device at open.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      [bwh: Backported to 3.2: tty_struct::termios is a pointer, not a struct]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: pl2303: fix device initialisation at open
      
      commit 2d8f4447b58bba5f8cb895c07690434c02307eaf upstream.
      
      Do not use uninitialised termios data to determine when to configure the
      device at open.
      
      This also prevents stack data from leaking to userspace in the OOM error
      path.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      [bwh: Backported to 3.2: tty_struct::termios is a pointer, not a struct]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: mos7840: fix memory leak in open
      
      commit 5f8a2e68b679b41cc8e9b642f2f5aa45dd678641 upstream.
      
      Allocated urbs and buffers were never freed on errors in open.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: mos7840: fix race in register handling
      
      commit d8a083cc746664916d9d36ed9e4d08a29525f245 upstream.
      
      Fix race in mos7840_get_reg which unconditionally manipulated the
      control urb (which may already be in use) by adding a control-urb busy
      flag.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: adutux: fix big-endian device-type reporting
      
      commit d482b9d558602a9cacab063b1c8779f9b5214da7 upstream.
      
      Make sure the reported device-type on big-endian machines is the same as
      on little-endian ones.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: ti_usb_3410_5052: fix big-endian firmware handling
      
      commit e877dd2f2581628b7119df707d4cf03d940cff49 upstream.
      
      Fix endianess bugs in firmware handling introduced by commits cb7a7c6a
      ("ti_usb_3410_5052: add Multi-Tech modem support") and 05a3d905
      
      
      ("ti_usb_3410_5052: support alternate firmware") which made the driver
      use the wrong firmware for certain devices on big-endian machines.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: keyspan: fix null-deref at disconnect and release
      
      commit ff8a43c10f1440f07a5faca0c1556921259f7f76 upstream.
      
      Make sure to fail properly if the device is not accepted during attach
      in order to avoid null-pointer derefs (of missing interface private
      data) at disconnect or release.
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: OHCI: Allow runtime PM without system sleep
      
      commit 69820e01aa756b8d228143d997f71523c1e97984 upstream.
      
      Since ohci-hcd supports runtime PM, the .pm field in its pci_driver
      structure should be protected by CONFIG_PM rather than
      CONFIG_PM_SLEEP.
      
      Without this change, OHCI controllers won't do runtime suspend if
      system suspend or hibernation isn't enabled.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: fix build error when CONFIG_PM_SLEEP isn't enabled
      
      commit 9d8924297cd9c256c23c02abae40202563452453 upstream.
      
      This patch fixes a build error that occurs when CONFIG_PM is enabled
      and CONFIG_PM_SLEEP isn't:
      
      >> drivers/usb/host/ohci-pci.c:294:10: error: 'usb_hcd_pci_pm_ops' undeclared here (not in a function)
            .pm = &usb_hcd_pci_pm_ops
      
      Since the usb_hcd_pci_pm_ops structure is defined and used when
      CONFIG_PM is enabled, its declaration should not be protected by
      CONFIG_PM_SLEEP.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Reported-by: default avatarkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: fix PM config symbol in uhci-hcd, ehci-hcd, and xhci-hcd
      
      commit f875fdbf344b9fde207f66b392c40845dd7e5aa6 upstream.
      
      Since uhci-hcd, ehci-hcd, and xhci-hcd support runtime PM, the .pm
      field in their pci_driver structures should be protected by CONFIG_PM
      rather than CONFIG_PM_SLEEP.  The corresponding change has already
      been made for ohci-hcd.
      
      Without this change, controllers won't do runtime suspend if system
      suspend or hibernation isn't enabled.
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      CC: Sarah Sharp <sarah.a.sharp@linux.intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: Disable USB 2.0 Link PM before device reset.
      
      commit dcc01c0864823f91c3bf3ffca6613e2351702b87 upstream.
      
      Before the USB core resets a device, we need to disable the L1 timeout
      for the roothub, if USB 2.0 Link PM is enabled.  Otherwise the port may
      transition into L1 in between descriptor fetches, before we know if the
      USB device descriptors changed.  LPM will be re-enabled after the
      full device descriptors are fetched, and we can confirm the device still
      supports USB 2.0 LPM after the reset.
      
      We don't need to wait for the USB device to exit L1 before resetting the
      device, since the xHCI roothub port diagrams show a transition to the
      Reset state from any of the Ux states (see Figure 34 in the 2012-08-14
      xHCI specification update).
      
      This patch should be backported to kernels as old as 3.2, that contain
      the commit 65580b43
      
       "xHCI: set USB2
      hardware LPM".  That was the first commit to enable USB 2.0
      hardware-driven Link Power Management.
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: dwc3: pci: add support for BayTrail
      
      commit b62cd96de3161dfb125a769030eec35a4cab3d3a upstream.
      
      Add PCI id for Intel BayTrail.
      Signed-off-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: dwc3: add support for Merrifield
      
      commit 85601f8cf67c56a561a6dd5e130e65fdc179047d upstream.
      
      Add PCI id for Intel Merrifield
      Signed-off-by: default avatarDavid Cohen <david.a.cohen@linux.intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: wusbcore: set the RPIPE wMaxPacketSize value correctly
      
      commit 7b6bc07ab554e929c85d51b3d5b26cf7f12c6a3b upstream.
      
      For isochronous endpoints, set the RPIPE wMaxPacketSize value using
      wOverTheAirPacketSize from the endpoint companion descriptor instead of
      wMaxPacketSize from the normal endpoint descriptor.
      Signed-off-by: default avatarThomas Pugliese <thomas.pugliese@gmail.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: wusbcore: change WA_SEGS_MAX to a legal value
      
      commit f74b75e7f920c700636cccca669c7d16d12e9202 upstream.
      
      change WA_SEGS_MAX to a number that is legal according to the WUSB
      spec.
      Signed-off-by: default avatarThomas Pugliese <thomas.pugliese@gmail.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      USB: ftdi_sio: fixed handling of unsupported CSIZE setting
      
      commit 8704211f65a2106ba01b6ac9727cdaf9ca11594c upstream.
      
      FTDI UARTs support only 7 or 8 data bits. Until now the ftdi_sio driver would
      only report this limitation for CS6 to dmesg and fail to reflect this fact to
      tcgetattr.
      
      This patch reverts the unsupported CSIZE setting and reports the fact with less
      severance to dmesg for both CS5 and CS6.
      
      To test the patch it's sufficient to call
      
          stty -F /dev/ttyUSB0 cs5
      
      which will succeed without the patch and report an error with the patch
      applied.
      
      As an additional fix this patch ensures that the control request will always
      include a data bit size.
      Signed-off-by: default avatarColin Leitner <colin.leitner@gmail.com>
      Signed-off-by: default avatarJohan Hovold <jhovold@gmail.com>
      [bwh: Backported to 3.2:
       - Old code is cosmetically different
       - s/ddev/\&port->dev/]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ahci: Add Device IDs for Intel Wellsburg PCH
      
      commit 151743fd8dfb02956c5184b5f4f0f42677eb75bc upstream.
      
      This patch adds the AHCI-mode SATA Device IDs for the Intel Wellsburg PCH
      Signed-off-by: default avatarJames Ralston <james.d.ralston@intel.com>
      Signed-off-by: default avatarJeff Garzik <jgarzik@redhat.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ahci: AHCI-mode SATA patch for Intel Coleto Creek DeviceIDs
      
      commit 1cfc7df3de10c40ed459e13cce6de616023bf41c upstream.
      
      This patch adds the AHCI-mode SATA DeviceIDs for the Intel Coleto Creek PCH.
      Signed-off-by: default avatarSeth Heasley <seth.heasley@intel.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      xhci: Don't enable/disable RWE on bus suspend/resume.
      
      commit f217c980ca980e3a645b7485ea5eae9a747f4945 upstream.
      
      The RWE bit of the USB 2.0 PORTPMSC register is supposed to enable
      remote wakeup for devices in the lower power link state L1.  It has
      nothing to do with the device suspend remote wakeup from L2.  The RWE
      bit is designed to be set once (when USB 2.0 LPM is enabled for the
      port) and cleared only when USB 2.0 LPM is disabled for the port.
      
      The xHCI bus suspend method was setting the RWE bit erroneously, and the
      bus resume method was clearing it.  The xHCI 1.0 specification with
      errata up to Aug 12, 2012 says in section 4.23.5.1.1.1 "Hardware
      Controlled LPM":
      
      "While Hardware USB2 LPM is enabled, software shall not modify the
      HIRDBESL or RWE fields of the USB2 PORTPMSC register..."
      
      If we have previously enabled USB 2.0 LPM for a device, that means when
      the USB 2.0 bus is resumed, we violate the xHCI specification by
      clearing RWE.  It also means that after a bus resume, the host would
      think remote wakeup is disabled from L1 for ports with USB 2.0 Link PM
      enabled, which is not what we want.
      
      This patch should be backported to kernels as old as 3.2, that
      contain the commit 65580b43
      
       "xHCI: set
      USB2 hardware LPM".  That was the first kernel that supported USB 2.0
      Link PM.
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      [bwh: Backported to 3.2: deleted code was cosmetically different]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Conflicts:
      	drivers/usb/host/xhci-hub.c
      
      ahci: Add Device IDs for Intel Wildcat Point-LP
      
      commit 9f961a5f6efc87a79571d7166257b36af28ffcfe upstream.
      
      This patch adds the AHCI-mode SATA Device IDs for the Intel Wildcat Point-LP PCH.
      Signed-off-by: default avatarJames Ralston <james.d.ralston@intel.com>
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      usb: hub: Clear Port Reset Change during init/resume
      
      commit e92aee330837e4911553761490a8fb843f2053a6 upstream.
      
      This patch adds the Port Reset Change flag to the set of bits that are
      preemptively cleared on init/resume of a hub. In theory this bit should
      never be set unexpectedly... in practice it can still happen if BIOS,
      SMM or ACPI code plays around with USB devices without cleaning up
      correctly. This is especially dangerous for XHCI root hubs, which don't
      generate any more Port Status Change Events until all change bits are
      cleared, so this is a good precaution to have (similar to how it's
      already done for the Warm Port Reset Change flag).
      Signed-off-by: default avatarJulius Werner <jwerner@chromium.org>
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      [bwh: Backported to 3.2:
       - Adjust context
       - s/usb_clear_port_feature/clear_port_feature/]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [yangyl: Backported to 3.4: Adjust context]
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      xhci: quirk for extra long delay for S4
      
      commit 455f58925247e8a1a1941e159f3636ad6ee4c90b upstream.
      
      It has been reported that this chipset really cannot
      sleep without this extraordinary delay.
      
      This patch should be backported, in order to ensure this host functions
      under stable kernels.  The last quirk for Fresco Logic hosts (commit
      bba18e33f25072ebf70fd8f7f0cdbf8cdb59a746 "xhci: Extend Fresco Logic MSI
      quirk.") was backported to stable kernels as old as 2.6.36.
      Signed-off-by: default avatarOliver Neukum <oneukum@suse.de>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      [bwh: Backported to 3.2:
       - Adjust context
       - Use xhci_dbg() instead of xhci_dbg_trace()]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [yangyl: Backported to 3.4: Adjust context]
      Signed-off-by: default avatarYang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      xhci: Fix spurious wakeups after S5 on Haswell
      
      commit 638298dc66ea36623dbc2757a24fc2c4ab41b016 upstream.
      
      Haswell LynxPoint and LynxPoint-LP with the recent Intel BIOS show
      mysterious wakeups after shutdown occasionally.  After discussing with
      BIOS engineers, they explained that the new BIOS expects that the
      wakeup sources are cleared and set to D3 for all wakeup devices when
      the system is going to sleep or power off, but the current xhci driver
      doesn't do this properly (partly intentionally).
      
      This patch introduces a new quirk, XHCI_SPURIOUS_WAKEUP, for
      fixing the spurious wakeups at S5 by calling xhci_reset() in the xhci
      shutdown ops as done in xhci_stop(), and setting the device to PCI D3
      at shutdown and remove ops.
      
      The PCI D3 call is based on the initial fix patch by Oliver Neukum.
      
      [Note: Sarah changed the quirk name from XHCI_HSW_SPURIOUS_WAKEUP to
      XHCI_SPURIOUS_WAKEUP, since none of the other quirks have system names
      in them.  Sarah also fixed a collision with a quirk submitted around the
      same time, by changing the xhci->quirks bit from 17 to 18.]
      
      This patch should be backported to kernels as old as 3.0, that
      contain the commit 1c12443ab8eba71a658fae4572147e56d1f84f66 "xhci: Add
      Lynx Point to list of Intel switchable hosts."
      
      Cc: Oliver Neukum <oneukum@suse.de>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      xhci: Limit the spurious wakeup fix only to HP machines
      
      commit 6962d914f317b119e0db7189199b21ec77a4b3e0 upstream.
      
      We've got regression reports that my previous fix for spurious wakeups
      after S5 on HP Haswell machines leads to the automatic reboot at
      shutdown on some machines.  It turned out that the fix for one side
      triggers another BIOS bug in other side.  So, it's exclusive.
      
      Since the original S5 wakeups have been confirmed only on HP machines,
      it'd be safer to apply it only to limited machines.  As a wild guess,
      limiting to machines with HP PCI SSID should suffice.
      
      This patch should be backported to kernels as old as 3.12, that
      contain the commit 638298dc66ea36623dbc2757a24fc2c4ab41b016 "xhci: Fix
      spurious wakeups after S5 on Haswell".
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=66171
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
      Tested-by: <dashing.meng@gmail.com>
      Reported-by: default avatarNiklas Schnelle <niklas@komani.de>
      Reported-by: default avatarGiorgos <ganastasiouGR@gmail.com>
      Reported-by: <art1@vhex.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Yang Yingliang <yangyingliang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Cache the MUX selection for generic HDMI
      
      commit bddee96b5d0db869f47b195fe48c614ca824203c upstream.
      
      When a selection to a converter MUX is changed in hdmi_pcm_open(), it
      should be cached so that the given connection can be restored properly
      at PM resume.  We need just to replace the corresponding
      snd_hda_codec_write() call with snd_hda_codec_write_cache().
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Add new GPU codec ID to snd-hda
      
      commit 7ae48b56f8d9c836259bc02f3e2ea4962d6b5d1b upstream.
      
      Vendor ID 0x10de0051 is used by a yet-to-be-named GPU chip.
      Signed-off-by: default avatarAaron Plattner <aplattner@nvidia.com>
      Acked-by: default avatarAndy Ritger <aritger@nvidia.com>
      Reviewed-by: default avatarDaniel Dadap <ddadap@nvidia.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - Add another GPU codec ID to snd-hda
      
      commit d52392b1a80458c0510810789c7db4a39b88022a upstream.
      
      Vendor ID 0x10de0060 is used by a yet-to-be-named GPU chip.
      Reviewed-by: default avatarAndy Ritger <aritger@nvidia.com>
      Signed-off-by: default avatarAaron Plattner <aplattner@nvidia.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: usb-audio: skip UAC2 EFFECT_UNIT
      
      commit 5dae5fd24071319bb67d3375217d5b0b6d16cb0b upstream.
      
      Current code mishandles the case where the device is a UAC2
      and the bDescriptorSubtype is a UAC2 Effect Unit (0x07).
      It tries to parse it as a Processing Unit (which is similar to two
      other UAC1 units with overlapping subtypes), but since the structure
      is different (See: 4.7.2.10, 4.7.2.11 in UAC2 standard), the parsing
      is done incorrectly and prevents the device from initializing.
      For now, just ignore the unit.
      Signed-off-by: default avatarEldad Zack <eldad@fogrefinery.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: usb: Parse UAC2 extension unit like for UAC1
      
      commit 61ac51301e6c6d4ed977d7674ce2b8e713619a9b upstream.
      
      UAC2_EXTENSION_UNIT_V2 differs from UAC1_EXTENSION_UNIT, but can be handled in
      the same way when parsing the unit. Otherwise parse_audio_unit() fails when it
      sees an extension unit on a UAC2 device.
      
      UAC2_EXTENSION_UNIT_V2 is outside the range allocated by UAC1.
      Signed-off-by: default avatarTorstein Hegge <hegge@resisty.net>
      Acked-by: default avatarDaniel Mack <zonque@gmail.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: ak4xx-adda: info leak in ak4xxx_capture_source_info()
      
      commit bd5fe738e388ceaa32e5171481e0d3ec59f0ccfe upstream.
      
      "idx" is controled by the user and can be a negative offset into the
      input_names[] array.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: 6fire: fix DMA issues with URB transfer_buffer usage
      
      commit ddb6b5a964371e8e52e696b2b258bda144c8bd3f upstream.
      
      Patch fixes 6fire not to use stack as URB transfer_buffer. URB buffers need to
      be DMA-able, which stack is not. Furthermore, transfer_buffer should not be
      allocated as part of larger device structure because DMA coherency issues and
      patch fixes this issue too.
      Signed-off-by: default avatarJussi Kivilinna <jussi.kivilinna@iki.fi>
      Tested-by: default avatarTorsten Schenk <torsten.schenk@zoho.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: 6fire: make buffers DMA-able (pcm)
      
      commit 5ece263f1d93fba8d992e67e3ab8a71acf674db9 upstream.
      
      Patch makes pcm buffers DMA-able by allocating each one separately.
      Signed-off-by: default avatarTorsten Schenk <torsten.schenk@zoho.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: 6fire: make buffers DMA-able (midi)
      
      commit 4c2aee0032b70083dafebd733ed9c774633b2fa3 upstream.
      
      Patch makes midi output buffer DMA-able by allocating it separately.
      Signed-off-by: default avatarTorsten Schenk <torsten.schenk@zoho.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda - hdmi: Fallback to ALSA allocation when selecting CA
      
      commit 18e391862cceaf43ddb8eb5cca05e1a83abdebaa upstream.
      
      hdmi_channel_allocation() tries to find a HDMI channel allocation that
      matches the number channels in the playback stream and contains only
      speakers that the HDMI sink has reported as available via EDID. If no
      such allocation is found, 0 (stereo audio) is used.
      
      Using CA 0 causes the audio causes the sink to discard everything except
      the first two channels (front left and front right).
      
      However, the sink may be capable of receiving more channels than it has
      speakers (and then perform downmix or discard the extra channels), in
      which case it is preferable to use a CA that contains extra channels
      than to use CA 0 which discards all the non-stereo channels.
      
      Additionally, it seems that HBR (HD) passthrough output does not work on
      Intel HDMI codecs when CA is set to 0 (possibly the codec zeroes
      channels not present in CA). This happens with all receivers that report
      a 5.1 speaker mask since a HBR stream is carried on 8 channels to the
      codec.
      
      Add a fallback in the CA selection so that the CA channel count at least
      matches the stream channel count, even if the stream contains channels
      not present in the sink speaker descriptor.
      
      Thanks to GrimGriefer at OpenELEC forums for discovering that changing
      the sink speaker mask allowed HBR output.
      
      Reported-by: GrimGriefer
      Reported-by: Ashecrow
      Reported-by: default avatarFrank Zafka <kafkaesque1978@gmail.com>
      Reported-by: default avatarPeter Frühberger <fritsch@xbmc.org>
      Signed-off-by: default avatarAnssi Hannula <anssi.hannula@iki.fi>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: pcsp: Fix the order of input device unregistration
      
      commit 6408eac2665955343cd0e4bcd7d6237ce39611ed upstream.
      
      The current code may access to the already freed object.  The input
      device must be accessed and unregistered before freeing the top level
      sound object.
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ALSA: hda/realtek - Add support of ALC231 codec
      
      commit ba4c4d0a9021ab034554d532a98133d668b87599 upstream.
      
      It's compatible with ALC269.
      Signed-off-by: default avatarKailang Yang <kailang@realtek.com>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Weng Meiling <wengmeiling.weng@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hwmon: (coretemp) Improve support of recent Atom CPU models
      
      commit fcc14ac1a86931f38da047cf8fb634c6db7b58bc upstream.
      
      Document the new Atom series (Tunnel Creek and Medfield) as being
      supported, and list TjMax for the Atom E600 series.
      
      Also enable the Atom tjmax heuristic for these Atom CPU models.
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Reviewed-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
      Cc: Alexander Stein <alexander.stein@systec-electronic.com>
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Cc: "R, Durgadoss" <durgadoss.r@intel.com>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hwmon: (coretemp) Add support for Atom D2000 and N2000 series CPU models
      
      commit 5592906f8b01282ea3c2acaf641fd067ad4bb3dc upstream.
      
      Document the Atom series D2000 and N2000 (Cedar Trail) as being supported.
      List and set TjMax for those series.
      
      Cc: Fenghua Yu <fenghua.yu@intel.com>
      Cc: "R, Durgadoss" <durgadoss.r@intel.com>
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hwmon: (coretemp) Improve support for TjMax detection on Atom CPUs
      
      commit 41e58a1f2b90c88d94b4bd84beb9927a4c2704e9 upstream.
      
      Atom CPUs don't have a register to retrieve TjMax. Detection so far was
      incomplete. Use the X86 model ID to improve it.
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hwmon: (coretemp) Add support for Atom CE4110/4150/4170
      
      commit 1102dcab849313bd5a340b299b5cf61b518fbc0f upstream.
      
      TjMax for the CE4100 series of Atom CPUs was previously reported to be
      110 degrees C.
      
      cpuinfo logs on the web show existing CPU types CE4110, CE4150, and CE4170,
      reported as "model name : Intel(R) Atom(TM) CPU CE41{1|5|7}0 @ 1.{2|6}0GHz"
      with model 28 (0x1c) and stepping 10 (0x0a). Add the three known variants
      to the tjmax table.
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Acked-by: default avatarJean Delvare <khali@linux-fr.org>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hwmon: (applesmc) Always read until end of data
      
      commit 25f2bd7f5add608c1d1405938f39c96927b275ca upstream.
      
      The crash reported and investigated in commit 5f4513 turned out to be
      caused by a change to the read interface on newer (2012) SMCs.
      
      Tests by Chris show that simply reading the data valid line is enough
      for the problem to go away. Additional tests show that the newer SMCs
      no longer wait for the number of requested bytes, but start sending
      data right away.  Apparently the number of bytes to read is no longer
      specified as before, but instead found out by reading until end of
      data. Failure to read until end of data confuses the state machine,
      which eventually causes the crash.
      
      As a remedy, assuming bit0 is the read valid line, make sure there is
      nothing more to read before leaving the read function.
      
      Tested to resolve the original problem, and runtested on MBA3,1,
      MBP4,1, MBP8,2, MBP10,1, MBP10,2. The patch seems to have no effect on
      machines before 2012.
      Tested-by: default avatarChris Murphy <chris@cmurf.com>
      Signed-off-by: default avatarHenrik Rydberg <rydberg@euromail.se>
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      hwmon: Prevent some divide by zeros in FAN_TO_REG()
      
      commit 3806b45ba4655147a011df03242cc197ab986c43 upstream.
      
      The "rpm * div" operations can overflow here, so this patch adds an
      upper limit to rpm to prevent that.  Jean Delvare helped me with this
      patch.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Acked-by: default avatarRoger Lucas <vt8231@hiddenengine.co.uk>
      Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tg3: Add New 5719 Read DMA workaround
      
      commit 091f0ea30074bc43f9250961b3247af713024bc6 upstream.
      
      After Power-on-reset, the 5719's TX DMA length registers may contain
      uninitialized values and cause TX DMA to stall.  Check for invalid
      values and set a register bit to flush the TX channels.  The bit
      needs to be turned off after the DMA channels have been flushed.
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tg3: Wait for boot code to finish after power on
      
      commit df465abfe06f7dc4f33f4a96d17f096e9e8ac917 upstream.
      
      Some systems that don't need wake-on-lan may choose to power down the
      chip on system standby. Upon resume, the power on causes the boot code
      to startup and initialize the hardware. On one new platform, this is
      causing the device to go into a bad state due to a race between the
      driver and boot code, once every several hundred resumes. The same race
      exists on open since we come up from a power on.
      
      This patch adds a wait for boot code signature at the beginning of
      tg3_init_hw() which is common to both cases. If there has not been a
      power-off or the boot code has already completed, the signature will be
      present and poll_fw() returns immediately. Also return immediately if
      the device does not have firmware.
      Signed-off-by: default avatarNithin Nayak Sujir <nsujir@broadcom.com>
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      [bwh: Backported to 3.2: adjust context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      OMAPFB: fix framebuffer console colors
      
      commit c1c52848cef52e157468b8879fc3cae23b6f3a99 upstream.
      
      omapfb does not currently set pseudo palette correctly for color depths
      above 16bpp, making red text invisible, command like
        echo -e '\e[0;31mRED' > /dev/tty1
      will display nothing on framebuffer console in 24bpp mode.
      This is because temporary variable is declared incorrectly, fix it.
      Signed-off-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
      Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
      Signed-off-by: default avatarFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      mmc: mxs-mmc: fix deadlock caused by recursion loop
      
      commit fc108d24d3a6da63576a460e122fa1df0cbdea20 upstream.
      
      Release the lock before mmc_signal_sdio_irq is called by
      mxs_mmc_enable_sdio_irq.
      
      Backtrace:
      [   65.470000] =============================================
      [   65.470000] [ INFO: possible recursive locking detected ]
      [   65.470000] 3.5.0-rc5 #2 Not tainted
      [   65.470000] ---------------------------------------------
      [   65.470000] ksdioirqd/mmc0/73 is trying to acquire lock:
      [   65.470000]  (&(&host->lock)->rlock#2){-.-...}, at: [<bf054120>] mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]
      [   65.470000]
      [   65.470000] but task is already holding lock:
      [   65.470000]  (&(&host->lock)->rlock#2){-.-...}, at: [<bf054120>] mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]
      [   65.470000]
      [   65.470000] other info that might help us debug this:
      [   65.470000]  Possible unsafe locking scenario:
      [   65.470000]
      [   65.470000]        CPU0
      [   65.470000]        ----
      [   65.470000]   lock(&(&host->lock)->rlock#2);
      [   65.470000]   lock(&(&host->lock)->rlock#2);
      [   65.470000]
      [   65.470000]  *** DEADLOCK ***
      [   65.470000]
      [   65.470000]  May be due to missing lock nesting notation
      [   65.470000]
      [   65.470000] 1 lock held by ksdioirqd/mmc0/73:
      [   65.470000]  #0:  (&(&host->lock)->rlock#2){-.-...}, at: [<bf054120>] mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]
      [   65.470000]
      [   65.470000] stack backtrace:
      [   65.470000] [<c0014990>] (unwind_backtrace+0x0/0xf4) from [<c005ccb8>] (__lock_acquire+0x14f8/0x1b98)
      [   65.470000] [<c005ccb8>] (__lock_acquire+0x14f8/0x1b98) from [<c005d3f8>] (lock_acquire+0xa0/0x108)
      [   65.470000] [<c005d3f8>] (lock_acquire+0xa0/0x108) from [<c02f671c>] (_raw_spin_lock_irqsave+0x48/0x5c)
      [   65.470000] [<c02f671c>] (_raw_spin_lock_irqsave+0x48/0x5c) from [<bf054120>] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc])
      [   65.470000] [<bf054120>] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]) from [<bf0541d0>] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc])
      [   65.470000] [<bf0541d0>] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc]) from [<c0219b38>] (sdio_irq_thread+0x1bc/0x274)
      [   65.470000] [<c0219b38>] (sdio_irq_thread+0x1bc/0x274) from [<c003c324>] (kthread+0x8c/0x98)
      [   65.470000] [<c003c324>] (kthread+0x8c/0x98) from [<c00101ac>] (kernel_thread_exit+0x0/0x8)
      [   65.470000] BUG: spinlock lockup suspected on CPU#0, ksdioirqd/mmc0/73
      [   65.470000]  lock: 0xc3358724, .magic: dead4ead, .owner: ksdioirqd/mmc0/73, .owner_cpu: 0
      [   65.470000] [<c0014990>] (unwind_backtrace+0x0/0xf4) from [<c01b46b0>] (do_raw_spin_lock+0x100/0x144)
      [   65.470000] [<c01b46b0>] (do_raw_spin_lock+0x100/0x144) from [<c02f6724>] (_raw_spin_lock_irqsave+0x50/0x5c)
      [   65.470000] [<c02f6724>] (_raw_spin_lock_irqsave+0x50/0x5c) from [<bf054120>] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc])
      [   65.470000] [<bf054120>] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]) from [<bf0541d0>] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc])
      [   65.470000] [<bf0541d0>] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc]) from [<c0219b38>] (sdio_irq_thread+0x1bc/0x274)
      [   65.470000] [<c0219b38>] (sdio_irq_thread+0x1bc/0x274) from [<c003c324>] (kthread+0x8c/0x98)
      [   65.470000] [<c003c324>] (kthread+0x8c/0x98) from [<c00101ac>] (kernel_thread_exit+0x0/0x8)
      Reported-by: default avatarAttila Kinali <attila@kinali.ch>
      Signed-off-by: default avatarLauri Hintsala <lauri.hintsala@bluegiga.com>
      Acked-by: default avatarShawn Guo <shawn.guo@linaro.org>
      Signed-off-by: default avatarChris Ball <cjb@laptop.org>
      [bwh: Backported to 3.2:
       - Adjust context
       - HW_SSP_STATUS is a simple rather than function-like macro]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      sb_edac: Avoid overflow errors at memory size calculation
      
      commit deb09ddaff1435f72dd598d38f9b58354c68a5ec upstream.
      
      Sandy bridge EDAC is calculating the memory size with overflow.
      Basically, the size field and the integer calculation is using 32 bits.
      More bits are needed, when the DIMM memories have high density.
      
      The net result is that memories are improperly reported there, when
      high-density DIMMs are used:
      
      EDAC DEBUG: in drivers/edac/sb_edac.c, line at 591: mc#0: channel 0, dimm 0, -16384 Mb (-4194304 pages) bank: 8, rank: 2, row: 0x10000, col: 0x800
      EDAC DEBUG: in drivers/edac/sb_edac.c, line at 591: mc#0: channel 1, dimm 0, -16384 Mb (-4194304 pages) bank: 8, rank: 2, row: 0x10000, col: 0x800
      
      As the number of pages value is handled at the EDAC core as unsigned
      ints, the driver shows the 16 GB memories at sysfs interface as 16760832
      MB! The fix is simple: calculate the number of pages as unsigned 64-bits
      integer.
      
      After the patch, the memory size (16 GB) is properly detected:
      
      EDAC DEBUG: in drivers/edac/sb_edac.c, line at 592: mc#0: channel 0, dimm 0, 16384 Mb (4194304 pages) bank: 8, rank: 2, row: 0x10000, col: 0x800
      EDAC DEBUG: in drivers/edac/sb_edac.c, line at 592: mc#0: channel 1, dimm 0, 16384 Mb (4194304 pages) bank: 8, rank: 2, row: 0x10000, col: 0x800
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      [bwh: Backported to 3.2:
       - Adjust context
       - Debug log function is debugf0(), not edac_dbg()]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Qiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tg3: Skip powering down function 0 on certain serdes devices
      
      commit 44f3b503c16425c8e9db4bbaa2fc9cd0c9d0ba91 upstream.
      
      On the 5718, 5719 and 5720 serdes devices, powering down function 0
      results in all the other ports being powered down. Add code to skip
      function 0 power down.
      
      v2:
       - Modify tg3_phy_power_bug() function to use a switch instead of a
         complicated if statement. Suggested by Joe Perches.
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarNithin Nayak Sujir <nsujir@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      [bwh: Backported to 3.2:
       s/tg3_asic_rev\(tp\)/GET_ASIC_REV(tp->pci_chip_rev_id)/]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [hq: Backported to 3.4: Adjust context]
      Signed-off-by: default avatarQiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      tg3: Add read dma workaround for 5720
      
      commit 9bc297ea0622bb2a6b3abfa2fa84f0a3b86ef8c8 upstream.
      
      Commit 091f0ea30074bc43f9250961b3247af713024bc6 "tg3: Add New 5719 Read
      DMA workaround" added a workaround for TX DMA stall on the 5719. This
      workaround needs to be applied to the 5720 as well.
      Reported-by: default avatarRoland Dreier <roland@purestorage.com>
      Tested-by: default avatarRoland Dreier <roland@purestorage.com>
      Signed-off-by: default avatarNithin Nayak Sujir <nsujir@broadcom.com>
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      [bwh: Backported to 3.2: use GET_ASIC_REV() instead of tg3_asic_rev()]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      [hq: Backproted to 3.4: Adjust context]
      Signed-off-by: default avatarQiang Huang <h.huangqiang@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      media: gspca_kinect: add Kinect for Windows USB id
      
      commit 98fd485795db064d0885150e2c0c7f296d8fe06e upstream.
      
      Add the USB ID for the Kinect for Windows RGB camera so it can be used
      with the gspca_kinect driver.
      Signed-off-by: default avatarJacob Schloss <jacob.schloss@unlimitedautomata.com>
      Signed-off-by: default avatarAntonio Ospite <ospite@studenti.unina.it>
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      [bwh: Backported to 3.2: adjust filename]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      media: v4l: Reset subdev v4l2_dev field to NULL if registration fails
      
      commit 317efce991620adc589b3005b9baed433dcb2a56 upstream.
      
      When subdev registration fails the subdev v4l2_dev field is left to a
      non-NULL value. Later calls to v4l2_device_unregister_subdev() will
      consider the subdev as registered and will module_put() the subdev
      module without any matching module_get().
      Fix this by setting the subdev v4l2_dev field to NULL in
      v4l2_device_register_subdev() when the function fails.
      Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Acked-by: default avatarSylwester Nawrocki <s.nawrocki@samsung.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      [bwh: Backported to 3.2: adjust context, filename]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      media: omap_vout: find_vma() needs ->mmap_sem held
      
      commit 55ee64b30a38d688232e5eb2860467dddc493573 upstream.
      
      Walking rbtree while it's modified is a Bad Idea(tm); besides,
      the result of find_vma() can be freed just as it's getting returned
      to caller.  Fortunately, it's easy to fix - just take ->mmap_sem a bit
      earlier (and don't bother with find_vma() at all if virtp >= PAGE_OFFSET -
      in that case we don't even look at its result).
      
      While we are at it, what prevents VIDIOC_PREPARE_BUF calling
      v4l_prepare_buf() -> (e.g) vb2_ioctl_prepare_buf() -> vb2_prepare_buf() ->
      __buf_prepare() -> __qbuf_userptr() -> vb2_vmalloc_get_userptr() -> find_vma(),
      AFAICS without having taken ->mmap_sem anywhere in process?  The code flow
      is bloody convoluted and depends on a bunch of things done by initialization,
      so I certainly might've missed something...
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Cc: Sakari Ailus <sakari.ailus@iki.fi>
      Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
      Cc: Archit Taneja <archit@ti.com>
      Cc: Prabhakar Lad <prabhakar.lad@ti.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      [bwh: Backported to 3.2: adjust filename]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      media: hdpvr: register the video node at the end of probe
      
      commit 280847b532433ffe7a22795f926327805a127162 upstream.
      
      Video nodes can be used at once after registration, so make sure the full
      initialization is done before registering them.
      Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
      [bwh: Backported to 3.2: adjust filename, context]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      media: hdpvr: fix iteration over uninitialized lists in hdpvr_probe()
      
      commit 2e923a0527ac439e135b9961e58d3acd876bba10 upstream.
      
      free_buff_list and rec_buff_list are initialized in the middle of hdpvr_probe(),
      but if something bad happens before that, error handling code calls hdpvr_delete(),
      which contains iteration over the lists (via hdpvr_free_buffers()).
      The patch moves the lists initialization to the beginning and by the way fixes
      goto label in error handling of registering videodev.
      Found by Linux Driver Verification project (linuxtesting.org).
      Signed-off-by: default avatarAlexey Khoroshilov <khoroshilov@ispras.ru>
      Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      [bwh: Backported to 3.2: adjust filename]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      media: saa7164: fix return value check in saa7164_initdev()
      
      commit 89f4d45b2752df5d222b5f63919ce59e2d8afaf4 upstream.
      
      In case of error, the function kthread_run() returns ERR_PTR()
      and never returns NULL. The NULL test in the return value check
      should be replaced with IS_ERR().
      Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
      [bwh: Backported to 3.2: adjust filename]
      Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
      Cc: Jianguo Wu <wujianguo@huawei.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      powernow-k6: disable cache when changing frequency
      
      commit e20e1d0ac02308e2211306fc67abcd0b2668fb8b upstream.
      
      I found out that a system with k6-3+ processor is unstable during network
      server load. The system locks up or the network card stops receiving. The
      reason for the instability is the CPU frequency scaling.
      
      During frequency transition the processor is in "EPM Stop Grant" state.
      The documentation says that the processor doesn't respond to inquiry
      requests in this state. Consequently, coherency of processor caches and
      bus master devices is not maintained, causing the system instability.
      
      This patch flushes the cache during frequency transition. It fixes the
      instability.
      
      Other minor changes:
      * u64 invalue changed to unsigned long because the variable is 32-bit
      * move the logic to set the multiplier to a separate function
        powernow_k6_set_cpu_multiplier
      * preserve lower 5 bits of the powernow port instead of 4 (the voltage
        field has 5 bits)
      * mask interrupts when reading the multiplier, so that the port is not
        open during other activity (running other kernel code with the port open
        shouldn't cause any misbehavior, but we should better be safe and keep
        the port closed)
      
      This patch should be backported to all stable kernels. If it doesn't
      apply cleanly, change it, or ask me to change it.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      powernow-k6: correctly initialize default parameters
      
      commit d82b922a4acc1781d368aceac2f9da43b038cab2 upstream.
      
      The powernow-k6 driver used to read the initial multiplier from the
      powernow register. However, there is a problem with this:
      
      * If there was a frequency transition before, the multiplier read from the
        register corresponds to the current multiplier.
      * If there was no frequency transition since reset, the field in the
        register always reads as zero, regardless of the current multiplier that
        is set using switches on the mainboard and that the CPU is running at.
      
      The zero value corresponds to multiplier 4.5, so as a consequence, the
      powernow-k6 driver always assumes multiplier 4.5.
      
      For example, if we have 550MHz CPU with bus frequency 100MHz and
      multiplier 5.5, the powernow-k6 driver thinks that the multiplier is 4.5
      and bus frequency is 122MHz. The powernow-k6 driver then sets the
      multiplier to 4.5, underclocking the CPU to 450MHz, but reports the
      current frequency as 550MHz.
      
      There is no reliable way how to read the initial multiplier. I modified
      the driver so that it contains a table of known frequencies (based on
      parameters of existing CPUs and some common overclocking schemes) and sets
      the multiplier according to the frequency. If the frequency is unknown
      (because of unusual overclocking or underclocking), the user must supply
      the bus speed and maximum multiplier as module parameters.
      
      This patch should be backported to all stable kernels. If it doesn't
      apply cleanly, change it, or ask me to change it.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      powernow-k6: reorder frequencies
      
      commit 22c73795b101597051924556dce019385a1e2fa0 upstream.
      
      This patch reorders reported frequencies from the highest to the lowest,
      just like in other frequency drivers.
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9f394999
    • hellsgod's avatar
      6029618b
    • hellsgod's avatar
      Makefile: Change to Linaro 4.9.1-2014.05 · a76beae6
      hellsgod authored
      a76beae6
    • Hieu Phan's avatar
      drivers/cpufreq/cpufreq_interactive.c: fixwarning: operation on 'ret' may be... · f18f6cf6
      Hieu Phan authored
      drivers/cpufreq/cpufreq_interactive.c: fixwarning: operation on 'ret' may be undefined [-Wsequence-point]
      Signed-off-by: default avatarHieu Phan <aznrice2k4@gmail.com>
      f18f6cf6
    • Patrick Tjin's avatar
      Revert "mako: touch: PLG137 firmware E044 update" · 61ae63bf
      Patrick Tjin authored
      Bug: 13911624
      
      This reverts commit 520f5f3b8cfcf3532f43f29217f6efefe7563d1f.
      61ae63bf
    • Jongrak Kwon's avatar
      Revert "mako: touch: add error checking for reading descriptor" · b0aedbf7
      Jongrak Kwon authored
      
      Due to the side effect of the patch, firmware update might not be
      recommenced when the firmware's in bad state. The firmware could be
      in bad state when the firmware update's started in recovery mode and
      system reboots before it's finished.
      
      The error checking was added to detect I2C error after firmware update
      but I2C error doesn't actually happen because of
      e900ac0de811f62612480aa38fc3ac2d13fa2055, so revert it.
      
      b/13532017
      
      This reverts commit ca1e3b0e5f134aa837c8b808779eb2426ff96944.
      
      Change-Id: I8916f7ca5ab9fe8a4685334349a882b580c26179
      Signed-off-by: default avatarJongrak Kwon <jongrak.kwon@lge.com>
      (cherry picked from commit 236a463041d19e8b370ea2d45cb852a46d5d9d55)
      b0aedbf7
    • Vineeta Srivastava's avatar
      Revert "Power: add an API to log wakeup reasons" · 082089e7
      Vineeta Srivastava authored
      This reverts commit 15be381a2614982294b65bc36814de29a7d2502a.
      
      Change-Id: I897ce59024399c8d5c59942d08c985eef5cf1fe3
      082089e7
    • Vineeta Srivastava's avatar
      Revert "POWER: fix compile warnings in log_wakeup_reason" · b4efd566
      Vineeta Srivastava authored
      This reverts commit 0d7de069b17d4f766203f106e4948eb8353292eb.
      
      Change-Id: I7d421be1d3337906a31b9360504faee1e6492f92
      b4efd566
    • Vineeta Srivastava's avatar
      Revert "POWER: Add an API call to log wake wakeup reason" · c2b2ac9b
      Vineeta Srivastava authored
      This reverts commit 92869b73c2a59c151215bd6a0c91e2d3a3767994.
      
      Change-Id: Ia1e07f9bbaf9784726020518807585a9c78bf53a
      c2b2ac9b
    • Ed Tam's avatar
      prima: release v3.2.3.18 · b9358a58
      Ed Tam authored
          git://codeaurora.org/external/wlan/prima.git
      
      
      
          ddf6376 wlan : Revision 3.2.3.18
          c7f2ee4 wlan: adding cfg.ini parameter to configure to RA filter.
          b55e3a1 wlan : Revision 3.2.3.17
          82b2600 wlan: Remove extra line & error handling
          479d343 wlan: Check for WatchDog reset status during queue selection
          9322c18 wlan: Use HDD context flag to check SSR status
          1c12443 wlan: Remove "isMcAddrListFilter" INI param
          9297d6c wlan: Multicast Address Filter cleanup
          375d30f wlan: Updating the Channel list based on 11d from Nv.bin.
          666d726 wlan: Additional Scan IE data is not as per interface.
      Signed-off-by: default avatarEd Tam <etam@google.com>
      b9358a58
    • Ruchi Kandoi's avatar
      POWER: Add an API call to log wake wakeup reason · b7ed2c85
      Ruchi Kandoi authored
      
      Change-Id: I8bf670b07dcd52e29214ebb4e6e42dddd8c3d35e
      Signed-off-by: default avatarRuchi kandoi <kandoiruchi@google.com>
      b7ed2c85
    • Ruchi Kandoi's avatar
      POWER: fix compile warnings in log_wakeup_reason · 2cf7cdfc
      Ruchi Kandoi authored
      
      Change I81addaf420f1338255c5d0638b0d244a99d777d1 introduced compile
      warnings, fix these.
      
      Change-Id: I05482a5335599ab96c0a088a7d175c8d4cf1cf69
      Signed-off-by: default avatarRuchi Kandoi <kandoiruchi@google.com>
      2cf7cdfc
    • Ruchi Kandoi's avatar
      Power: add an API to log wakeup reasons · 202f0a7d
      Ruchi Kandoi authored
      
      Add API log_wakeup_reason() and expose it to userspace via sysfs path
      /sys/kernel/wakeup_reasons/last_resume_reason
      
      Change-Id: I81addaf420f1338255c5d0638b0d244a99d777d1
      Signed-off-by: default avatarRuchi Kandoi <kandoiruchi@google.com>
      202f0a7d
    • keunyoung's avatar
      fix false disconnect due to a signal sent to the reading process · 37b59f0d
      keunyoung authored
      
      - In the current implementation, when a signal is sent to the reading process,
        read is cancelled by calling usb_ep_dequeue, which lead into calling
        acc_complete_out with ECONNRESET, but the current logic treats it as
        disconnection, which makes the device inaccessible until cable is actually
        disconnected.
      - The fix calls disconnect only when ESHUTDOWN error is passed.
      - If data has already arrived while trying cancelling, the data is marked
        as available, and it will be read out on the next read. This is necessary
        as USB bulk is assumed to guarantee no data loss.
      Signed-off-by: default avatarkeunyoung <keunyoung@google.com>
      37b59f0d
    • Ed Tam's avatar
      prima: release v3.2.3.16 · fcbd84ef
      Ed Tam authored
          git://codeaurora.org/external/wlan/prima.git
      
      
      
          bbb00be wlan : Revision 3.2.3.16
          e5cb4d6 wlan: Initilize country IE prefrence flag
          04b4db0 wlan: VOS ASSERT in csrRoamCompletion due to Assoc ref count.
          10801e4 wifi: Scan list not updated with correct APs on band change.
          6157d55 wlan : Revision 3.2.3.15
          118d50b wlan: Fix to pass global temporary dynamic IPv6 addr
          9c5a189 wlan: Fix for handling IPv6 notifier block rightly.
          ff6ea2c Registering IPv6 notifier to notify change in IP.
          8482b36 wlan : Revision 3.2.3.14
          515bf61 wlan : Updated TDLS parameters in ini
          8178e94 wlan: Flush scan results on PNO indication event.
      Signed-off-by: default avatarEd Tam <etam@google.com>
      fcbd84ef
    • hellsgod's avatar
      cfg80211: add flags to define country IE processing rules · cd414191
      hellsgod authored
      
      802.11 cards may have different country IE parsing behavioural
      preferences and vendors may want to support these. These preferences
      were managed by the WIPHY_FLAG_CUSTOM_REGULATORY and the
      WIPHY_FLAG_STRICT_REGULATORY flags and their combination.
      Instead of using this existing notation, split out the country IE
      behavioural preferences to a new flag. This will allow us to add more
      customizations easily and make the code more maintainable. Also add
      a new flag to disable country IE hints issued by the CORE as the
      first customization.
      
      Change-Id: I66ba4a92ac0f029a115eea0a274b02db11279787
      CRs-Fixed: 542802
      Signed-off-by: default avatarMihir Shete <smihir@codeaurora.org>
      cd414191
    • Jongrak Kwon's avatar
      mako: touch: add error checking for reading descriptor · 7125577a
      Jongrak Kwon authored
      
      Previous code didn't check errors for reading descriptors.
      Normally there's no error during reading descriptors but
      touch device won't be working until complete power recycle
      once it happens.
      
      Change-Id: Ie3cb329cd85f59f592c5c9994c9db84c58f487ca
      Signed-off-by: default avatarJongrak Kwon <jongrak.kwon@lge.com>
      7125577a
    • Jongrak Kwon's avatar
      mako: touch: fix i2c error after firmware upgrade · b07f22f9
      Jongrak Kwon authored
      
      After firmware upgrade, there should be some delay to
      prevent i2c error. Added booting_delay to avoid the i2c error.
      
      Change-Id: Icbc9c656d2f7db1329e83553cc5c1e20033600e5
      Signed-off-by: default avatarJongrak Kwon <jongrak.kwon@lge.com>
      b07f22f9
    • Hannes Frederic Sowa's avatar
      ping: prevent NULL pointer dereference on write to msg_name · f1dc3396
      Hannes Frederic Sowa authored
      
      A plain read() on a socket does set msg->msg_name to NULL. So check for
      NULL pointer first.
      
      [Backport of net-next cf970c002d270c36202bd5b9c2804d3097a52da0]
      
      Bug: 12780426
      Change-Id: Ida66892d359d2dfbb32803d8b0872bf8c0bb3865
      Signed-off-by: default avatarHannes Frederic Sowa <hannes@stressinduktion.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarLorenzo Colitti <lorenzo@google.com>
      (cherry picked from commit 9ad40c7df302ef477a3359dc02cc4b1834c948fc)
      f1dc3396
    • hellsgod's avatar
      tcp: add a sysctl to config the tcp_default_init_rwnd · 021a6619
      hellsgod authored
      The default initial rwnd is hardcoded to 10.
      
      Now we allow it to be controlled via
        /proc/sys/net/ipv4/tcp_default_init_rwnd
      which limits the values from 3 to 100
      
      This is somewhat needed because ipv6 routes are
      autoconfigured by the kernel.
      
      See "An Argument for Increasing TCP's Initial Congestion Window"
      in https://developers.google.com/speed/articles/tcp_initcwnd_paper.pdf
      
      
      
      Change-Id: I386b2a9d62de0ebe05c1ebe1b4bd91b314af5c54
      Signed-off-by: default avatarJP Abgrall <jpa@google.com>
      
      Conflicts:
      	include/net/tcp.h
      021a6619
    • Ashish Sharma's avatar
    • Eric Paris's avatar
      SELinux: include definition of new capabilities · 44a5765a
      Eric Paris authored
      
      The kernel has added CAP_WAKE_ALARM and CAP_EPOLLWAKEUP.  We need to
      define these in SELinux so they can be mediated by policy.
      
      Change-Id: I8a3e0db15ec5f4eb05d455a57e8446a8c2b484c2
      Signed-off-by: default avatarEric Paris <eparis@redhat.com>
      Signed-off-by: default avatarJames Morris <james.l.morris@oracle.com>
      [sds: rename epollwakeup to block_suspend to match upstream merge]
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      (cherry picked from commit c6a020c889756568d0e2f3ab0c1f04ad9fcb320c)
      44a5765a
    • JP Abgrall's avatar
      android: configs: Grab the android/configs from kernel/common · 2d4fd458
      JP Abgrall authored
      
      This is a squash of all changes from kernel/common android-3.4 up to
        5e35d66 android: configs: add IPV6 ROUTE INFO
      
      Change-Id: I848f1865ec7da1dfc3338a3e9d7f944a6f00f2a6
      Signed-off-by: default avatarJP Abgrall <jpa@google.com>
      2d4fd458
    • Devin Kim's avatar
      fs/dcache.c: Fix the too small buffer for dname · 1fc51ff2
      Devin Kim authored
      
      temp[64] is used for internal temporary buffer in dynamic_dname().
      This is for dname. But It's too small. dname's size may be > 64.
      In that case, it returns as -ENAMETOOLONG. So Increase the buffer size
      to 256 for avoiding this issue.
      
      The following was caused by the small buffer.
      WARNING: at /kernel/mm/page_alloc.c:2470 __alloc_pages_nodemask+0x24c/0x938()
      CPU: 2 PID: 505 Comm: android.bg Not tainted 3.10.0-g2f73780-00003-g2ff41d9-dirty #13
      [<c010ba3c>] (unwind_backtrace+0x0/0x11c) from [<c0109cac>] (show_stack+0x10/0x14)
      [<c0109cac>] (show_stack+0x10/0x14) from [<c01939a0>] (warn_slowpath_common+0x48/0x68)
      [<c01939a0>] (warn_slowpath_common+0x48/0x68) from [<c0193a7c>] (warn_slowpath_null+0x18/0x20)
      [<c0193a7c>] (warn_slowpath_null+0x18/0x20) from [<c0222454>] (__alloc_pages_nodemask+0x24c/0x938)
      [<c0222454>] (__alloc_pages_nodemask+0x24c/0x938) from [<c0222b50>] (__get_free_pages+0x10/0x24)
      [<c0222b50>] (__get_free_pages+0x10/0x24) from [<c024faf8>] (kmalloc_order_trace+0x24/0xf0)
      [<c024faf8>] (kmalloc_order_trace+0x24/0xf0) from [<c024fe20>] (__kmalloc+0x30/0x244)
      [<c024fe20>] (__kmalloc+0x30/0x244) from [<c02723c8>] (seq_read+0x270/0x464)
      [<c02723c8>] (seq_read+0x270/0x464) from [<c0256a18>] (vfs_read+0xa4/0x134)
      [<c0256a18>] (vfs_read+0xa4/0x134) from [<c0256de8>] (SyS_read+0x38/0x68)
      [<c0256de8>] (SyS_read+0x38/0x68) from [<c0106140>] (ret_fast_syscall+0x0/0x30)
      
      Change-Id: I74f5217ba3c4be73e91f33f900f1f0c26810cc05
      Signed-off-by: default avatarDevin Kim <dojip.kim@lge.com>
      1fc51ff2
    • Devin Kim's avatar
      seq_file: always clear m->count when we free m->buf · 06f5e4c0
      Devin Kim authored
      Once we'd freed m->buf, m->count should become zero - we have no valid
      contents reachable via m->buf.
      
      cherry-picked from https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/fs/seq_file.c?id=801a76050bcf8d4e500eb8d048ff6265f37a61c8
      
      
      
      Change-Id: I4c1d3e69db4ecf5362e2a5d05bfd7db754dc6dc6
      Reported-by: default avatarCharley (Hao Chuan) Chu <charley.chu@broadcom.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarDevin Kim <dojip.kim@lge.com>
      06f5e4c0
    • Devin Kim's avatar
      seq_file: always update file->f_pos in seq_lseek() · 42a93c2b
      Devin Kim authored
      This issue was first pointed out by Jiaxing Wang several months ago, but no
      further comments:
      https://lkml.org/lkml/2013/6/29/41
      
      As we know pread() does not change f_pos, so after pread(), file->f_pos
      and m->read_pos become different. And seq_lseek() does not update file->f_pos
      if offset equals to m->read_pos, so after pread() and seq_lseek()(lseek to
      m->read_pos), then a subsequent read may read from a wrong position, the
      following program produces the problem:
      
          char str1[32] = { 0 };
          char str2[32] = { 0 };
          int poffset = 10;
          int count = 20;
      
          /*open any seq file*/
          int fd = open("/proc/modules", O_RDONLY);
      
          pread(fd, str1, count, poffset);
          printf("pread:%s\n", str1);
      
          /*seek to where m->read_pos is*/
          lseek(fd, poffset+count, SEEK_SET);
      
          /*supposed to read from poffset+count, but this read from position 0*/
          read(fd, str2, count);
          printf("read:%s\n", str2);
      
      out put:
      pread:
       ck_netbios_ns 12665
      read:
       nf_conntrack_netbios
      
      /proc/modules:
      nf_conntrack_netbios_ns 12665 0 - Live 0xffffffffa038b000
      nf_conntrack_broadcast 12589 1 nf_conntrack_netbios_ns, Live 0xffffffffa0386000
      
      So we always update file->f_pos to offset in seq_lseek() to fix this issue.
      
      cherry-picked from https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/fs/seq_file.c?id=05e16745c0c471bba313961b605b6da3b21a853d
      
      Signed-off-by: default avatarJiaxing Wang <hello.wjx@gmail.com>
      Signed-off-by: default avatarGu Zheng <guz.fnst@cn.fujitsu.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      
      Conflicts:
      	fs/seq_file.c
      
      Change-Id: If419b92498e2c3e08669a4342e9b9ebf99ad3768
      Signed-off-by: default avatarDevin Kim <dojip.kim@lge.com>
      42a93c2b
    • Jongrak Kwon's avatar
      mako: touch: PLG137 firmware E044 update · e9839396
      Jongrak Kwon authored
      
      Improved ghost touch issues by
      - Upgraded baseline check algorithm
      - Adjusted touch sensitivity
      
      It doesn't help in all cases for b/9236385
      
      Bug: 7725315
      Bug: 9236385
      Change-Id: I1850427bac84620f34cad61bdfd9b16bbf692e32
      Signed-off-by: default avatarJongrak Kwon <jongrak.kwon@lge.com>
      e9839396
    • Naseer Ahmed's avatar
      msm: mdp: Free secure memory based on pipe config · 1b766b56
      Naseer Ahmed authored
      
      When there is no secure pipe configured, we can unmap secure
      memory instead of relying on unset with secure flag set from
      userspace.
      
      Bug: 11857675
      Signed-off-by: default avatarNaseer Ahmed <naseer@codeaurora.org>
      1b766b56
  3. 06 Apr, 2014 2 commits
    • hellsgod's avatar
      config: b46-t4-kk · ce14da27
      hellsgod authored
      ce14da27
    • Greg Kroah-Hartman's avatar
      Linux 3.4.86 · a5ea33ba
      Greg Kroah-Hartman authored
      
      staging: speakup: Prefix externally-visible symbols
      
      commit ca2beaf84d9678c12b17d92623f0e90829d6ca13 upstream.
      
      This prefixes all externally-visible symbols of speakup with "spk_".
      Signed-off-by: default avatarSamuel Thibault <samuel.thibault@ens-lyon.org>
      Cc: Kamal Mostafa <kamal@canonical.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      ext4: atomically set inode->i_flags in ext4_set_inode_flags()
      
      commit 00a1a053ebe5febcfc2ec498bd894f035ad2aa06 upstream.
      
      Use cmpxchg() to atomically set i_flags instead of clearing out the
      S_IMMUTABLE, S_APPEND, etc. flags and then setting them from the
      EXT4_IMMUTABLE_FL, EXT4_APPEND_FL flags, since this opens up a race
      where an immutable file has the immutable flag cleared for a brief
      window of time.
      Reported-by: default avatarJohn Sullivan <jsrhbz@kanargh.force9.co.uk>
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Input: synaptics - add manual min/max quirk
      
      commit 421e08c41fda1f0c2ff6af81a67b491389b653a5 upstream.
      
      The new Lenovo Haswell series (-40's) contains a new Synaptics touchpad.
      However, these new Synaptics devices report bad axis ranges.
      Under Windows, it is not a problem because the Windows driver uses RMI4
      over SMBus to talk to the device. Under Linux, we are using the PS/2
      fallback interface and it occurs the reported ranges are wrong.
      
      Of course, it would be too easy to have only one range for the whole
      series, each touchpad seems to be calibrated in a different way.
      
      We can not use SMBus to get the actual range because I suspect the firmware
      will switch into the SMBus mode and stop talking through PS/2 (this is the
      case for hybrid HID over I2C / PS/2 Synaptics touchpads).
      
      So as a temporary solution (until RMI4 land into upstream), start a new
      list of quirks with the min/max manually set.
      Signed-off-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      Input: synaptics - add manual min/max quirk for ThinkPad X240
      
      commit 8a0435d958fb36d93b8df610124a0e91e5675c82 upstream.
      
      This extends Benjamin Tissoires manual min/max quirk table with support for
      the ThinkPad X240.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      x86: fix boot on uniprocessor systems
      
      commit 825600c0f20e595daaa7a6dd8970f84fa2a2ee57 upstream.
      
      On x86 uniprocessor systems topology_physical_package_id() returns -1
      which causes rapl_cpu_prepare() to leave rapl_pmu variable uninitialized
      which leads to GPF in rapl_pmu_init().
      
      See arch/x86/kernel/cpu/perf_event_intel_rapl.c.
      
      It turns out that physical_package_id and core_id can actually be
      retreived for uniprocessor systems too.  Enabling them also fixes
      rapl_pmu code.
      Signed-off-by: default avatarArtem Fetishev <artem_fetishev@epam.com>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      
      netfilter: nf_conntrack_dccp: fix skb_header_pointer API usages
      
      commit b22f5126a24b3b2f15448c3f2a254fc10cbc2b92 upstream.
      
      Some occurences in the netfilter tree use skb_header_pointer() in
      the following way ...
      
        struct dccp_hdr _dh, *dh;
        ...
        skb_header_pointer(skb, dataoff, sizeof(_dh), &dh);
      
      ... where dh itself is a pointer that is being passed as the copy
      buffer. Instead, we need to use &_dh as the forth argument so that
      we're copying the data into an actual buffer that sits on the stack.
      
      Currently, we probably could overwrite memory on the stack (e.g.
      with a possibly mal-formed DCCP packet), but unintentionally, as
      we only want the buffer to be placed into _dh variable.
      
      Fixes: 2bc78049
      
       ("[NETFILTER]: nf_conntrack: add DCCP protocol support")
      Signed-off-by: default avatarDaniel Borkmann <dborkman@redhat.com>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a5ea33ba