commit a2b4bcbfbe576b87372f1af36d4fb1d31ae2bd92
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Wed Oct 10 03:31:37 2012 +0100

    Linux 3.2.31

commit 748e7f2af936e2811c49fe0d2bbdcbeb1ebcd5bc
Author: Yevgeniy Melnichuk <yevgeniy.melnichuk@googlemail.com>
Date:   Tue Aug 7 19:48:10 2012 +0530

    Bluetooth: Add support for Sony Vaio T-Series
    
    commit bc21fde2d549d1cb1ebef04016eb7affa43bb5c1 upstream.
    
    Add Sony Vaio T-Series Bluetooth Module( 0x489:0xE036) to
    the blacklist of btusb module and add it to the ath3k module.
    
    output of cat /sys/kernel/debug/usb/devices
    
    T:  Bus=01 Lev=02 Prnt=02 Port=01 Cnt=01 Dev#=  5 Spd=12   MxCh= 0
    D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0489 ProdID=e036 Rev= 0.02
    S:  Manufacturer=Atheros Communications
    S:  Product=Bluetooth USB Host Controller
    S:  SerialNumber=Alaska Day 2006
    C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
    E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
    I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
    I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
    I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
    I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
    I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
    I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    
    Signed-off-by: Yevgeniy Melnichuk <yevgeniy.melnichuk@googlemail.com>
    Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qca.qualcomm.com>
    Acked-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit db50e323d9c7fe7b12361e61b258592b199be76b
Author: Peng Chen <pengchen@qca.qualcomm.com>
Date:   Wed Aug 1 10:11:59 2012 +0800

    Bluetooth: add support for atheros 0489:e057
    
    commit 2096ae6ca647302d50a68aa36cb66a00e7dfac70 upstream.
    
        Add support for the AR3012 chip found on Fioxconn.
    
        usb-devices shows:
    
        T:  Bus=06 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 44 Spd=12   MxCh= 0
        D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
        P:  Vendor=0489 ProdID=e057 Rev= 0.02
        C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
        I:* If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
        E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
        E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
        I:* If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
        E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
        I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
        E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
        I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
        E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
        I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
        E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
        I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
        E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
        I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
        E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
        E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
    
    Signed-off-by: Peng Chen <pengchen@qca.qualcomm.com>
    Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 65c5e411f7834450ecdef41047c4a63b6eff998b
Author: Giancarlo Formicuccia <giancarlo.formicuccia@gmail.com>
Date:   Sun Jun 10 08:33:11 2012 +0200

    Bluetooth: add support for atheros 0930:0219
    
    commit 6c4ae5c2e7bfbb7d10d73611f69ac8a8609d84fd upstream.
    
    Add support for the AR3012 chip found on the Toshiba Sallite M840-1000-XQ.
    
    usb-devices shows:
    
    T:  Bus=01 Lev=02 Prnt=02 Port=02 Cnt=01 Dev#=  5 Spd=12  MxCh= 0
    D:  Ver= 1.10 Cls=e0(wlcon) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
    P:  Vendor=0930 ProdID=0219 Rev=00.02
    S:  Manufacturer=Atheros Communications
    S:  Product=Bluetooth USB Host Controller
    S:  SerialNumber=Alaska Day 2006
    C:  #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr=100mA
    I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(wlcon) Sub=01 Prot=01 Driver=btusb
    
    Signed-off-by: Giancarlo Formicuccia <giancarlo.formicuccia@gmail.com>
    Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e9fb4c8ec396f454790247cbff1d30c4f35dba63
Author: Marek Vasut <marex@denx.de>
Date:   Fri Jun 8 14:32:50 2012 +0200

    Bluetooth: Support AR3011 in Acer Iconia Tab W500
    
    commit 6eda541d12116b4772baa09d3e8d7b0389df4289 upstream.
    
    Acer used this chip connected via USB:
    
    Bus 005 Device 005: ID 0cf3:3005 Atheros Communications, Inc. AR3011 Bluetooth
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               1.10
      bDeviceClass          224 Wireless
      bDeviceSubClass         1 Radio Frequency
      bDeviceProtocol         1 Bluetooth
      bMaxPacketSize0        64
      idVendor           0x0cf3 Atheros Communications, Inc.
      idProduct          0x3005 AR3011 Bluetooth
      bcdDevice            0.01
      iManufacturer           0
      iProduct                0
      iSerial                 0
      bNumConfigurations      1
    
    Signed-off-by: Marek Vasut <marex@denx.de>
    Cc: Gustavo Padovan <gustavo@padovan.org>
    Cc: Johan Hedberg <johan.hedberg@gmail.com>
    Cc: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3a0d367c4e7e016ed18c2aec5e0734f20e3e45df
Author: Matt Carlson <mcarlson@broadcom.com>
Date:   Mon Nov 28 09:41:03 2011 +0000

    tg3: Fix TSO CAP for 5704 devs w / ASF enabled
    
    [ Upstream commit cf9ecf4b631f649a964fa611f1a5e8874f2a76db ]
    
    On the earliest TSO capable devices, TSO was accomplished through
    firmware.  The TSO cannot coexist with ASF management firmware though.
    The tg3 driver determines whether or not ASF is enabled by calling
    tg3_get_eeprom_hw_cfg(), which checks a particular bit of NIC memory.
    Commit dabc5c670d3f86d15ee4f42ab38ec5bd2682487d, entitled "tg3: Move
    TSO_CAPABLE assignment", accidentally moved the code that determines
    TSO capabilities earlier than the call to tg3_get_eeprom_hw_cfg().  As a
    consequence, the driver was attempting to determine TSO capabilities
    before it had all the data it needed to make the decision.
    
    This patch fixes the problem by revisiting and reevaluating the decision
    after tg3_get_eeprom_hw_cfg() is called.
    
    Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
    Signed-off-by: Michael Chan <mchan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c660b90b1ac6a005f3c46e7d359dcacf86007336
Author: Ed Cashin <ecashin@coraid.com>
Date:   Wed Sep 19 15:46:39 2012 +0000

    aoe: assert AoE packets marked as requiring no checksum
    
    [ Upstream commit 8babe8cc6570ed896b7b596337eb8fe730c3ff45 ]
    
    In order for the network layer to see that AoE requires
    no checksumming in a generic way, the packets must be
    marked as requiring no checksum, so we make this requirement
    explicit with the assertion.
    
    Signed-off-by: Ed Cashin <ecashin@coraid.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9d222e395fc51081a77bac4168141e289dff2d4b
Author: Ed Cashin <ecashin@coraid.com>
Date:   Wed Sep 19 15:49:00 2012 +0000

    net: do not disable sg for packets requiring no checksum
    
    [ Upstream commit c0d680e577ff171e7b37dbdb1b1bf5451e851f04 ]
    
    A change in a series of VLAN-related changes appears to have
    inadvertently disabled the use of the scatter gather feature of
    network cards for transmission of non-IP ethernet protocols like ATA
    over Ethernet (AoE).  Below is a reference to the commit that
    introduces a "harmonize_features" function that turns off scatter
    gather when the NIC does not support hardware checksumming for the
    ethernet protocol of an sk buff.
    
      commit f01a5236bd4b140198fbcc550f085e8361fd73fa
      Author: Jesse Gross <jesse@nicira.com>
      Date:   Sun Jan 9 06:23:31 2011 +0000
    
          net offloading: Generalize netif_get_vlan_features().
    
    The can_checksum_protocol function is not equipped to consider a
    protocol that does not require checksumming.  Calling it for a
    protocol that requires no checksum is inappropriate.
    
    The patch below has harmonize_features call can_checksum_protocol when
    the protocol needs a checksum, so that the network layer is not forced
    to perform unnecessary skb linearization on the transmission of AoE
    packets.  Unnecessary linearization results in decreased performance
    and increased memory pressure, as reported here:
    
      http://www.spinics.net/lists/linux-mm/msg15184.html
    
    The problem has probably not been widely experienced yet, because
    only recently has the kernel.org-distributed aoe driver acquired the
    ability to use payloads of over a page in size, with the patchset
    recently included in the mm tree:
    
      https://lkml.org/lkml/2012/8/28/140
    
    The coraid.com-distributed aoe driver already could use payloads of
    greater than a page in size, but its users generally do not use the
    newest kernels.
    
    Signed-off-by: Ed Cashin <ecashin@coraid.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 85c5e1ba63575f0d345969f8adfa501f9cf99037
Author: Alan Cox <alan@linux.intel.com>
Date:   Tue Sep 4 04:13:18 2012 +0000

    netrom: copy_datagram_iovec can fail
    
    [ Upstream commit 6cf5c951175abcec4da470c50565cc0afe6cd11d ]
    
    Check for an error from this and if so bail properly.
    
    Signed-off-by: Alan Cox <alan@linux.intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d1cf1d013b7966060d01b4dc5753699c5585c150
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Sep 4 15:54:55 2012 -0400

    l2tp: fix a typo in l2tp_eth_dev_recv()
    
    [ Upstream commit c0cc88a7627c333de50b07b7c60b1d49d9d2e6cc ]
    
    While investigating l2tp bug, I hit a bug in eth_type_trans(),
    because not enough bytes were pulled in skb head.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ef15da3b6b92295660dd0f0af7011cf941654ab4
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Sep 25 22:01:28 2012 +0200

    ipv6: mip6: fix mip6_mh_filter()
    
    [ Upstream commit 96af69ea2a83d292238bdba20e4508ee967cf8cb ]
    
    mip6_mh_filter() should not modify its input, or else its caller
    would need to recompute ipv6_hdr() if skb->head is reallocated.
    
    Use skb_header_pointer() instead of pskb_may_pull()
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c3fc2c27f7c56d074f740f1735a2760df4a441bd
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Sep 25 07:03:40 2012 +0000

    ipv6: raw: fix icmpv6_filter()
    
    [ Upstream commit 1b05c4b50edbddbdde715c4a7350629819f6655e ]
    
    icmpv6_filter() should not modify its input, or else its caller
    would need to recompute ipv6_hdr() if skb->head is reallocated.
    
    Use skb_header_pointer() instead of pskb_may_pull() and
    change the prototype to make clear both sk and skb are const.
    
    Also, if icmpv6 header cannot be found, do not deliver the packet,
    as we do in IPv4.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 65a484273f1b97019bcc923be0e47921b895ac30
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Sep 22 00:08:29 2012 +0000

    ipv4: raw: fix icmp_filter()
    
    [ Upstream commit ab43ed8b7490cb387782423ecf74aeee7237e591 ]
    
    icmp_filter() should not modify its input, or else its caller
    would need to recompute ip_hdr() if skb->head is reallocated.
    
    Use skb_header_pointer() instead of pskb_may_pull() and
    change the prototype to make clear both sk and skb are const.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9a2ed90a493c0b955d973b25d81c78621e49af93
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Sep 24 07:00:11 2012 +0000

    net: guard tcp_set_keepalive() to tcp sockets
    
    [ Upstream commit 3e10986d1d698140747fcfc2761ec9cb64c1d582 ]
    
    Its possible to use RAW sockets to get a crash in
    tcp_set_keepalive() / sk_reset_timer()
    
    Fix is to make sure socket is a SOCK_STREAM one.
    
    Reported-by: Dave Jones <davej@redhat.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0dda7b56c0b1341a01d9d4480f921f856007f88a
Author: Chema Gonzalez <chema@google.com>
Date:   Fri Sep 7 13:40:50 2012 +0000

    net: small bug on rxhash calculation
    
    [ Upstream commit 6862234238e84648c305526af2edd98badcad1e0 ]
    
    In the current rxhash calculation function, while the
    sorting of the ports/addrs is coherent (you get the
    same rxhash for packets sharing the same 4-tuple, in
    both directions), ports and addrs are sorted
    independently. This implies packets from a connection
    between the same addresses but crossed ports hash to
    the same rxhash.
    
    For example, traffic between A=S:l and B=L:s is hashed
    (in both directions) from {L, S, {s, l}}. The same
    rxhash is obtained for packets between C=S:s and D=L:l.
    
    This patch ensures that you either swap both addrs and ports,
    or you swap none. Traffic between A and B, and traffic
    between C and D, get their rxhash from different sources
    ({L, S, {l, s}} for A<->B, and {L, S, {s, l}} for C<->D)
    
    The patch is co-written with Eric Dumazet <edumazet@google.com>
    
    Signed-off-by: Chema Gonzalez <chema@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit db8dbd5bbce8931798450d391dcb6ed574ca3ed8
Author: Xiaodong Xu <stid.smth@gmail.com>
Date:   Sat Sep 22 00:09:32 2012 +0000

    pppoe: drop PPPOX_ZOMBIEs in pppoe_release
    
    [ Upstream commit 2b018d57ff18e5405823e5cb59651a5b4d946d7b ]
    
    When PPPOE is running over a virtual ethernet interface (e.g., a
    bonding interface) and the user tries to delete the interface in case
    the PPPOE state is ZOMBIE, the kernel will loop forever while
    unregistering net_device for the reference count is not decreased to
    zero which should have been done with dev_put().
    
    Signed-off-by: Xiaodong Xu <stid.smth@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 73eca9b3aa5b1a756c4f3ff400285e8fa4433c59
Author: Thomas Graf <tgraf@suug.ch>
Date:   Mon Sep 3 04:27:42 2012 +0000

    sctp: Don't charge for data in sndbuf again when transmitting packet
    
    [ Upstream commit 4c3a5bdae293f75cdf729c6c00124e8489af2276 ]
    
    SCTP charges wmem_alloc via sctp_set_owner_w() in sctp_sendmsg() and via
    skb_set_owner_w() in sctp_packet_transmit(). If a sender runs out of
    sndbuf it will sleep in sctp_wait_for_sndbuf() and expects to be waken up
    by __sctp_write_space().
    
    Buffer space charged via sctp_set_owner_w() is released in sctp_wfree()
    which calls __sctp_write_space() directly.
    
    Buffer space charged via skb_set_owner_w() is released via sock_wfree()
    which calls sk->sk_write_space() _if_ SOCK_USE_WRITE_QUEUE is not set.
    sctp_endpoint_init() sets SOCK_USE_WRITE_QUEUE on all sockets.
    
    Therefore if 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.
    
    This could be fixed by clearing the SOCK_USE_WRITE_QUEUE flag but ...
    
    Charging for the data twice does not make sense in the first place, it
    leads to overcharging sndbuf by a factor 2. Therefore this patch only
    charges a single byte in wmem_alloc when transmitting an SCTP packet to
    ensure that the socket stays alive until the packet has been released.
    
    This means that control chunks are no longer accounted for in wmem_alloc
    which I believe is not a problem as skb->truesize will typically lead
    to overcharging anyway and thus compensates for any control overhead.
    
    Signed-off-by: Thomas Graf <tgraf@suug.ch>
    CC: Vlad Yasevich <vyasevic@redhat.com>
    CC: Neil Horman <nhorman@tuxdriver.com>
    CC: David Miller <davem@davemloft.net>
    Acked-by: Vlad Yasevich <vyasevich@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f189aa26fd4f45d4f445d8de85d1b29c6ba92982
Author: Michal Kubeček <mkubecek@suse.cz>
Date:   Fri Sep 14 04:59:52 2012 +0000

    tcp: flush DMA queue before sk_wait_data if rcv_wnd is zero
    
    [ Upstream commit 15c041759bfcd9ab0a4e43f1c16e2644977d0467 ]
    
    If recv() syscall is called for a TCP socket so that
      - IOAT DMA is used
      - MSG_WAITALL flag is used
      - requested length is bigger than sk_rcvbuf
      - enough data has already arrived to bring rcv_wnd to zero
    then when tcp_recvmsg() gets to calling sk_wait_data(), receive
    window can be still zero while sk_async_wait_queue exhausts
    enough space to keep it zero. As this queue isn't cleaned until
    the tcp_service_net_dma() call, sk_wait_data() cannot receive
    any data and blocks forever.
    
    If zero receive window and non-empty sk_async_wait_queue is
    detected before calling sk_wait_data(), process the queue first.
    
    Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 242582dfc34fb64481d6466cbf816768356d2494
Author: Gao feng <gaofeng@cn.fujitsu.com>
Date:   Wed Sep 19 19:25:34 2012 +0000

    ipv6: release reference of ip6_null_entry's dst entry in __ip6_del_rt
    
    [ Upstream commit 6825a26c2dc21eb4f8df9c06d3786ddec97cf53b ]
    
    as we hold dst_entry before we call __ip6_del_rt,
    so we should alse call dst_release not only return
    -ENOENT when the rt6_info is ip6_null_entry.
    
    and we already hold the dst entry, so I think it's
    safe to call dst_release out of the write-read lock.
    
    Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 92d543ce6d280c7736cd242ee9e6112ebe0050c4
Author: Antonio Quartulli <ordex@autistici.org>
Date:   Tue Oct 2 06:14:17 2012 +0000

    8021q: fix mac_len recomputation in vlan_untag()
    
    [ Upstream commit 5316cf9a5197eb80b2800e1acadde287924ca975 ]
    
    skb_reset_mac_len() relies on the value of the skb->network_header pointer,
    therefore we must wait for such pointer to be recalculated before computing
    the new mac_len value.
    
    Signed-off-by: Antonio Quartulli <ordex@autistici.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6e95789b0c1ec39ab7159ec3b2dbcad0af69532e
Author: Lennart Sorensen <lsorense@csclub.uwaterloo.ca>
Date:   Fri Sep 7 12:14:02 2012 +0000

    sierra_net: Endianess bug fix.
    
    [ Upstream commit 2120c52da6fe741454a60644018ad2a6abd957ac ]
    
    I discovered I couldn't get sierra_net to work on a powerpc.  Turns out
    the firmware attribute check assumes the system is little endian and
    hence fails because the attributes is a 16 bit value.
    
    Signed-off-by: Len Sorensen <lsorense@csclub.uwaterloo.ca>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1876912a61291c434ab89996200297af5cdcd4ac
Author: Paolo Valente <paolo.valente@unimore.it>
Date:   Sat Sep 15 00:41:35 2012 +0000

    pkt_sched: fix virtual-start-time update in QFQ
    
    [ Upstream commit 71261956973ba9e0637848a5adb4a5819b4bae83 ]
    
    If the old timestamps of a class, say cl, are stale when the class
    becomes active, then QFQ may assign to cl a much higher start time
    than the maximum value allowed. This may happen when QFQ assigns to
    the start time of cl the finish time of a group whose classes are
    characterized by a higher value of the ratio
    max_class_pkt/weight_of_the_class with respect to that of
    cl. Inserting a class with a too high start time into the bucket list
    corrupts the data structure and may eventually lead to crashes.
    This patch limits the maximum start time assigned to a class.
    
    Signed-off-by: Paolo Valente <paolo.valente@unimore.it>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 50d09c3beecd0380910cfad192943d05d83edbf3
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Sep 11 13:11:12 2012 +0000

    net-sched: sch_cbq: avoid infinite loop
    
    [ Upstream commit bdfc87f7d1e253e0a61e2fc6a75ea9d76f7fc03a ]
    
    Its possible to setup a bad cbq configuration leading to
    an infinite loop in cbq_classify()
    
    DEV_OUT=eth0
    ICMP="match ip protocol 1 0xff"
    U32="protocol ip u32"
    DST="match ip dst"
    tc qdisc add dev $DEV_OUT root handle 1: cbq avpkt 1000 \
    	bandwidth 100mbit
    tc class add dev $DEV_OUT parent 1: classid 1:1 cbq \
    	rate 512kbit allot 1500 prio 5 bounded isolated
    tc filter add dev $DEV_OUT parent 1: prio 3 $U32 \
    	$ICMP $DST 192.168.3.234 flowid 1:
    
    Reported-by: Denys Fedoryschenko <denys@visp.net.lb>
    Tested-by: Denys Fedoryschenko <denys@visp.net.lb>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit da49262a5dcbd87b727051e66e729bf17acb9a62
Author: Nikolay Aleksandrov <nikolay@redhat.com>
Date:   Fri Sep 14 05:50:03 2012 +0000

    netxen: check for root bus in netxen_mask_aer_correctable
    
    [ Upstream commit e4d1aa40e363ed3e0486aeeeb0d173f7f822737e ]
    
    Add a check if pdev->bus->self == NULL (root bus). When attaching
    a netxen NIC to a VM it can be on the root bus and the guest would
    crash in netxen_mask_aer_correctable() because of a NULL pointer
    dereference if CONFIG_PCIEAER is present.
    
    Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ce59e96a8923241705a12fd8f5bbdbc77770ffc1
Author: Florian Fainelli <florian@openwrt.org>
Date:   Mon Sep 10 14:06:58 2012 +0200

    ixp4xx_hss: fix build failure due to missing linux/module.h inclusion
    
    [ Upstream commit 0b836ddde177bdd5790ade83772860940bd481ea ]
    
    Commit 36a1211970193ce215de50ed1e4e1272bc814df1 (netprio_cgroup.h:
    dont include module.h from other includes) made the following build
    error on ixp4xx_hss pop up:
    
      CC [M]  drivers/net/wan/ixp4xx_hss.o
     drivers/net/wan/ixp4xx_hss.c:1412:20: error: expected ';', ',' or ')'
     before string constant
     drivers/net/wan/ixp4xx_hss.c:1413:25: error: expected ';', ',' or ')'
     before string constant
     drivers/net/wan/ixp4xx_hss.c:1414:21: error: expected ';', ',' or ')'
     before string constant
     drivers/net/wan/ixp4xx_hss.c:1415:19: error: expected ';', ',' or ')'
     before string constant
     make[8]: *** [drivers/net/wan/ixp4xx_hss.o] Error 1
    
    This was previously hidden because ixp4xx_hss includes linux/hdlc.h which
    includes linux/netdevice.h which includes linux/netprio_cgroup.h which
    used to include linux/module.h. The real issue was actually present since
    the initial commit that added this driver since it uses macros from
    linux/module.h without including this file.
    
    Signed-off-by: Florian Fainelli <florian@openwrt.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit aabc054d7cd5778d021c5b50ee5f4d2406072562
Author: htbegin <hotforest@gmail.com>
Date:   Mon Oct 1 16:42:43 2012 +0000

    net: ethernet: davinci_cpdma: decrease the desc count when cleaning up the remaining packets
    
    [ Upstream commit ffb5ba90017505a19e238e986e6d33f09e4df765 ]
    
    chan->count is used by rx channel. If the desc count is not updated by
    the clean up loop in cpdma_chan_stop, the value written to the rxfree
    register in cpdma_chan_start will be incorrect.
    
    Signed-off-by: Tao Hou <hotforest@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ab98741ba1888af9aeb4a88423bda1e2d93932e5
Author: Mathias Krause <minipli@googlemail.com>
Date:   Thu Sep 20 10:01:49 2012 +0000

    xfrm_user: ensure user supplied esn replay window is valid
    
    [ Upstream commit ecd7918745234e423dd87fcc0c077da557909720 ]
    
    The current code fails to ensure that the netlink message actually
    contains as many bytes as the header indicates. If a user creates a new
    state or updates an existing one but does not supply the bytes for the
    whole ESN replay window, the kernel copies random heap bytes into the
    replay bitmap, the ones happen to follow the XFRMA_REPLAY_ESN_VAL
    netlink attribute. This leads to following issues:
    
    1. The replay window has random bits set confusing the replay handling
       code later on.
    
    2. A malicious user could use this flaw to leak up to ~3.5kB of heap
       memory when she has access to the XFRM netlink interface (requires
       CAP_NET_ADMIN).
    
    Known users of the ESN replay window are strongSwan and Steffen's
    iproute2 patch (<http://patchwork.ozlabs.org/patch/85962/>). The latter
    uses the interface with a bitmap supplied while the former does not.
    strongSwan is therefore prone to run into issue 1.
    
    To fix both issues without breaking existing userland allow using the
    XFRMA_REPLAY_ESN_VAL netlink attribute with either an empty bitmap or a
    fully specified one. For the former case we initialize the in-kernel
    bitmap with zero, for the latter we copy the user supplied bitmap. For
    state updates the full bitmap must be supplied.
    
    To prevent overflows in the bitmap length calculation the maximum size
    of bmp_len is limited to 128 by this patch -- resulting in a maximum
    replay window of 4096 packets. This should be sufficient for all real
    life scenarios (RFC 4303 recommends a default replay window size of 64).
    
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: Martin Willi <martin@revosec.ch>
    Cc: Ben Hutchings <bhutchings@solarflare.com>
    Signed-off-by: Mathias Krause <minipli@googlemail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f8266e08c43e18b588c0c88afc41f2fe649bd2da
Author: Mathias Krause <minipli@googlemail.com>
Date:   Wed Sep 19 11:33:43 2012 +0000

    xfrm_user: don't copy esn replay window twice for new states
    
    [ Upstream commit e3ac104d41a97b42316915020ba228c505447d21 ]
    
    The ESN replay window was already fully initialized in
    xfrm_alloc_replay_state_esn(). No need to copy it again.
    
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Mathias Krause <minipli@googlemail.com>
    Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 26d560eb8ee3e6dd505a5a8a43ff904c279f60ce
Author: Mathias Krause <minipli@googlemail.com>
Date:   Wed Sep 19 11:33:41 2012 +0000

    xfrm_user: fix info leak in copy_to_user_tmpl()
    
    [ Upstream commit 1f86840f897717f86d523a13e99a447e6a5d2fa5 ]
    
    The memory used for the template copy is a local stack variable. As
    struct xfrm_user_tmpl contains multiple holes added by the compiler for
    alignment, not initializing the memory will lead to leaking stack bytes
    to userland. Add an explicit memset(0) to avoid the info leak.
    
    Initial version of the patch by Brad Spengler.
    
    Cc: Brad Spengler <spender@grsecurity.net>
    Signed-off-by: Mathias Krause <minipli@googlemail.com>
    Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bc39fa8d3deb34d5d0cfd86aafb8033ac4a4ed90
Author: Mathias Krause <minipli@googlemail.com>
Date:   Wed Sep 19 11:33:40 2012 +0000

    xfrm_user: fix info leak in copy_to_user_policy()
    
    [ Upstream commit 7b789836f434c87168eab067cfbed1ec4783dffd ]
    
    The memory reserved to dump the xfrm policy includes multiple padding
    bytes added by the compiler for alignment (padding bytes in struct
    xfrm_selector and struct xfrm_userpolicy_info). Add an explicit
    memset(0) before filling the buffer to avoid the heap info leak.
    
    Signed-off-by: Mathias Krause <minipli@googlemail.com>
    Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e470a5bc5c80cad5d8877701784351c2d8cdb6bc
Author: Mathias Krause <minipli@googlemail.com>
Date:   Wed Sep 19 11:33:39 2012 +0000

    xfrm_user: fix info leak in copy_to_user_state()
    
    [ Upstream commit f778a636713a435d3a922c60b1622a91136560c1 ]
    
    The memory reserved to dump the xfrm state includes the padding bytes of
    struct xfrm_usersa_info added by the compiler for alignment (7 for
    amd64, 3 for i386). Add an explicit memset(0) before filling the buffer
    to avoid the info leak.
    
    Signed-off-by: Mathias Krause <minipli@googlemail.com>
    Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 744e0a9c51333d712e76850bf58b4aeb277016fe
Author: Mathias Krause <minipli@googlemail.com>
Date:   Wed Sep 19 11:33:38 2012 +0000

    xfrm_user: fix info leak in copy_to_user_auth()
    
    [ Upstream commit 4c87308bdea31a7b4828a51f6156e6f721a1fcc9 ]
    
    copy_to_user_auth() fails to initialize the remainder of alg_name and
    therefore discloses up to 54 bytes of heap memory via netlink to
    userland.
    
    Use strncpy() instead of strcpy() to fill the trailing bytes of alg_name
    with null bytes.
    
    Signed-off-by: Mathias Krause <minipli@googlemail.com>
    Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ae0673d65c32a60868f4d7ba342f527c334244a5
Author: Li RongQing <roy.qing.li@gmail.com>
Date:   Mon Sep 17 22:40:10 2012 +0000

    xfrm: fix a read lock imbalance in make_blackhole
    
    [ Upstream commit 433a19548061bb5457b6ab77ed7ea58ca6e43ddb ]
    
    if xfrm_policy_get_afinfo returns 0, it has already released the read
    lock, xfrm_policy_put_afinfo should not be called again.
    
    Signed-off-by: Li RongQing <roy.qing.li@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 61819032c7d98c35d2f475032f3c9e30948feaf4
Author: Mathias Krause <minipli@googlemail.com>
Date:   Fri Sep 14 09:58:32 2012 +0000

    xfrm_user: return error pointer instead of NULL #2
    
    [ Upstream commit c25463722509fef0ed630b271576a8c9a70236f3 ]
    
    When dump_one_policy() returns an error, e.g. because of a too small
    buffer to dump the whole xfrm policy, xfrm_policy_netlink() returns
    NULL instead of an error pointer. But its caller expects an error
    pointer and therefore continues to operate on a NULL skbuff.
    
    Signed-off-by: Mathias Krause <minipli@googlemail.com>
    Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 468bf9f70353872173b11b92dc15fe84d3dacbb4
Author: Mathias Krause <minipli@googlemail.com>
Date:   Thu Sep 13 11:41:26 2012 +0000

    xfrm_user: return error pointer instead of NULL
    
    [ Upstream commit 864745d291b5ba80ea0bd0edcbe67273de368836 ]
    
    When dump_one_state() returns an error, e.g. because of a too small
    buffer to dump the whole xfrm state, xfrm_state_netlink() returns NULL
    instead of an error pointer. But its callers expect an error pointer
    and therefore continue to operate on a NULL skbuff.
    
    This could lead to a privilege escalation (execution of user code in
    kernel context) if the attacker has CAP_NET_ADMIN and is able to map
    address 0.
    
    Signed-off-by: Mathias Krause <minipli@googlemail.com>
    Acked-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit bf08fec505c1ab6a12679c214d7ccd20c8841382
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Tue Sep 4 00:03:29 2012 +0000

    xfrm: Workaround incompatibility of ESN and async crypto
    
    [ Upstream commit 3b59df46a449ec9975146d71318c4777ad086744 ]
    
    ESN for esp is defined in RFC 4303. This RFC assumes that the
    sequence number counters are always up to date. However,
    this is not true if an async crypto algorithm is employed.
    
    If the sequence number counters are not up to date on sequence
    number check, we may incorrectly update the upper 32 bit of
    the sequence number. This leads to a DOS.
    
    We workaround this by comparing the upper sequence number,
    (used for authentication) with the upper sequence number
    computed after the async processing. We drop the packet
    if these numbers are different.
    
    To do this, we introduce a recheck function that does this
    check in the ESN case.
    
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit abf9fdb3f9e0b78df8145e0d742d0a19f251910b
Author: Michal Schmidt <mschmidt@redhat.com>
Date:   Thu Sep 13 12:59:44 2012 +0000

    bnx2x: fix rx checksum validation for IPv6
    
    [ Upstream commit e488921f44765e8ab6c48ca35e3f6b78df9819df ]
    
    Commit d6cb3e41 "bnx2x: fix checksum validation" caused a performance
    regression for IPv6. Rx checksum offload does not work. IPv6 packets
    are passed to the stack with CHECKSUM_NONE.
    
    The hardware obviously cannot perform IP checksum validation for IPv6,
    because there is no checksum in the IPv6 header. This should not prevent
    us from setting CHECKSUM_UNNECESSARY.
    
    Tested on BCM57711.
    
    Signed-off-by: Michal Schmidt <mschmidt@redhat.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Eilon Greenstein <eilong@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fc9964ef8f1b83db6c455ced22836b87eaa9b647
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Wed Jun 20 16:18:29 2012 -0600

    PCI: acpiphp: check whether _ADR evaluation succeeded
    
    commit dfb117b3e50c52c7b3416db4a4569224b8db80bb upstream.
    
    Check whether we evaluated _ADR successfully.  Previously we ignored
    failure, so we would have used garbage data from the stack as the device
    and function number.
    
    We return AE_OK so that we ignore only this slot and continue looking
    for other slots.
    
    Found by Coverity (CID 113981).
    
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 163aec38df496440970fbbe37f24cd4be9fea1d8
Author: Ratan Nalumasu <ratan@google.com>
Date:   Sat Sep 22 11:46:30 2012 -0700

    HID: hidraw: don't deallocate memory when it is in use
    
    commit 4fe9f8e203fdad1524c04beb390f3c6099781ed9 upstream.
    
    When a device is unplugged, wait for all processes that have opened the device
    to close before deallocating the device.
    
    Signed-off-by: Ratan Nalumasu <ratan@google.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3084fc2f2e8cf84b1d0a66323c26943d5ca98860
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Wed Aug 15 23:31:45 2012 +0400

    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: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3313aa9015c7c868a9bcdb7b1c143719d2873a66
Author: Matthieu CASTET <matthieu.castet@parrot.com>
Date:   Thu Jun 28 16:51:56 2012 +0200

    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: Matthieu CASTET <matthieu.castet@parrot.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9c48cc08ae1255d4b244529408f52d26673e1ccb
Author: Jiri Kosina <jkosina@suse.cz>
Date:   Mon Apr 30 10:39:17 2012 +0200

    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: Stephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fb1c3652bb3e6690e50520c2d9a1493f15d93722
Author: Jiri Kosina <jkosina@suse.cz>
Date:   Fri Apr 27 00:56:08 2012 +0200

    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: Oliver Neukum <oneukum@suse.de>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 943df77ba7b5f75e16bf47678146fb0c2af5ef70
Author: Avi Kivity <avi@redhat.com>
Date:   Wed Aug 22 13:03:48 2012 +0300

    x86/alternatives: Fix p6 nops on non-modular kernels
    
    commit cb09cad44f07044d9810f18f6f9a6a6f3771f979 upstream.
    
    Probably a leftover from the early days of self-patching, p6nops
    are marked __initconst_or_module, which causes them to be
    discarded in a non-modular kernel.  If something later triggers
    patching, it will overwrite kernel code with garbage.
    
    Reported-by: Tomas Racek <tracek@redhat.com>
    Signed-off-by: Avi Kivity <avi@redhat.com>
    Cc: Michael Tokarev <mjt@tls.msk.ru>
    Cc: Borislav Petkov <borislav.petkov@amd.com>
    Cc: Marcelo Tosatti <mtosatti@redhat.com>
    Cc: qemu-devel@nongnu.org
    Cc: Anthony Liguori <anthony@codemonkey.ws>
    Cc: H. Peter Anvin <hpa@linux.intel.com>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Cc: Alan Cox <alan@linux.intel.com>
    Link: http://lkml.kernel.org/r/5034AE84.90708@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2cd21e826291a27d0257a674eaf40df247fcb0cf
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Sep 17 17:26:24 2012 -0400

    Revert "drm/radeon: rework pll selection (v3)"
    
    commit 2f1f4d9b60396d2df4cff829bd5376ffc8ed9a2c upstream.
    
    This reverts commit 985f61f7ee647ad570c05eab0b74915da2ac8e19.
    
    This commit fixed certain cases, but ended up regressing others
    due to limitations in the current KMS API.  A proper fix is too
    invasive for 3.6.  Push it back to 3.7.
    
    Reported-by: Andres Freund <andres@anarazel.de>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    [bwh: Backported to 3.2: drop the DCE6 case]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 93034429eba1b31cc4c017c28c9677e199931dcf
Author: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Date:   Thu May 24 19:46:26 2012 +0530

    CPU hotplug, cpusets, suspend: Don't modify cpusets during suspend/resume
    
    commit d35be8bab9b0ce44bed4b9453f86ebf64062721e upstream.
    
    In the event of CPU hotplug, the kernel modifies the cpusets' cpus_allowed
    masks as and when necessary to ensure that the tasks belonging to the cpusets
    have some place (online CPUs) to run on. And regular CPU hotplug is
    destructive in the sense that the kernel doesn't remember the original cpuset
    configurations set by the user, across hotplug operations.
    
    However, suspend/resume (which uses CPU hotplug) is a special case in which
    the kernel has the responsibility to restore the system (during resume), to
    exactly the same state it was in before suspend.
    
    In order to achieve that, do the following:
    
    1. Don't modify cpusets during suspend/resume. At all.
       In particular, don't move the tasks from one cpuset to another, and
       don't modify any cpuset's cpus_allowed mask. So, simply ignore cpusets
       during the CPU hotplug operations that are carried out in the
       suspend/resume path.
    
    2. However, cpusets and sched domains are related. We just want to avoid
       altering cpusets alone. So, to keep the sched domains updated, build
       a single sched domain (containing all active cpus) during each of the
       CPU hotplug operations carried out in s/r path, effectively ignoring
       the cpusets' cpus_allowed masks.
    
       (Since userspace is frozen while doing all this, it will go unnoticed.)
    
    3. During the last CPU online operation during resume, build the sched
       domains by looking up the (unaltered) cpusets' cpus_allowed masks.
       That will bring back the system to the same original state as it was in
       before suspend.
    
    Ultimately, this will not only solve the cpuset problem related to suspend
    resume (ie., restores the cpusets to exactly what it was before suspend, by
    not touching it at all) but also speeds up suspend/resume because we avoid
    running cpuset update code for every CPU being offlined/onlined.
    
    Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20120524141611.3692.20155.stgit@srivatsabhat.in.ibm.com
    [Preeti U Murthy: Please apply this patch to the stable tree 3.0.y]
    Signed-off-by: Preeti U Murthy <preeti@linux.vnet.ibm.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 7961453cfff7d645f394cc09fb82c1561be1b4c1
Author: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
Date:   Sun Aug 19 21:54:58 2012 +0200

    usb: gadget: dummy_hcd: fixup error probe path
    
    commit 1b68a4ca2d038addb7314211d122fb6d7002b38b upstream.
    
    If USB2 host controller probes fine but USB3 does not then we don't
    remove the USB controller properly and lock up the system while the HUB
    code will try to enumerate the USB2 controller and access memory which
    is no longer available in case the dummy_hcd was compiled as a module.
    
    This is a problem since 448b6eb1 ("USB: Make sure to fetch the BOS desc
    for roothubs.) if used in USB3 mode because dummy does not provide this
    descriptor and explodes later.
    
    Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
    Signed-off-by: Felipe Balbi <balbi@ti.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5e47beb778ad1c5fa901a61700f3ac1b4ee8a579
Author: Miklos Szeredi <miklos@szeredi.hu>
Date:   Mon Sep 17 22:23:30 2012 +0200

    vfs: dcache: fix deadlock in tree traversal
    
    commit 8110e16d42d587997bcaee0c864179e6d93603fe upstream.
    
    IBM reported a deadlock in select_parent().  This was found to be caused
    by taking rename_lock when already locked when restarting the tree
    traversal.
    
    There are two cases when the traversal needs to be restarted:
    
     1) concurrent d_move(); this can only happen when not already locked,
        since taking rename_lock protects against concurrent d_move().
    
     2) racing with final d_put() on child just at the moment of ascending
        to parent; rename_lock doesn't protect against this rare race, so it
        can happen when already locked.
    
    Because of case 2, we need to be able to handle restarting the traversal
    when rename_lock is already held.  This patch fixes all three callers of
    try_to_ascend().
    
    IBM reported that the deadlock is gone with this patch.
    
    [ I rewrote the patch to be smaller and just do the "goto again" if the
      lock was already held, but credit goes to Miklos for the real work.
       - Linus ]
    
    Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
    Cc: Al Viro <viro@ZenIV.linux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b4723adc0c336e153b6396f8c0e3f396cd9e9b5d
Author: Seth Forshee <seth.forshee@canonical.com>
Date:   Wed Aug 8 08:27:03 2012 -0500

    irq_remap: disable IRQ remapping if any IOAPIC lacks an IOMMU
    
    commit 32ab31e01e2def6f48294d872d9bb42573aae00f upstream.
    
    The ACPI tables in the Macbook Air 5,1 define a single IOAPIC with id 2,
    but the only remapping unit described in the DMAR table matches id 0.
    Interrupt remapping fails as a result, and the kernel panics with the
    message "timer doesn't work through Interrupt-remapped IO-APIC."
    
    To fix this, check each IOAPIC for a corresponding IOMMU. If an IOMMU is
    not found, do not allow IRQ remapping to be enabled.
    
    v2: Move check to parse_ioapics_under_ir(), raise log level to KERN_ERR,
        and add FW_BUG to the log message
    v3: Skip check if IOMMU doesn't support interrupt remapping and remove
        existing check that the IOMMU count equals the IOAPIC count
    
    Acked-by: Suresh Siddha <suresh.b.siddha@intel.com>
    Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
    Acked-by: Yinghai Lu <yinghai@kernel.org>
    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3f00d57fffdf2708689bd75780cb0eeee26eedea
Author: Darren Hart <dvhart@linux.intel.com>
Date:   Tue Jun 19 14:00:18 2012 -0700

    pch_uart: Add eg20t_port lock field, avoid recursive spinlocks
    
    commit 2588aba002d14e938c2f56d299ecf3e7ce1302a5 upstream.
    
    pch_uart_interrupt() takes priv->port.lock which leads to two recursive
    spinlock calls if low_latency==1 or CONFIG_PREEMPT_RT_FULL=y (one
    otherwise):
    
    pch_uart_interrupt
      spin_lock_irqsave(priv->port.lock, flags)
      case PCH_UART_IID_RDR_TO (data ready)
      handle_rx_to
        push_rx
          tty_port_tty_get
            spin_lock_irqsave(&port->lock, flags) <--- already hold this lock
            ...
          tty_flip_buffer_push
            ...
            flush_to_ldisc
              spin_lock_irqsave(&tty->buf.lock)
                spin_lock_irqsave(&tty->buf.lock)
                disc->ops->receive_buf(tty, char_buf)
                  n_tty_receive_buf
                    tty->ops->flush_chars()
                    uart_flush_chars
                      uart_start
                        spin_lock_irqsave(&port->lock) <--- already hold this lock
    
    Avoid this by using a dedicated lock to protect the eg20t_port structure
    and IO access to its membase. This is more consistent with the 8250
    driver.  Ensure priv->lock is always take prior to priv->port.lock when
    taken at the same time.
    
    V2: Remove inadvertent whitespace change.
    V3: Account for oops_in_progress for the private lock in
        pch_console_write().
    
    Note: Like the 8250 driver, if a printk is introduced anywhere inside
          the pch_console_write() critical section, the kernel will hang
          on a recursive spinlock on the private lock. The oops case is
          handled by using a trylock in the oops_in_progress case.
    
    Signed-off-by: Darren Hart <dvhart@linux.intel.com>
    CC: Tomoya MORINAGA <tomoya.rohm@gmail.com>
    CC: Feng Tang <feng.tang@intel.com>
    CC: Alexander Stein <alexander.stein@systec-electronic.com>
    Acked-by: Alan Cox <alan@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    [bwh: Backported to 3.2:
     - Adjust context
     - Drop changes to pch_console_write()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ff03261adc8b4bdd8291f1783c079b53a892b429
Author: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
Date:   Thu Aug 23 21:32:44 2012 -0300

    Bluetooth: Fix sending a HCI Authorization Request over LE links
    
    commit d8343f125710fb596f7a88cd756679f14f4e77b9 upstream.
    
    In the case that the link is already in the connected state and a
    Pairing request arrives from the mgmt interface, hci_conn_security()
    would be called but it was not considering LE links.
    
    Reported-by: João Paulo Rechi Vita <jprvita@openbossa.org>
    Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
    Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6e792a90dee712edbbdf20f102c76bb9b8e36598
Author: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
Date:   Thu Aug 23 21:32:43 2012 -0300

    Bluetooth: Change signature of smp_conn_security()
    
    commit cc110922da7e902b62d18641a370fec01a9fa794 upstream.
    
    To make it clear that it may be called from contexts that may not have
    any knowledge of L2CAP, we change the connection parameter, to receive
    a hci_conn.
    
    This also makes it clear that it is checking the security of the link.
    
    Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
    Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 26fb1ba1baf9fe555ff2918e027cef78ee3f54d0
Author: Al Cooper <acooper@gmail.com>
Date:   Fri Mar 16 15:54:17 2012 -0400

    mmc: Prevent 1.8V switch for SD hosts that don't support UHS modes.
    
    commit 4188bba0e9e7ba58d231b528df495666f2742b74 upstream.
    
    The driver should not try to switch to 1.8V when the SD 3.0 host
    controller does not have any UHS capabilities bits set (SDR50, DDR50
    or SDR104). See page 72 of "SD Specifications Part A2 SD Host
    Controller Simplified Specification Version 3.00" under
    "1.8V Signaling Enable". Instead of setting SDR12 and SDR25 in the host
    capabilities data structure for all V3.0 host controllers, only set them
    if SDR104, SDR50 or DDR50 is set in the host capabilities register. This
    will prevent the switch to 1.8V later.
    
    Signed-off-by: Al Cooper <acooper@gmail.com>
    Acked-by: Arindam Nath <arindam.nath@amd.com>
    Acked-by: Philip Rakity <prakity@marvell.com>
    Acked-by: Girish K S <girish.shivananjappa@linaro.org>
    Signed-off-by: Chris Ball <cjb@laptop.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 96947d2b77943563c5b40916be376a89ee632aa9
Author: Daniel J Blueman <daniel@quora.org>
Date:   Mon Jul 23 12:22:37 2012 +0800

    Prevent interface errors with Seagate FreeAgent GoFlex
    
    commit c531077f40abc9f2129c4c83a30b3f8d6ce1c0e7 upstream.
    
    When using my Seagate FreeAgent GoFlex eSATAp external disk enclosure,
    interface errors are always seen until 1.5Gbps is negotiated [1]. This
    occurs using any disk in the enclosure, and when the disk is connected
    directly with a generic passive eSATAp cable, we see stable 3Gbps
    operation as expected.
    
    Blacklist 3Gbps mode to avoid dataloss and the ~30s delay bus reset
    and renegotiation incurs.
    
    Signed-off-by: Daniel J Blueman <daniel@quora.org>
    Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2a181c85136b1d5481dd5334037ad160450fa09d
Author: Weiping Pan <wpan@redhat.com>
Date:   Mon Jul 23 10:37:48 2012 +0800

    rds: set correct msg_namelen
    
    commit 06b6a1cf6e776426766298d055bb3991957d90a7 upstream.
    
    Jay Fenlason (fenlason@redhat.com) found a bug,
    that recvfrom() on an RDS socket can return the contents of random kernel
    memory to userspace if it was called with a address length larger than
    sizeof(struct sockaddr_in).
    rds_recvmsg() also fails to set the addr_len paramater properly before
    returning, but that's just a bug.
    There are also a number of cases wher recvfrom() can return an entirely bogus
    address. Anything in rds_recvmsg() that returns a non-negative value but does
    not go through the "sin = (struct sockaddr_in *)msg->msg_name;" code path
    at the end of the while(1) loop will return up to 128 bytes of kernel memory
    to userspace.
    
    And I write two test programs to reproduce this bug, you will see that in
    rds_server, fromAddr will be overwritten and the following sock_fd will be
    destroyed.
    Yes, it is the programmer's fault to set msg_namelen incorrectly, but it is
    better to make the kernel copy the real length of address to user space in
    such case.
    
    How to run the test programs ?
    I test them on 32bit x86 system, 3.5.0-rc7.
    
    1 compile
    gcc -o rds_client rds_client.c
    gcc -o rds_server rds_server.c
    
    2 run ./rds_server on one console
    
    3 run ./rds_client on another console
    
    4 you will see something like:
    server is waiting to receive data...
    old socket fd=3
    server received data from client:data from client
    msg.msg_namelen=32
    new socket fd=-1067277685
    sendmsg()
    : Bad file descriptor
    
    /***************** rds_client.c ********************/
    
    int main(void)
    {
    	int sock_fd;
    	struct sockaddr_in serverAddr;
    	struct sockaddr_in toAddr;
    	char recvBuffer[128] = "data from client";
    	struct msghdr msg;
    	struct iovec iov;
    
    	sock_fd = socket(AF_RDS, SOCK_SEQPACKET, 0);
    	if (sock_fd < 0) {
    		perror("create socket error\n");
    		exit(1);
    	}
    
    	memset(&serverAddr, 0, sizeof(serverAddr));
    	serverAddr.sin_family = AF_INET;
    	serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    	serverAddr.sin_port = htons(4001);
    
    	if (bind(sock_fd, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) {
    		perror("bind() error\n");
    		close(sock_fd);
    		exit(1);
    	}
    
    	memset(&toAddr, 0, sizeof(toAddr));
    	toAddr.sin_family = AF_INET;
    	toAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    	toAddr.sin_port = htons(4000);
    	msg.msg_name = &toAddr;
    	msg.msg_namelen = sizeof(toAddr);
    	msg.msg_iov = &iov;
    	msg.msg_iovlen = 1;
    	msg.msg_iov->iov_base = recvBuffer;
    	msg.msg_iov->iov_len = strlen(recvBuffer) + 1;
    	msg.msg_control = 0;
    	msg.msg_controllen = 0;
    	msg.msg_flags = 0;
    
    	if (sendmsg(sock_fd, &msg, 0) == -1) {
    		perror("sendto() error\n");
    		close(sock_fd);
    		exit(1);
    	}
    
    	printf("client send data:%s\n", recvBuffer);
    
    	memset(recvBuffer, '\0', 128);
    
    	msg.msg_name = &toAddr;
    	msg.msg_namelen = sizeof(toAddr);
    	msg.msg_iov = &iov;
    	msg.msg_iovlen = 1;
    	msg.msg_iov->iov_base = recvBuffer;
    	msg.msg_iov->iov_len = 128;
    	msg.msg_control = 0;
    	msg.msg_controllen = 0;
    	msg.msg_flags = 0;
    	if (recvmsg(sock_fd, &msg, 0) == -1) {
    		perror("recvmsg() error\n");
    		close(sock_fd);
    		exit(1);
    	}
    
    	printf("receive data from server:%s\n", recvBuffer);
    
    	close(sock_fd);
    
    	return 0;
    }
    
    /***************** rds_server.c ********************/
    
    int main(void)
    {
    	struct sockaddr_in fromAddr;
    	int sock_fd;
    	struct sockaddr_in serverAddr;
    	unsigned int addrLen;
    	char recvBuffer[128];
    	struct msghdr msg;
    	struct iovec iov;
    
    	sock_fd = socket(AF_RDS, SOCK_SEQPACKET, 0);
    	if(sock_fd < 0) {
    		perror("create socket error\n");
    		exit(0);
    	}
    
    	memset(&serverAddr, 0, sizeof(serverAddr));
    	serverAddr.sin_family = AF_INET;
    	serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
    	serverAddr.sin_port = htons(4000);
    	if (bind(sock_fd, (struct sockaddr*)&serverAddr, sizeof(serverAddr)) < 0) {
    		perror("bind error\n");
    		close(sock_fd);
    		exit(1);
    	}
    
    	printf("server is waiting to receive data...\n");
    	msg.msg_name = &fromAddr;
    
    	/*
    	 * I add 16 to sizeof(fromAddr), ie 32,
    	 * and pay attention to the definition of fromAddr,
    	 * recvmsg() will overwrite sock_fd,
    	 * since kernel will copy 32 bytes to userspace.
    	 *
    	 * If you just use sizeof(fromAddr), it works fine.
    	 * */
    	msg.msg_namelen = sizeof(fromAddr) + 16;
    	/* msg.msg_namelen = sizeof(fromAddr); */
    	msg.msg_iov = &iov;
    	msg.msg_iovlen = 1;
    	msg.msg_iov->iov_base = recvBuffer;
    	msg.msg_iov->iov_len = 128;
    	msg.msg_control = 0;
    	msg.msg_controllen = 0;
    	msg.msg_flags = 0;
    
    	while (1) {
    		printf("old socket fd=%d\n", sock_fd);
    		if (recvmsg(sock_fd, &msg, 0) == -1) {
    			perror("recvmsg() error\n");
    			close(sock_fd);
    			exit(1);
    		}
    		printf("server received data from client:%s\n", recvBuffer);
    		printf("msg.msg_namelen=%d\n", msg.msg_namelen);
    		printf("new socket fd=%d\n", sock_fd);
    		strcat(recvBuffer, "--data from server");
    		if (sendmsg(sock_fd, &msg, 0) == -1) {
    			perror("sendmsg()\n");
    			close(sock_fd);
    			exit(1);
    		}
    	}
    
    	close(sock_fd);
    	return 0;
    }
    
    Signed-off-by: Weiping Pan <wpan@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5b5f4aa58f4ad68a9d4950e93fb7ffb2eb8c92db
Author: Li Zhong <zhong@linux.vnet.ibm.com>
Date:   Tue Jul 24 15:02:49 2012 -0700

    Fix a dead loop in async_synchronize_full()
    
    [Fixed upstream by commits 2955b47d2c1983998a8c5915cb96884e67f7cb53 and
    a4683487f90bfe3049686fc5c566bdc1ad03ace6 from Dan Williams, but they are much
    more intrusive than this tiny fix, according to Andrew - gregkh]
    
    This patch tries to fix a dead loop in  async_synchronize_full(), which
    could be seen when preemption is disabled on a single cpu machine.
    
    void async_synchronize_full(void)
    {
            do {
                    async_synchronize_cookie(next_cookie);
            } while (!list_empty(&async_running) || !
    list_empty(&async_pending));
    }
    
    async_synchronize_cookie() calls async_synchronize_cookie_domain() with
    &async_running as the default domain to synchronize.
    
    However, there might be some works in the async_pending list from other
    domains. On a single cpu system, without preemption, there is no chance
    for the other works to finish, so async_synchronize_full() enters a dead
    loop.
    
    It seems async_synchronize_full() wants to synchronize all entries in
    all running lists(domains), so maybe we could just check the entry_count
    to know whether all works are finished.
    
    Currently, async_synchronize_cookie_domain() expects a non-NULL running
    list ( if NULL, there would be NULL pointer dereference ), so maybe a
    NULL pointer could be used as an indication for the functions to
    synchronize all works in all domains.
    
    Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Li Zhong <zhong@linux.vnet.ibm.com>
    Tested-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Tested-by: Christian Kujau <lists@nerdbynature.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Dan Williams <dan.j.williams@gmail.com>
    Cc: Christian Kujau <lists@nerdbynature.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 954f835261b3a2d029b17eaf1e52155ce4d93be4
Author: Rustad, Mark D <mark.d.rustad@intel.com>
Date:   Wed Jul 18 09:06:07 2012 +0000

    net: Statically initialize init_net.dev_base_head
    
    commit 734b65417b24d6eea3e3d7457e1f11493890ee1d upstream.
    
    This change eliminates an initialization-order hazard most
    recently seen when netprio_cgroup is built into the kernel.
    
    With thanks to Eric Dumazet for catching a bug.
    
    Signed-off-by: Mark Rustad <mark.d.rustad@intel.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f4df2d0a5fcfa5e9bb7d9de7dc634e43cf120285
Author: Henrik Rydberg <rydberg@euromail.se>
Date:   Sat Aug 25 19:28:06 2012 +0200

    Bluetooth: Add support for Apple vendor-specific devices
    
    commit 1fa6535faf055cd71311ab887e94fc234f04ee18 upstream.
    
    As pointed out by Gustavo and Marcel, all Apple-specific Broadcom
    devices seen so far have the same interface class, subclass and
    protocol numbers. This patch adds an entry which matches all of them,
    using the new USB_VENDOR_AND_INTERFACE_INFO() macro.
    
    In particular, this patch adds support for the MacBook Pro Retina
    (05ac:8286), which is not in the present list.
    
    Signed-off-by: Henrik Rydberg <rydberg@euromail.se>
    Tested-by: Shea Levy <shea@shealevy.com>
    Acked-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit c05a5031474a29050b16080484eedc278d583436
Author: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Date:   Mon Aug 6 15:36:49 2012 -0300

    Bluetooth: Use USB_VENDOR_AND_INTERFACE() for Broadcom devices
    
    commit 92c385f46b30f4954e9dd2d2005c12d233b479ea upstream.
    
    Many Broadcom devices has a vendor specific devices class, with this rule
    we match all existent and future controllers with this behavior.
    
    We also remove old rules to that matches product id for Broadcom devices.
    
    Tested-by: John Hommel <john.hommel@hp.com>
    Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2b3cbfc61988e35bb560b965d8c81f9c146d7e01
Author: Manoj Iyer <manoj.iyer@canonical.com>
Date:   Tue Jul 10 14:07:38 2012 -0500

    Bluetooth: btusb: Add vendor specific ID (0a5c:21f4) BCM20702A0
    
    commit 61c964ba1748e984cb232b431582815899bf10fe upstream.
    
    Patch adds support for BCM20702A0 device id (0a5c:21f4).
    
    usb-devices after patch was applied:
    T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
    D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=0a5c ProdID=21f4 Rev=01.12
    S: Manufacturer=Broadcom Corp
    S: Product=BCM20702A0
    S: SerialNumber=E4D53DF154D6
    C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
    I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
    I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=btusb
    I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
    
    usb-devices before patch was applied:
    T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0
    D: Ver= 2.00 Cls=ff(vend.) Sub=01 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=0a5c ProdID=21f4 Rev=01.12
    S: Manufacturer=Broadcom Corp
    S: Product=BCM20702A0
    S: SerialNumber=E4D53DF154D6
    C: #Ifs= 4 Cfg#= 1 Atr=e0 MxPwr=0mA
    I: If#= 0 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
    I: If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=01 Driver=(none)
    I: If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I: If#= 3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
    
    Signed-off-by: Manoj Iyer <manoj.iyer@canonical.com>
    Tested-by: Chris Gagnon <chris.gagnon@canonical.com>
    Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 004ee9388ddf828779642fcd92588108a1c7fa75
Author: Corentin Chary <corentin.chary@gmail.com>
Date:   Mon Aug 20 23:01:51 2012 +0200

    asus-laptop: HRWS/HWRS typo
    
    commit 8871e99f89b7d7b1ea99de550eea2a56273f42ab upstream.
    
    Resolves-bug: https://bugzilla.kernel.org/show_bug.cgi?id=24222
    Signed-off-by: Corentin Chary <corentin.chary@gmail.com>
    Signed-off-by: Matthew Garrett <mjg@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0ecf1c24aec118ccbc0c67f2fd61a1313b56f322
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Wed Sep 26 13:09:53 2012 -0400

    USB: Fix race condition when removing host controllers
    
    commit 0d00dc2611abbe6ad244d50569c2ee82ce42846c upstream.
    
    This patch (as1607) fixes a race that can occur if a USB host
    controller is removed while a process is reading the
    /sys/kernel/debug/usb/devices file.
    
    The usb_device_read() routine uses the bus->root_hub pointer to
    determine whether or not the root hub is registered.  The is not a
    valid test, because the pointer is set before the root hub gets
    registered and remains set even after the root hub is unregistered and
    deallocated.  As a result, usb_device_read() or usb_device_dump() can
    access freed memory, causing an oops.
    
    The patch changes the test to use the hcd->rh_registered flag, which
    does get set and cleared at the appropriate times.  It also makes sure
    to hold the usb_bus_list_lock mutex while setting the flag, so that
    usb_device_read() will become aware of new root hubs as soon as they
    are registered.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Don Zickus <dzickus@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4e19de3be14c9390e63271effb5b95ab50f298f4
Author: NeilBrown <neilb@suse.de>
Date:   Thu Sep 27 12:35:21 2012 +1000

    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: Jakub Husák <jakub@gooseman.cz>
    Signed-off-by: NeilBrown <neilb@suse.de>
    [bwh: Backported to 3.2: s/geo->/conf->/]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e3dd7a09f14902688ae99eb8f3a49e3651147283
Author: Milan Broz <mbroz@redhat.com>
Date:   Wed Sep 26 23:45:43 2012 +0100

    dm table: clear add_random unless all devices have it set
    
    commit c3c4555edd10dbc0b388a0125b9c50de5e79af05 upstream.
    
    Always clear QUEUE_FLAG_ADD_RANDOM if any underlying device does not
    have it set. Otherwise devices with predictable characteristics may
    contribute entropy.
    
    QUEUE_FLAG_ADD_RANDOM specifies whether or not queue IO timings
    contribute to the random pool.
    
    For bio-based targets this flag is always 0 because such devices have no
    real queue.
    
    For request-based devices this flag was always set to 1 by default.
    
    Now set it according to the flags on underlying devices. If there is at
    least one device which should not contribute, set the flag to zero: If a
    device, such as fast SSD storage, is not suitable for supplying entropy,
    a request-based queue stacked over it will not be either.
    
    Because the checking logic is exactly same as for the rotational flag,
    share the iteration function with device_is_nonrot().
    
    Signed-off-by: Milan Broz <mbroz@redhat.com>
    Signed-off-by: Alasdair G Kergon <agk@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1bd6669684e5b889713164a76d42250afefdd1aa
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Wed Sep 26 23:45:42 2012 +0100

    dm: handle requests beyond end of device instead of using BUG_ON
    
    commit ba1cbad93dd47223b1f3b8edd50dd9ef2abcb2ed upstream.
    
    The access beyond the end of device BUG_ON that was introduced to
    dm_request_fn via commit 29e4013de7ad950280e4b2208 ("dm: implement
    REQ_FLUSH/FUA support for request-based dm") was an overly
    drastic (but simple) response to this situation.
    
    I have received a report that this BUG_ON was hit and now think
    it would be better to use dm_kill_unmapped_request() to fail the clone
    and original request with -EIO.
    
    map_request() will assign the valid target returned by
    dm_table_find_target to tio->ti.  But when the target
    isn't valid tio->ti is never assigned (because map_request isn't
    called); so add a check for tio->ti != NULL to dm_done().
    
    Reported-by: Mike Christie <michaelc@cs.wisc.edu>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com>
    Signed-off-by: Alasdair G Kergon <agk@redhat.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b39bfb4cc09a0663d13b537e69e8241e6cc8ce71
Author: Mauro Carvalho Chehab <mchehab@redhat.com>
Date:   Thu Sep 20 12:09:30 2012 -0300

    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: Mauro Carvalho Chehab <mchehab@redhat.com>
    [bwh: Backported to 3.2:
     - Adjust context
     - Debug log function is debugf0(), not edac_dbg()]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 247a9ca13ccd0e1cfd81b481e91d365950eaeaaf
Author: Roland Stigge <stigge@antcom.de>
Date:   Thu Sep 20 10:48:03 2012 +0200

    gpio-lpc32xx: Fix value handling of gpio_direction_output()
    
    commit b1268d3737c6316016026245eef276eda6b0a621 upstream.
    
    For GPIOs of gpio-lpc32xx, gpio_direction_output() ignores the value argument
    (initial value of output). This patch fixes this by setting the level
    accordingly.
    
    Signed-off-by: Roland Stigge <stigge@antcom.de>
    Acked-by: Alexandre Pereira da Silva <aletes.xgr@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9109ae151b6dd96238b595240ac72e537a84d59d
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Fri Aug 17 10:22:37 2012 -0400

    xen/boot: Disable NUMA for PV guests.
    
    commit 8d54db795dfb1049d45dc34f0dddbc5347ec5642 upstream.
    
    The hypervisor is in charge of allocating the proper "NUMA" memory
    and dealing with the CPU scheduler to keep them bound to the proper
    NUMA node. The PV guests (and PVHVM) have no inkling of where they
    run and do not need to know that right now. In the future we will
    need to inject NUMA configuration data (if a guest spans two or more
    NUMA nodes) so that the kernel can make the right choices. But those
    patches are not yet present.
    
    In the meantime, disable the NUMA capability in the PV guest, which
    also fixes a bootup issue. Andre says:
    
    "we see Dom0 crashes due to the kernel detecting the NUMA topology not
    by ACPI, but directly from the northbridge (CONFIG_AMD_NUMA).
    
    This will detect the actual NUMA config of the physical machine, but
    will crash about the mismatch with Dom0's virtual memory. Variation of
    the theme: Dom0 sees what it's not supposed to see.
    
    This happens with the said config option enabled and on a machine where
    this scanning is still enabled (K8 and Fam10h, not Bulldozer class)
    
    We have this dump then:
    NUMA: Warning: node ids are out of bound, from=-1 to=-1 distance=10
    Scanning NUMA topology in Northbridge 24
    Number of physical nodes 4
    Node 0 MemBase 0000000000000000 Limit 0000000040000000
    Node 1 MemBase 0000000040000000 Limit 0000000138000000
    Node 2 MemBase 0000000138000000 Limit 00000001f8000000
    Node 3 MemBase 00000001f8000000 Limit 0000000238000000
    Initmem setup node 0 0000000000000000-0000000040000000
      NODE_DATA [000000003ffd9000 - 000000003fffffff]
    Initmem setup node 1 0000000040000000-0000000138000000
      NODE_DATA [0000000137fd9000 - 0000000137ffffff]
    Initmem setup node 2 0000000138000000-00000001f8000000
      NODE_DATA [00000001f095e000 - 00000001f0984fff]
    Initmem setup node 3 00000001f8000000-0000000238000000
    Cannot find 159744 bytes in node 3
    BUG: unable to handle kernel NULL pointer dereference at (null)
    IP: [<ffffffff81d220e6>] __alloc_bootmem_node+0x43/0x96
    Pid: 0, comm: swapper Not tainted 3.3.6 #1 AMD Dinar/Dinar
    RIP: e030:[<ffffffff81d220e6>]  [<ffffffff81d220e6>] __alloc_bootmem_node+0x43/0x96
    .. snip..
      [<ffffffff81d23024>] sparse_early_usemaps_alloc_node+0x64/0x178
      [<ffffffff81d23348>] sparse_init+0xe4/0x25a
      [<ffffffff81d16840>] paging_init+0x13/0x22
      [<ffffffff81d07fbb>] setup_arch+0x9c6/0xa9b
      [<ffffffff81683954>] ? printk+0x3c/0x3e
      [<ffffffff81d01a38>] start_kernel+0xe5/0x468
      [<ffffffff81d012cf>] x86_64_start_reservations+0xba/0xc1
      [<ffffffff81007153>] ? xen_setup_runstate_info+0x2c/0x36
      [<ffffffff81d050ee>] xen_start_kernel+0x565/0x56c
    "
    
    so we just disable NUMA scanning by setting numa_off=1.
    
    Reported-and-Tested-by: Andre Przywara <andre.przywara@amd.com>
    Acked-by: Andre Przywara <andre.przywara@amd.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 9a98a72f52a0986d83aedd404f924bc48b4b0a16
Author: Andreas Herrmann <andreas.herrmann3@amd.com>
Date:   Sun Sep 23 20:27:32 2012 +0200

    hwmon: (fam15h_power) Tweak runavg_range on resume
    
    commit 5f0ecb907deb1e6f28071ee3bd568903b9da1be4 upstream.
    
    The quirk introduced with commit
    00250ec90963b7ef6678438888f3244985ecde14 (hwmon: fam15h_power: fix
    bogus values with current BIOSes) is not only required during driver
    load but also when system resumes from suspend. The BIOS might set the
    previously recommended (but unsuitable) initilization value for the
    running average range register during resume.
    
    Signed-off-by: Andreas Herrmann <andreas.herrmann3@amd.com>
    Tested-by: Andreas Hartmann <andihartmann@01019freenet.de>
    Signed-off-by: Jean Delvare <khali@linux-fr.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e189acb13e2dea021825975493d8e5222557df65
Author: Nestor Lopez Casado <nlopezcasad@logitech.com>
Date:   Fri Sep 21 12:21:34 2012 +0200

    HID: Fix logitech-dj: missing Unifying device issue
    
    commit 596264082f10dd4a567c43d4526b2f54ac5520bc upstream.
    
    This patch fixes an issue introduced after commit 4ea5454203d991ec
    ("HID: Fix race condition between driver core and ll-driver").
    
    After that commit, hid-core discards any incoming packet that arrives while
    hid driver's probe function is being executed.
    
    This broke the enumeration process of hid-logitech-dj, that must receive
    control packets in-band with the mouse and keyboard packets. Discarding mouse
    or keyboard data at the very begining is usually fine, but it is not the case
    for control packets.
    
    This patch forces a re-enumeration of the paired devices when a packet arrives
    that comes from an unknown device.
    
    Based on a patch originally written by Benjamin Tissoires.
    
    Signed-off-by: Nestor Lopez Casado <nlopezcasad@logitech.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b457f46761db9cd50edf136f8c9541b8eb31f5f6
Author: Alan Cox <alan@linux.intel.com>
Date:   Tue Sep 4 15:10:08 2012 +0100

    dj: memory scribble in logi_dj
    
    commit 8a55ade76551e3927b4e41ee9e7751875d18bc25 upstream.
    
    Allocate a structure not a pointer to it !
    
    Signed-off-by: Alan Cox <alan@linux.intel.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 01d35d12e9a77448d7e6e5ab653ae8ff93fecd26
Author: Marc Dionne <marc.c.dionne@gmail.com>
Date:   Fri Jun 1 18:12:14 2012 -0400

    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: Marc Dionne <marc.c.dionne@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b66c949a4240072010d1fb6a1dac82360ea1b876
Author: Nestor Lopez Casado <nlopezcasad@logitech.com>
Date:   Thu Feb 2 10:54:14 2012 +0100

    HID: logitech: fix mask to enable DJ mode
    
    commit 765031668fb2b064aebd9a568e5ad794cbe3413a upstream.
    
    The user can only experience the bug if she pairs 6 devices to a Unifying
    receiver. The sixth paired device would not work.
    
    The value changed is actually a bitmask that enables reporting from each
    paired device. As the sixth bit was not set, the sixth device reports are
    ignored by the receiver and never get to the driver.
    
    Signed-off-by: Nestor Lopez Casado <nlopezcasad@logitech.com>
    
     drivers/hid/hid-logitech-dj.c |    2 +-
     1 files changed, 1 insertions(+), 1 deletions(-)
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3d66356bdfb019c5f045d7a958e829162f8d2cc4
Author: Marc Kleine-Budde <mkl@pengutronix.de>
Date:   Wed Sep 19 14:58:45 2012 +0200

    can: ti_hecc: fix oops during rmmod
    
    commit ab04c8bd423edb03e2148350a091836c196107fc upstream.
    
    This patch fixes an oops which occurs when unloading the driver, while the
    network interface is still up. The problem is that first the io mapping is
    teared own, then the CAN device is unregistered, resulting in accessing the
    hardware's iomem:
    
    [  172.744232] Unable to handle kernel paging request at virtual address c88b0040
    [  172.752441] pgd = c7be4000
    [  172.755645] [c88b0040] *pgd=87821811, *pte=00000000, *ppte=00000000
    [  172.762207] Internal error: Oops: 807 [#1] PREEMPT ARM
    [  172.767517] Modules linked in: ti_hecc(-) can_dev
    [  172.772430] CPU: 0    Not tainted  (3.5.0alpha-00037-g3554cc0 #126)
    [  172.778961] PC is at ti_hecc_close+0xb0/0x100 [ti_hecc]
    [  172.784423] LR is at __dev_close_many+0x90/0xc0
    [  172.789123] pc : [<bf00c768>]    lr : [<c033be58>]    psr: 60000013
    [  172.789123] sp : c5c1de68  ip : 00040081  fp : 00000000
    [  172.801025] r10: 00000001  r9 : c5c1c000  r8 : 00100100
    [  172.806457] r7 : c5d0a48c  r6 : c5d0a400  r5 : 00000000  r4 : c5d0a000
    [  172.813232] r3 : c88b0000  r2 : 00000001  r1 : c5d0a000  r0 : c5d0a000
    [  172.820037] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
    [  172.827423] Control: 10c5387d  Table: 87be4019  DAC: 00000015
    [  172.833404] Process rmmod (pid: 600, stack limit = 0xc5c1c2f0)
    [  172.839447] Stack: (0xc5c1de68 to 0xc5c1e000)
    [  172.843994] de60:                   bf00c6b8 c5c1dec8 c5d0a000 c5d0a000 00200200 c033be58
    [  172.852478] de80: c5c1de44 c5c1dec8 c5c1dec8 c033bf2c c5c1de90 c5c1de90 c5d0a084 c5c1de44
    [  172.860992] dea0: c5c1dec8 c033c098 c061d3dc c5d0a000 00000000 c05edf28 c05edb34 c000d724
    [  172.869476] dec0: 00000000 c033c2f8 c5d0a084 c5d0a084 00000000 c033c370 00000000 c5d0a000
    [  172.877990] dee0: c05edb00 c033c3b8 c5d0a000 bf00d3ac c05edb00 bf00d7c8 bf00d7c8 c02842dc
    [  172.886474] df00: c02842c8 c0282f90 c5c1c000 c05edb00 bf00d7c8 c0283668 bf00d7c8 00000000
    [  172.894989] df20: c0611f98 befe2f80 c000d724 c0282d10 bf00d804 00000000 00000013 c0068a8c
    [  172.903472] df40: c5c538e8 685f6974 00636365 c61571a8 c5cb9980 c61571a8 c6158a20 c00c9bc4
    [  172.911987] df60: 00000000 00000000 c5cb9980 00000000 c5cb9980 00000000 c7823680 00000006
    [  172.920471] df80: bf00d804 00000880 c5c1df8c 00000000 000d4267 befe2f80 00000001 b6d90068
    [  172.928985] dfa0: 00000081 c000d5a0 befe2f80 00000001 befe2f80 00000880 b6d90008 00000008
    [  172.937469] dfc0: befe2f80 00000001 b6d90068 00000081 00000001 00000000 befe2eac 00000000
    [  172.945983] dfe0: 00000000 befe2b18 00023ba4 b6e6addc 60000010 befe2f80 a8e00190 86d2d344
    [  172.954498] [<bf00c768>] (ti_hecc_close+0xb0/0x100 [ti_hecc]) from [<c033be58>] (__dev__registered_many+0xc0/0x2a0)
    [  172.984161] [<c033c098>] (rollback_registered_many+0xc0/0x2a0) from [<c033c2f8>] (rollback_registered+0x20/0x30)
    [  172.994750] [<c033c2f8>] (rollback_registered+0x20/0x30) from [<c033c370>] (unregister_netdevice_queue+0x68/0x98)
    [  173.005401] [<c033c370>] (unregister_netdevice_queue+0x68/0x98) from [<c033c3b8>] (unregister_netdev+0x18/0x20)
    [  173.015899] [<c033c3b8>] (unregister_netdev+0x18/0x20) from [<bf00d3ac>] (ti_hecc_remove+0x60/0x80 [ti_hecc])
    [  173.026245] [<bf00d3ac>] (ti_hecc_remove+0x60/0x80 [ti_hecc]) from [<c02842dc>] (platform_drv_remove+0x14/0x18)
    [  173.036712] [<c02842dc>] (platform_drv_remove+0x14/0x18) from [<c0282f90>] (__device_release_driver+0x7c/0xbc)
    
    Cc: Anant Gole <anantgole@ti.com>
    Tested-by: Jan Luebbe <jlu@pengutronix.de>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit df186ac142aac873a099dff45af61662ee9d82f0
Author: Ira W. Snyder <iws@ovro.caltech.edu>
Date:   Tue Sep 11 15:58:15 2012 -0700

    can: janz-ican3: fix support for older hardware revisions
    
    commit e21093ef6fb4cbecdf926102286dbe280ae965db upstream.
    
    The Revision 1.0 Janz CMOD-IO Carrier Board does not have support for
    the reset registers. To support older hardware, the code is changed to
    use the hardware reset register on the Janz VMOD-ICAN3 hardware itself.
    
    Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b72a2bd8e49609b2b6f9d170326f70dbbd8f8b8a
Author: Wen Congyang <wency@cn.fujitsu.com>
Date:   Thu Sep 20 14:04:47 2012 +0800

    tracing: Don't call page_to_pfn() if page is NULL
    
    commit 85f2a2ef1d0ab99523e0b947a2b723f5650ed6aa upstream.
    
    When allocating memory fails, page is NULL. page_to_pfn() will
    cause the kernel panicked if we don't use sparsemem vmemmap.
    
    Link: http://lkml.kernel.org/r/505AB1FF.8020104@cn.fujitsu.com
    
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Acked-by: Mel Gorman <mel@csn.ul.ie>
    Reviewed-by: Minchan Kim <minchan@kernel.org>
    Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b0162ce56654616f0c5cdb48b06e448c2ee400cc
Author: Anisse Astier <anisse@astier.eu>
Date:   Wed Sep 19 11:10:48 2012 -0700

    Input: i8042 - disable mux on Toshiba C850D
    
    commit 8669cf6793bb38307a30fb6b9565ddc8840ebd3f upstream.
    
    On Toshiba Satellite C850D, the touchpad and the keyboard might randomly
    not work at boot. Preventing MUX mode activation solves this issue.
    
    Signed-off-by: Anisse Astier <anisse@astier.eu>
    Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 75c747ece9b2a227d21a7d83ad522b5da75b961b
Author: Søren holm <sgh@sgh.dk>
Date:   Mon Sep 17 21:50:57 2012 +0000

    asix: Support DLink DUB-E100 H/W Ver C1
    
    commit ed3770a9cd5764a575b83810ea679bbff2b03082 upstream.
    
    Signed-off-by: Søren Holm <sgh@sgh.dk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 3.2: adjust filename]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0a193b148d6d0ed05ea82f466b6d7eac50b87ac5
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Wed Sep 19 08:30:55 2012 -0400

    xen/boot: Disable BIOS SMP MP table search.
    
    commit bd49940a35ec7d488ae63bd625639893b3385b97 upstream.
    
    As the initial domain we are able to search/map certain regions
    of memory to harvest configuration data. For all low-level we
    use ACPI tables - for interrupts we use exclusively ACPI _PRT
    (so DSDT) and MADT for INT_SRC_OVR.
    
    The SMP MP table is not used at all. As a matter of fact we do
    not even support machines that only have SMP MP but no ACPI tables.
    
    Lets follow how Moorestown does it and just disable searching
    for BIOS SMP tables.
    
    This also fixes an issue on HP Proliant BL680c G5 and DL380 G6:
    
    9f->100 for 1:1 PTE
    Freeing 9f-100 pfn range: 97 pages freed
    1-1 mapping on 9f->100
    .. snip..
    e820: BIOS-provided physical RAM map:
    Xen: [mem 0x0000000000000000-0x000000000009efff] usable
    Xen: [mem 0x000000000009f400-0x00000000000fffff] reserved
    Xen: [mem 0x0000000000100000-0x00000000cfd1dfff] usable
    .. snip..
    Scan for SMP in [mem 0x00000000-0x000003ff]
    Scan for SMP in [mem 0x0009fc00-0x0009ffff]
    Scan for SMP in [mem 0x000f0000-0x000fffff]
    found SMP MP-table at [mem 0x000f4fa0-0x000f4faf] mapped at [ffff8800000f4fa0]
    (XEN) mm.c:908:d0 Error getting mfn 100 (pfn 5555555555555555) from L1 entry 0000000000100461 for l1e_owner=0, pg_owner=0
    (XEN) mm.c:4995:d0 ptwr_emulate: could not get_page_from_l1e()
    BUG: unable to handle kernel NULL pointer dereference at           (null)
    IP: [<ffffffff81ac07e2>] xen_set_pte_init+0x66/0x71
    . snip..
    Pid: 0, comm: swapper Not tainted 3.6.0-rc6upstream-00188-gb6fb969-dirty #2 HP ProLiant BL680c G5
    .. snip..
    Call Trace:
     [<ffffffff81ad31c6>] __early_ioremap+0x18a/0x248
     [<ffffffff81624731>] ? printk+0x48/0x4a
     [<ffffffff81ad32ac>] early_ioremap+0x13/0x15
     [<ffffffff81acc140>] get_mpc_size+0x2f/0x67
     [<ffffffff81acc284>] smp_scan_config+0x10c/0x136
     [<ffffffff81acc2e4>] default_find_smp_config+0x36/0x5a
     [<ffffffff81ac3085>] setup_arch+0x5b3/0xb5b
     [<ffffffff81624731>] ? printk+0x48/0x4a
     [<ffffffff81abca7f>] start_kernel+0x90/0x390
     [<ffffffff81abc356>] x86_64_start_reservations+0x131/0x136
     [<ffffffff81abfa83>] xen_start_kernel+0x65f/0x661
    (XEN) Domain 0 crashed: 'noreboot' set - not rebooting.
    
    which is that ioremap would end up mapping 0xff using _PAGE_IOMAP
    (which is what early_ioremap sticks as a flag) - which meant
    we would get MFN 0xFF (pte ff461, which is OK), and then it would
    also map 0x100 (b/c ioremap tries to get page aligned request, and
    it was trying to map 0xf4fa0 + PAGE_SIZE - so it mapped the next page)
    as _PAGE_IOMAP. Since 0x100 is actually a RAM page, and the _PAGE_IOMAP
    bypasses the P2M lookup we would happily set the PTE to 1000461.
    Xen would deny the request since we do not have access to the
    Machine Frame Number (MFN) of 0x100. The P2M[0x100] is for example
    0x80140.
    
    Fixes-Oracle-Bugzilla: https://bugzilla.oracle.com/bugzilla/show_bug.cgi?id=13665
    Acked-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 22a40bd656666aa10b3897c3394480c2488a6afa
Author: Luis R. Rodriguez <mcgrof@do-not-panic.com>
Date:   Fri Sep 14 15:36:57 2012 -0700

    cfg80211: fix possible circular lock on reg_regdb_search()
    
    commit a85d0d7f3460b1a123b78e7f7e39bf72c37dfb78 upstream.
    
    When call_crda() is called we kick off a witch hunt search
    for the same regulatory domain on our internal regulatory
    database and that work gets kicked off on a workqueue, this
    is done while the cfg80211_mutex is held. If that workqueue
    kicks off it will first lock reg_regdb_search_mutex and
    later cfg80211_mutex but to ensure two CPUs will not contend
    against cfg80211_mutex the right thing to do is to have the
    reg_regdb_search() wait until the cfg80211_mutex is let go.
    
    The lockdep report is pasted below.
    
    cfg80211: Calling CRDA to update world regulatory domain
    
    ======================================================
    [ INFO: possible circular locking dependency detected ]
    3.3.8 #3 Tainted: G           O
    -------------------------------------------------------
    kworker/0:1/235 is trying to acquire lock:
     (cfg80211_mutex){+.+...}, at: [<816468a4>] set_regdom+0x78c/0x808 [cfg80211]
    
    but task is already holding lock:
     (reg_regdb_search_mutex){+.+...}, at: [<81646828>] set_regdom+0x710/0x808 [cfg80211]
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #2 (reg_regdb_search_mutex){+.+...}:
           [<800a8384>] lock_acquire+0x60/0x88
           [<802950a8>] mutex_lock_nested+0x54/0x31c
           [<81645778>] is_world_regdom+0x9f8/0xc74 [cfg80211]
    
    -> #1 (reg_mutex#2){+.+...}:
           [<800a8384>] lock_acquire+0x60/0x88
           [<802950a8>] mutex_lock_nested+0x54/0x31c
           [<8164539c>] is_world_regdom+0x61c/0xc74 [cfg80211]
    
    -> #0 (cfg80211_mutex){+.+...}:
           [<800a77b8>] __lock_acquire+0x10d4/0x17bc
           [<800a8384>] lock_acquire+0x60/0x88
           [<802950a8>] mutex_lock_nested+0x54/0x31c
           [<816468a4>] set_regdom+0x78c/0x808 [cfg80211]
    
    other info that might help us debug this:
    
    Chain exists of:
      cfg80211_mutex --> reg_mutex#2 --> reg_regdb_search_mutex
    
     Possible unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(reg_regdb_search_mutex);
                                   lock(reg_mutex#2);
                                   lock(reg_regdb_search_mutex);
      lock(cfg80211_mutex);
    
     *** DEADLOCK ***
    
    3 locks held by kworker/0:1/235:
     #0:  (events){.+.+..}, at: [<80089a00>] process_one_work+0x230/0x460
     #1:  (reg_regdb_work){+.+...}, at: [<80089a00>] process_one_work+0x230/0x460
     #2:  (reg_regdb_search_mutex){+.+...}, at: [<81646828>] set_regdom+0x710/0x808 [cfg80211]
    
    stack backtrace:
    Call Trace:
    [<80290fd4>] dump_stack+0x8/0x34
    [<80291bc4>] print_circular_bug+0x2ac/0x2d8
    [<800a77b8>] __lock_acquire+0x10d4/0x17bc
    [<800a8384>] lock_acquire+0x60/0x88
    [<802950a8>] mutex_lock_nested+0x54/0x31c
    [<816468a4>] set_regdom+0x78c/0x808 [cfg80211]
    
    Reported-by: Felix Fietkau <nbd@openwrt.org>
    Tested-by: Felix Fietkau <nbd@openwrt.org>
    Signed-off-by: Luis R. Rodriguez <mcgrof@do-not-panic.com>
    Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit f2efd134a36b1a818163ac8e18d3348c2d48e659
Author: Jeff Layton <jlayton@redhat.com>
Date:   Tue Sep 18 14:21:01 2012 -0400

    cifs: fix return value in cifsConvertToUTF16
    
    commit c73f693989d7a7d99ec66a7065295a0c93d0b127 upstream.
    
    This function returns the wrong value, which causes the callers to get
    the length of the resulting pathname wrong when it contains non-ASCII
    characters.
    
    This seems to fix https://bugzilla.samba.org/show_bug.cgi?id=6767
    
    Reported-by: Baldvin Kovacs <baldvin.kovacs@gmail.com>
    Reported-and-Tested-by: Nicolas Lefebvre <nico.lefebvre@gmail.com>
    Signed-off-by: Jeff Layton <jlayton@redhat.com>
    Signed-off-by: Steve French <smfrench@gmail.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 691027008ac4f8f1943f7f3bbc4d825091aea670
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Tue Sep 11 13:43:17 2012 -0700

    hwmon: (ad7314) Add 'name' sysfs attribute
    
    commit 3ceefe4319636d89d4bdf40dca9471970f942e4f upstream.
    
    The 'name' sysfs attribute is mandatory for hwmon devices, but was missing
    in this driver.
    
    Cc: Jonathan Cameron <jic23@cam.ac.uk>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Acked-by: Jean Delvare <khali@linux-fr.org>
    Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit e95d3285c82d306b304b9cfb37e709b9986c8cf9
Author: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Date:   Fri Sep 14 16:34:25 2012 -0500

    hpsa: fix handling of protocol error
    
    commit 256d0eaac87da1e993190846064f339f4c7a63f5 upstream.
    
    If a command status of CMD_PROTOCOL_ERR is received, this
    information should be conveyed to the SCSI mid layer, not
    dropped on the floor.  CMD_PROTOCOL_ERR may be received
    from the Smart Array for any commands destined for an external
    RAID controller such as a P2000, or commands destined for tape
    drives or CD/DVD-ROM drives, if for instance a cable is
    disconnected.  This mostly affects multipath configurations, as
    disconnecting a cable on a non-multipath configuration is not
    going to do anything good regardless of whether CMD_PROTOCOL_ERR
    is handled correctly or not.  Not handling CMD_PROTOCOL_ERR
    correctly in a multipath configaration involving external RAID
    controllers may cause data corruption, so this is quite a serious
    bug.  This bug should not normally cause a problem for direct
    attached disk storage.
    
    Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit cd2ff82610f26dc1817effaed4627907fbe28079
Author: Sachin Kamat <sachin.kamat@linaro.org>
Date:   Mon Sep 17 15:20:23 2012 +0530

    DMA: PL330: Check the pointer returned by kzalloc
    
    commit 61c6e7531d3b66b33187b8cdd700fd8ab93ffd62 upstream.
    
    kzalloc could return NULL. Hence add a check to avoid
    NULL pointer dereference.
    
    Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
    Acked-by: Jassi Brar <jassisinghbrar@gmail.com>
    Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
    [bwh: Backported to 3.2: adjust context and error label]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit d912bb414b168204391f4a0fa8ae2e814c770fe8
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Tue Sep 11 13:39:08 2012 -0700

    hwmon: (ads7871) Add 'name' sysfs attribute
    
    commit 4e21f4eaa49f78d3e977e316514c941053871c76 upstream.
    
    The 'name' sysfs attribute is mandatory for hwmon devices, but was missing
    in this driver.
    
    Cc: Paul Thomas <pthomas8589@gmail.com>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Acked-by: Jean Delvare <khali@linux-fr.org>
    Acked-by: Paul Thomas <pthomas8589@gmail.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8756f652afeddf11a6a1c54a09c410b1fe688b3d
Author: sreekanth.reddy@lsi.com <sreekanth.reddy@lsi.com>
Date:   Wed Aug 22 16:55:13 2012 +0530

    mpt2sas: Fix for issue - Unable to boot from the drive connected to HBA
    
    commit 10cce6d8b5af0b32bc4254ae4a28423a74c0921c upstream.
    
    This patch checks whether HBA is SAS2008 B0 controller.
    if it is a SAS2008 B0 controller then it use IO-APIC interrupt instead of MSIX,
    as SAS2008 B0 controller doesn't support MSIX interrupts.
    
    [jejb: fix whitespace problems]
    Signed-off-by: Sreekanth Reddy <sreekanth.reddy@lsi.com>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 79167c4322ea74261a7da65d62238b3c7c60ec1e
Author: Eddie Wai <eddie.wai@broadcom.com>
Date:   Tue Aug 21 10:35:53 2012 -0700

    bnx2i: Fixed NULL ptr deference for 1G bnx2 Linux iSCSI offload
    
    commit d6532207116307eb7ecbfa7b9e02c53230096a50 upstream.
    
    This patch fixes the following kernel panic invoked by uninitialized fields
    in the chip initialization for the 1G bnx2 iSCSI offload.
    
    One of the bits in the chip initialization is being used by the latest
    firmware to control overflow packets.  When this control bit gets enabled
    erroneously, it would ultimately result in a bad packet placement which would
    cause the bnx2 driver to dereference a NULL ptr in the placement handler.
    
    This can happen under certain stress I/O environment under the Linux
    iSCSI offload operation.
    
    This change only affects Broadcom's 5709 chipset.
    
    Unable to handle kernel NULL pointer dereference at 0000000000000008 RIP:
     [<ffffffff881f0e7d>] :bnx2:bnx2_poll_work+0xd0d/0x13c5
    Pid: 0, comm: swapper Tainted: G     ---- 2.6.18-333.el5debug #2
    RIP: 0010:[<ffffffff881f0e7d>]  [<ffffffff881f0e7d>] :bnx2:bnx2_poll_work+0xd0d/0x13c5
    RSP: 0018:ffff8101b575bd50  EFLAGS: 00010216
    RAX: 0000000000000005 RBX: ffff81007c5fb180 RCX: 0000000000000000
    RDX: 0000000000000ffc RSI: 00000000817e8000 RDI: 0000000000000220
    RBP: ffff81015bbd7ec0 R08: ffff8100817e9000 R09: 0000000000000000
    R10: ffff81007c5fb180 R11: 00000000000000c8 R12: 000000007a25a010
    R13: 0000000000000000 R14: 0000000000000005 R15: ffff810159f80558
    FS:  0000000000000000(0000) GS:ffff8101afebc240(0000) knlGS:0000000000000000
    CS:  0010 DS: 0018 ES: 0018 CR0: 000000008005003b
    CR2: 0000000000000008 CR3: 0000000000201000 CR4: 00000000000006a0
    Process swapper (pid: 0, threadinfo ffff8101b5754000, task ffff8101afebd820)
    Stack:  000000000000000b ffff810159f80000 0000000000000040 ffff810159f80520
     ffff810159f80500 00cf00cf8008e84b ffffc200100939e0 ffff810009035b20
     0000502900000000 000000be00000001 ffff8100817e7810 00d08101b575bea8
    Call Trace:
     <IRQ>  [<ffffffff8008e0d0>] show_schedstat+0x1c2/0x25b
     [<ffffffff881f1886>] :bnx2:bnx2_poll+0xf6/0x231
     [<ffffffff8000c9b9>] net_rx_action+0xac/0x1b1
     [<ffffffff800125a0>] __do_softirq+0x89/0x133
     [<ffffffff8005e30c>] call_softirq+0x1c/0x28
     [<ffffffff8006d5de>] do_softirq+0x2c/0x7d
     [<ffffffff8006d46e>] do_IRQ+0xee/0xf7
     [<ffffffff8005d625>] ret_from_intr+0x0/0xa
     <EOI>  [<ffffffff801a5780>] acpi_processor_idle_simple+0x1c5/0x341
     [<ffffffff801a573d>] acpi_processor_idle_simple+0x182/0x341
     [<ffffffff801a55bb>] acpi_processor_idle_simple+0x0/0x341
     [<ffffffff80049560>] cpu_idle+0x95/0xb8
     [<ffffffff80078b1c>] start_secondary+0x479/0x488
    
    Signed-off-by: Eddie Wai <eddie.wai@broadcom.com>
    Reviewed-by: Mike Christie <michaelc@cs.wisc.edu>
    Signed-off-by: James Bottomley <JBottomley@Parallels.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 8282475034084b230f90f457b0e5630f1a7a8a3b
Author: Wang Xingchao <xingchao.wang@intel.com>
Date:   Thu Sep 13 07:43:22 2012 +0800

    drm/i915: HDMI - Clear Audio Enable bit for Hot Plug
    
    commit b98b60167279df3acac9422c3c9820d9ebbcf9fb upstream.
    
    Clear Audio Enable bit to trigger unsolicated event to notify Audio
    Driver part the HDMI hot plug change. The patch fixed the bug when
    remove HDMI cable the bit was not cleared correctly.
    
    In intel_hdmi_dpms(), if intel_hdmi->has_audio been true, the "Audio enable bit" will
    be set to trigger unsolicated event to notify Alsa driver the change.
    
    intel_hdmi->has_audio will be reset to false from intel_hdmi_detect() after
    remove the hdmi cable, here's debug log:
    
    [  187.494153] [drm:output_poll_execute], [CONNECTOR:17:HDMI-A-1] status updated from 1 to 2
    [  187.525349] [drm:intel_hdmi_detect], HDMI: has_audio = 0
    
    so when comes back to intel_hdmi_dpms(), the "Audio enable bit" will not be cleared. And this
    cause the eld infomation and pin presence doesnot update accordingly in alsa driver side.
    
    This patch will also trigger unsolicated event to alsa driver to notify the hot plug event:
    
    [  187.853159] ALSA sound/pci/hda/patch_hdmi.c:772 HDMI hot plug event: Codec=3 Pin=5 Presence_Detect=0 ELD_Valid=1
    [  187.853268] ALSA sound/pci/hda/patch_hdmi.c:990 HDMI status: Codec=3 Pin=5 Presence_Detect=0 ELD_Valid=0
    
    Signed-off-by: Wang Xingchao <xingchao.wang@intel.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1f2c01dad6a6d1da3c4d19379bbc383e072274d1
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sat Sep 15 09:41:57 2012 +0100

    drm/i915: Reduce a pin-leak BUG into a WARN
    
    commit 7e81a42e341a4f15d76624b7c02ffb21b085b56f upstream.
    
    Pin-leaks persist and we get the perennial bug reports of machine
    lockups to the BUG_ON(pin_count==MAX). If we instead loudly report that
    the object cannot be pinned at that time it should prevent the driver from
    locking up, and hopefully restore a semblance of working whilst still
    leaving us a OOPS to debug.
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 622bba6d5a6210572325c89a7deb61175a2330a5
Author: Matthew Leach <matthew.leach@arm.com>
Date:   Tue Sep 11 17:56:57 2012 +0100

    ARM: 7532/1: decompressor: reset SCTLR.TRE for VMSA ARMv7 cores
    
    commit e1e5b7e4251c7538ca08c2c5545b0c2fbd8a6635 upstream.
    
    This patch zeroes the SCTLR.TRE bit prior to setting the mapping as
    cacheable for ARMv7 cores in the decompressor, ensuring that the
    memory region attributes are obtained from the C and B bits, not from
    the page tables.
    
    Cc: Nicolas Pitre <nico@fluxnic.net>
    Reviewed-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Matthew Leach <matthew.leach@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 28646c86762c0dc3b23404005cf162abd7e2d3e3
Author: Nicolas Ferre <nicolas.ferre@atmel.com>
Date:   Tue Sep 11 17:21:45 2012 +0200

    dmaengine: at_hdmac: check that each sg data length is non-null
    
    commit c456797681db814f4f5b36909e8e94047bf53d9c upstream.
    
    Avoid the construction of a malformed DMA request sent to
    the DMA controller.
    Log message is for debug only because this condition is unlikely to
    append and may only trigger at driver development time.
    
    Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 684408fa0bc34620a4d62fc6cd545c1c9ae712a9
Author: Nicolas Ferre <nicolas.ferre@atmel.com>
Date:   Tue Sep 11 17:21:44 2012 +0200

    dmaengine: at_hdmac: fix comment in atc_prep_slave_sg()
    
    commit c618a9be0e8c0f36baee2560860a0118a428fb26 upstream.
    
    s/dma_memcpy/slave_sg/ and it is sg length that we are
    talking about.
    
    Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 3b63b57f41c6dc04858d7cbb67e00e03fc9c75a0
Author: Hante Meuleman <meuleman@broadcom.com>
Date:   Tue Sep 11 21:16:48 2012 +0200

    brcmfmac: Fix big endian host configuration data.
    
    commit e020a83d0942a5aceac35986500c9834efc8707d upstream.
    
    Fixes big endian host configuration parameters.
    
    Reviewed-by: Arend Van Spriel <arend@broadcom.com>
    Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
    Signed-off-by: Arend van Spriel <arend@broadcom.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 0fc97433a5336e623d9562b28862fc7c447d7f69
Author: Hante Meuleman <meuleman@broadcom.com>
Date:   Tue Sep 11 21:16:47 2012 +0200

    brcmfmac: fix big endian bug in i-scan.
    
    commit ed205b361956c96e0d8c09a8c9135a6a79cd9541 upstream.
    
    ssid len is 32 bit and needs endian conversion for big endian systems.
    
    Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
    Signed-off-by: Arend van Spriel <arend@broadcom.com>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 22ccc4c18516f07c05e5a4bd83bcfb1ec15dc5d6
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Tue Sep 11 11:11:13 2012 -0500

    rtlwifi: rtl8192ce: Log message that B_CUT device may not work
    
    commit 022e1d0680c7b4366017393417b8758be5abcee8 upstream.
    
    There are a number of problems that occur for the latest version
    of the Realtek RTL8188CE device with the in-kernel driver. These
    include selection of the wrong firmware, and system lockup. A full
    fix is known, but is too invasive for inclusion in stable. This patch
    fixes the problem with loading the wrong firmware, and logs a message
    that the device may not work for kernels 3.6 and older.
    
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Cc: Anisse Astier <anisse@astier.eu>
    Cc: Li Chaoming <chaoming_li@realsil.com.cn>
    Tested-by: Anisse Astier <anisse@astier.eu>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 6cd1dc6f7e7d273a857c187f92aad2f44dfa7a8d
Author: Toshi Kani <toshi.kani@hp.com>
Date:   Mon Aug 27 12:52:24 2012 -0600

    hpwdt: Fix kdump issue in hpwdt
    
    commit 308b135e4fcc00c80c07e0e04e7afa8edf78583c upstream.
    
    kdump can be interrupted by watchdog timer when the timer is left
    activated on the crash kernel. Changed the hpwdt driver to disable
    watchdog timer at boot-time. This assures that watchdog timer is
    disabled until /dev/watchdog is opened, and prevents watchdog timer
    to be left running on the crash kernel.
    
    Signed-off-by: Toshi Kani <toshi.kani@hp.com>
    Tested-by: Lisa Mitchell <lisa.mitchell@hp.com>
    Signed-off-by: Thomas Mingarelli <Thomas.Mingarelli@hp.com>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fbbbb5c0f0efc907bf5e3ff890d7e5a69aa96a21
Author: Yasunori Goto <y-goto@jp.fujitsu.com>
Date:   Tue Jan 17 17:40:31 2012 +0900

    sched: Fix ancient race in do_exit()
    
    commit b5740f4b2cb3503b436925eb2242bc3d75cd3dfe upstream.
    
    try_to_wake_up() has a problem which may change status from TASK_DEAD to
    TASK_RUNNING in race condition with SMI or guest environment of virtual
    machine. As a result, exited task is scheduled() again and panic occurs.
    
    Here is the sequence how it occurs:
    
     ----------------------------------+-----------------------------
                                       |
                CPU A                  |             CPU B
     ----------------------------------+-----------------------------
    
    TASK A calls exit()....
    
    do_exit()
    
      exit_mm()
        down_read(mm->mmap_sem);
    
        rwsem_down_failed_common()
    
          set TASK_UNINTERRUPTIBLE
          set waiter.task <= task A
          list_add to sem->wait_list
               :
          raw_spin_unlock_irq()
          (I/O interruption occured)
    
                                          __rwsem_do_wake(mmap_sem)
    
                                            list_del(&waiter->list);
                                            waiter->task = NULL
                                            wake_up_process(task A)
                                              try_to_wake_up()
                                                 (task is still
                                                   TASK_UNINTERRUPTIBLE)
                                                  p->on_rq is still 1.)
    
                                                  ttwu_do_wakeup()
                                                     (*A)
                                                       :
         (I/O interruption handler finished)
    
          if (!waiter.task)
              schedule() is not called
              due to waiter.task is NULL.
    
          tsk->state = TASK_RUNNING
    
              :
                                                  check_preempt_curr();
                                                      :
      task->state = TASK_DEAD
                                                  (*B)
                                            <---    set TASK_RUNNING (*C)
    
         schedule()
         (exit task is running again)
         BUG_ON() is called!
     --------------------------------------------------------
    
    The execution time between (*A) and (*B) is usually very short,
    because the interruption is disabled, and setting TASK_RUNNING at (*C)
    must be executed before setting TASK_DEAD.
    
    HOWEVER, if SMI is interrupted between (*A) and (*B),
    (*C) is able to execute AFTER setting TASK_DEAD!
    Then, exited task is scheduled again, and BUG_ON() is called....
    
    If the system works on guest system of virtual machine, the time
    between (*A) and (*B) may be also long due to scheduling of hypervisor,
    and same phenomenon can occur.
    
    By this patch, do_exit() waits for releasing task->pi_lock which is used
    in try_to_wake_up(). It guarantees the task becomes TASK_DEAD after
    waking up.
    
    Signed-off-by: Yasunori Goto <y-goto@jp.fujitsu.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Link: http://lkml.kernel.org/r/20120117174031.3118.E1E9C6FF@jp.fujitsu.com
    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit ec42753a3fcc0347d2cd7aab8cac8a340682c127
Author: Tejun Heo <tj@kernel.org>
Date:   Tue Sep 18 14:24:59 2012 -0700

    cpufreq/powernow-k8: workqueue user shouldn't migrate the kworker to another CPU
    
    commit 6889125b8b4e09c5e53e6ecab3433bed1ce198c9 upstream.
    
    powernowk8_target() runs off a per-cpu work item and if the
    cpufreq_policy->cpu is different from the current one, it migrates the
    kworker to the target CPU by manipulating current->cpus_allowed.  The
    function migrates the kworker back to the original CPU but this is
    still broken.  Workqueue concurrency management requires the kworkers
    to stay on the same CPU and powernowk8_target() ends up triggerring
    BUG_ON(rq != this_rq()) in try_to_wake_up_local() if it contends on
    fidvid_mutex and sleeps.
    
    It is unclear why this bug is being reported now.  Duncan says it
    appeared to be a regression of 3.6-rc1 and couldn't reproduce it on
    3.5.  Bisection seemed to point to 63d95a91 "workqueue: use @pool
    instead of @gcwq or @cpu where applicable" which is an non-functional
    change.  Given that the reproduce case sometimes took upto days to
    trigger, it's easy to be misled while bisecting.  Maybe something made
    contention on fidvid_mutex more likely?  I don't know.
    
    This patch fixes the bug by using work_on_cpu() instead if @pol->cpu
    isn't the same as the current one.  The code assumes that
    cpufreq_policy->cpu is kept online by the caller, which Rafael tells
    me is the case.
    
    stable: ed48ece27c ("workqueue: reimplement work_on_cpu() using
            system_wq") should be applied before this; otherwise, the
            behavior could be horrible.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Duncan <1i5t5.duncan@cox.net>
    Tested-by: Duncan <1i5t5.duncan@cox.net>
    Cc: Rafael J. Wysocki <rjw@sisk.pl>
    Cc: Andreas Herrmann <andreas.herrmann3@amd.com>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=47301
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b15bea04d4662a3b8fdf0d039a56f753be151907
Author: Tejun Heo <tj@kernel.org>
Date:   Tue Sep 18 12:48:43 2012 -0700

    workqueue: reimplement work_on_cpu() using system_wq
    
    commit ed48ece27cd3d5ee0354c32bbaec0f3e1d4715c3 upstream.
    
    The existing work_on_cpu() implementation is hugely inefficient.  It
    creates a new kthread, execute that single function and then let the
    kthread die on each invocation.
    
    Now that system_wq can handle concurrent executions, there's no
    advantage of doing this.  Reimplement work_on_cpu() using system_wq
    which makes it simpler and way more efficient.
    
    stable: While this isn't a fix in itself, it's needed to fix a
            workqueue related bug in cpufreq/powernow-k8.  AFAICS, this
            shouldn't break other existing users.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Acked-by: Jiri Kosina <jkosina@suse.cz>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Len Brown <lenb@kernel.org>
    Cc: Rafael J. Wysocki <rjw@sisk.pl>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 2ebf56f3e471e0c5a831d74b5cdfe735523188f7
Author: Miklos Szeredi <mszeredi@suse.cz>
Date:   Mon Sep 17 22:31:38 2012 +0200

    vfs: dcache: use DCACHE_DENTRY_KILLED instead of DCACHE_DISCONNECTED in d_kill()
    
    commit b161dfa6937ae46d50adce8a7c6b12233e96e7bd upstream.
    
    IBM reported a soft lockup after applying the fix for the rename_lock
    deadlock.  Commit c83ce989cb5f ("VFS: Fix the nfs sillyrename regression
    in kernel 2.6.38") was found to be the culprit.
    
    The nfs sillyrename fix used DCACHE_DISCONNECTED to indicate that the
    dentry was killed.  This flag can be set on non-killed dentries too,
    which results in infinite retries when trying to traverse the dentry
    tree.
    
    This patch introduces a separate flag: DCACHE_DENTRY_KILLED, which is
    only set in d_kill() and makes try_to_ascend() test only this flag.
    
    IBM reported successful test results with this patch.
    
    Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
    Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 937882c09a3f906f6d70e0098715b28473d64709
Author: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Date:   Fri Sep 14 16:35:10 2012 -0500

    cciss: fix handling of protocol error
    
    commit 2453f5f992717251cfadab6184fbb3ec2f2e8b40 upstream.
    
    If a command completes with a status of CMD_PROTOCOL_ERR, this
    information should be conveyed to the SCSI mid layer, not dropped
    on the floor.  Unlike a similar bug in the hpsa driver, this bug
    only affects tape drives and CD and DVD ROM drives in the cciss
    driver, and to induce it, you have to disconnect (or damage) a
    cable, so it is not a very likely scenario (which would explain
    why the bug has gone undetected for the last 10 years.)
    
    Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 5a849a302ad47b4a5f8c7ba6e53272496f5ba0cd
Author: qiuxishi <qiuxishi@gmail.com>
Date:   Mon Sep 17 14:09:24 2012 -0700

    memory hotplug: fix section info double registration bug
    
    commit f14851af0ebb32745c6c5a2e400aa0549f9d20df upstream.
    
    There may be a bug when registering section info.  For example, on my
    Itanium platform, the pfn range of node0 includes the other nodes, so
    other nodes' section info will be double registered, and memmap's page
    count will equal to 3.
    
      node0: start_pfn=0x100,    spanned_pfn=0x20fb00, present_pfn=0x7f8a3, => 0x000100-0x20fc00
      node1: start_pfn=0x80000,  spanned_pfn=0x80000,  present_pfn=0x80000, => 0x080000-0x100000
      node2: start_pfn=0x100000, spanned_pfn=0x80000,  present_pfn=0x80000, => 0x100000-0x180000
      node3: start_pfn=0x180000, spanned_pfn=0x80000,  present_pfn=0x80000, => 0x180000-0x200000
    
      free_all_bootmem_node()
    	register_page_bootmem_info_node()
    		register_page_bootmem_info_section()
    
    When hot remove memory, we can't free the memmap's page because
    page_count() is 2 after put_page_bootmem().
    
      sparse_remove_one_section()
    	free_section_usemap()
    		free_map_bootmem()
    			put_page_bootmem()
    
    [akpm@linux-foundation.org: add code comment]
    Signed-off-by: Xishi Qiu <qiuxishi@huawei.com>
    Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
    Acked-by: Mel Gorman <mgorman@suse.de>
    Cc: "Luck, Tony" <tony.luck@intel.com>
    Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 814154c28f9b3203878533b62f74985eccb9a013
Author: Li Haifeng <omycle@gmail.com>
Date:   Mon Sep 17 14:09:21 2012 -0700

    mm/page_alloc: fix the page address of higher page's buddy calculation
    
    commit 0ba8f2d59304dfe69b59c034de723ad80f7ab9ac upstream.
    
    The heuristic method for buddy has been introduced since commit
    43506fad21ca ("mm/page_alloc.c: simplify calculation of combined index
    of adjacent buddy lists").  But the page address of higher page's buddy
    was wrongly calculated, which will lead page_is_buddy to fail for ever.
    IOW, the heuristic method would be disabled with the wrong page address
    of higher page's buddy.
    
    Calculating the page address of higher page's buddy should be based
    higher_page with the offset between index of higher page and index of
    higher page's buddy.
    
    Signed-off-by: Haifeng Li <omycle@gmail.com>
    Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com>
    Reviewed-by: Michal Hocko <mhocko@suse.cz>
    Cc: KyongHo Cho <pullip.cho@samsung.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Minchan Kim <minchan.kim@gmail.com>
    Cc: Johannes Weiner <jweiner@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit fd370b1da4eb9027c38128e78f00a9591b216852
Author: Kevin Hilman <khilman@ti.com>
Date:   Mon Sep 17 14:09:17 2012 -0700

    drivers/rtc/rtc-twl.c: ensure all interrupts are disabled during probe
    
    commit 8dcebaa9a0ae8a0487f4342f3d56d2cb1c980860 upstream.
    
    On some platforms, bootloaders are known to do some interesting RTC
    programming.  Without going into the obscurities as to why this may be
    the case, suffice it to say the the driver should not make any
    assumptions about the state of the RTC when the driver loads.  In
    particular, the driver probe should be sure that all interrupts are
    disabled until otherwise programmed.
    
    This was discovered when finding bursty I2C traffic every second on
    Overo platforms.  This I2C overhead was keeping the SoC from hitting
    deep power states.  The cause was found to be the RTC firing every
    second on the I2C-connected TWL PMIC.
    
    Special thanks to Felipe Balbi for suggesting to look for a rogue driver
    as the source of the I2C traffic rather than the I2C driver itself.
    
    Special thanks to Steve Sakoman for helping track down the source of the
    continuous RTC interrups on the Overo boards.
    
    Signed-off-by: Kevin Hilman <khilman@ti.com>
    Cc: Felipe Balbi <balbi@ti.com>
    Tested-by: Steve Sakoman <steve@sakoman.com>
    Cc: Alessandro Zummo <a.zummo@towertech.it>
    Tested-by: Shubhrajyoti Datta <omaplinuxkernel@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit b641778814f791d879ba08076cb5d2fc99eb2e34
Author: Paul Clements <paul.clements@steeleye.com>
Date:   Mon Sep 17 14:09:02 2012 -0700

    nbd: clear waiting_queue on shutdown
    
    commit fded4e090c60100d709318896c79816d68d5b47d upstream.
    
    Fix a serious but uncommon bug in nbd which occurs when there is heavy
    I/O going to the nbd device while, at the same time, a failure (server,
    network) or manual disconnect of the nbd connection occurs.
    
    There is a small window between the time that the nbd_thread is stopped
    and the socket is shutdown where requests can continue to be queued to
    nbd's internal waiting_queue.  When this happens, those requests are
    never completed or freed.
    
    The fix is to clear the waiting_queue on shutdown of the nbd device, in
    the same way that the nbd request queue (queue_head) is already being
    cleared.
    
    Signed-off-by: Paul Clements <paul.clements@steeleye.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.2: local nbd_device pointers are called 'lo' not 'nbd']
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 4fa89f936f36fd98a5912a4a48497e2133cb7ff2
Author: Jianguo Wu <wujianguo@huawei.com>
Date:   Mon Sep 17 14:08:56 2012 -0700

    mm/ia64: fix a memory block size bug
    
    commit 05cf96398e1b6502f9e191291b715c7463c9d5dd upstream.
    
    I found following definition in include/linux/memory.h, in my IA64
    platform, SECTION_SIZE_BITS is equal to 32, and MIN_MEMORY_BLOCK_SIZE
    will be 0.
    
      #define MIN_MEMORY_BLOCK_SIZE     (1 << SECTION_SIZE_BITS)
    
    Because MIN_MEMORY_BLOCK_SIZE is int type and length of 32bits,
    so MIN_MEMORY_BLOCK_SIZE(1 << 32) will will equal to 0.
    Actually when SECTION_SIZE_BITS >= 31, MIN_MEMORY_BLOCK_SIZE will be wrong.
    This will cause wrong system memory infomation in sysfs.
    I think it should be:
    
      #define MIN_MEMORY_BLOCK_SIZE     (1UL << SECTION_SIZE_BITS)
    
    And "echo offline > memory0/state" will cause following call trace:
    
      kernel BUG at mm/memory_hotplug.c:885!
      sh[6455]: bugcheck! 0 [1]
      Pid: 6455, CPU 0, comm:                   sh
      psr : 0000101008526030 ifs : 8000000000000fa4 ip  : [<a0000001008c40f0>]    Not tainted (3.6.0-rc1)
      ip is at offline_pages+0x210/0xee0
      Call Trace:
        show_stack+0x80/0xa0
        show_regs+0x640/0x920
        die+0x190/0x2c0
        die_if_kernel+0x50/0x80
        ia64_bad_break+0x3d0/0x6e0
        ia64_native_leave_kernel+0x0/0x270
        offline_pages+0x210/0xee0
        alloc_pages_current+0x180/0x2a0
    
    Signed-off-by: Jianguo Wu <wujianguo@huawei.com>
    Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
    Cc: "Luck, Tony" <tony.luck@intel.com>
    Reviewed-by: Michal Hocko <mhocko@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 1b0abe96ea79c42e21604d08216fe773000dae2b
Author: Francesco Ruggeri <fruggeri@aristanetworks.com>
Date:   Thu Sep 13 15:03:37 2012 -0700

    fs/proc: fix potential unregister_sysctl_table hang
    
    commit 6bf6104573482570f7103d3e5ddf9574db43a363 upstream.
    
    The unregister_sysctl_table() function hangs if all references to its
    ctl_table_header structure are not dropped.
    
    This can happen sometimes because of a leak in proc_sys_lookup():
    proc_sys_lookup() gets a reference to the table via lookup_entry(), but
    it does not release it when a subsequent call to sysctl_follow_link()
    fails.
    
    This patch fixes this leak by making sure the reference is always
    dropped on return.
    
    See also commit 076c3eed2c31 ("sysctl: Rewrite proc_sys_lookup
    introducing find_entry and lookup_entry") which reorganized this code in
    3.4.
    
    Tested in Linux 3.4.4.
    
    Signed-off-by: Francesco Ruggeri <fruggeri@aristanetworks.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 62ed89fa28e6ecff1e4e9fb9664276d02862a2bc
Author: Dylan Reid <dgreid@chromium.org>
Date:   Sat Sep 1 01:38:19 2012 -0700

    ASoC: samsung dma - Don't indicate support for pause/resume.
    
    commit 57b2d68863f281737d8596cb3d76d89d9cc54fd8 upstream.
    
    The pause and resume operations indicate that the stream can be
    un-paused/resumed from the exact location they were paused/suspended.
    This is not true for this driver, the pause and suspend triggers share
    the same code path with stop, they flush all pending DMA transfers.
    This drops all pending samples.  The pause_release/resume triggers are
    the same as start, except that prepare won't be called beforehand,
    nothing will be enqueued to the DMA engine and nothing will happen (no
    audio).  Removing the pause flag will let apps know that it isn't
    supported.  Removing the resume flag will cause user space to call
    prepare and start instead of resume, so audio will continue playing when
    the system wakes up.
    
    Before removing the pause and resume flags, I tested this on an exynos
    5250, using 'aplay -i'. Pause/un-pause leads to silence followed by a
    write error.  Suspend/resume testing led to the same result.  Removing
    the two flags fixes suspend/resume (since snd_pcm_prepare is called
    again). And leads to a proper reporting of pause not supported.
    
    Signed-off-by: Dylan Reid <dgreid@chromium.org>
    Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

commit 288a2e6e152fde8349fe509cb7b5977a4f87edda
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Thu Aug 16 15:33:10 2012 -0700

    target: Fix ->data_length re-assignment bug with SCSI overflow
    
    commit 4c054ba63ad47ef244cfcfa1cea38134620a5bae upstream.
    
    This patch fixes a long-standing bug with SCSI overflow handling
    where se_cmd->data_length was incorrectly being re-assigned to
    the larger CDB extracted allocation length, resulting in a number
    of fabric level errors that would end up causing a session reset
    in most cases.  So instead now:
    
     - Only re-assign se_cmd->data_length durining UNDERFLOW (to use the
       smaller value)
     - Use existing se_cmd->data_length for OVERFLOW (to use the smaller
       value)
    
    This fix has been tested with the following CDB to generate an
    SCSI overflow:
    
      sg_raw -r512 /dev/sdc 28 0 0 0 0 0 0 0 9 0
    
    Tested using iscsi-target, tcm_qla2xxx, loopback and tcm_vhost fabric
    ports.  Here is a bit more detail on each case:
    
     - iscsi-target: Bug with open-iscsi with overflow, sg_raw returns
                     -3584 bytes of data.
     - tcm_qla2xxx: Working as expected, returnins 512 bytes of data
     - loopback: sg_raw returns CHECK_CONDITION, from overflow rejection
                 in transport_generic_map_mem_to_cmd()
     - tcm_vhost: Same as loopback
    
    Reported-by: Roland Dreier <roland@purestorage.com>
    Cc: Roland Dreier <roland@purestorage.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Boaz Harrosh <bharrosh@panasas.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>