Linux 3.4.73
Ignore mmc driver patch

commit 50b673d2fefba609f4a84e889277c5e12ce6a93d
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Dec 8 08:12:17 2013 -0800

    Linux 3.4.73

commit 78530a1aaf9274a3fb6f958f27f7fab302c4e961
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Mon Oct 14 12:11:36 2013 -0400

    blk-core: Fix memory corruption if blkcg_init_queue fails

    commit fff4996b7db7955414ac74386efa5e07fd766b50 upstream.

    If blkcg_init_queue fails, blk_alloc_queue_node doesn't call bdi_destroy
    to clean up structures allocated by the backing dev.

    ------------[ cut here ]------------
    WARNING: at lib/debugobjects.c:260 debug_print_object+0x85/0xa0()
    ODEBUG: free active (active state 0) object type: percpu_counter hint:           (null)
    Modules linked in: dm_loop dm_mod ip6table_filter ip6_tables uvesafb cfbcopyarea cfbimgblt cfbfillrect fbcon font bitblit fbcon_rotate fbcon_cw fbcon_ud fbcon_ccw softcursor fb fbdev ipt_MASQUERADE iptable_nat nf_nat_ipv4 msr nf_conntrack_ipv4 nf_defrag_ipv4 xt_state ipt_REJECT xt_tcpudp iptable_filter ip_tables x_tables bridge stp llc tun ipv6 cpufreq_userspace cpufreq_stats cpufreq_powersave cpufreq_ondemand cpufreq_conservative spadfs fuse hid_generic usbhid hid raid0 md_mod dmi_sysfs nf_nat_ftp nf_nat nf_conntrack_ftp nf_conntrack lm85 hwmon_vid snd_usb_audio snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd_page_alloc snd_hwdep snd_usbmidi_lib snd_rawmidi snd soundcore acpi_cpufreq freq_table mperf sata_svw serverworks kvm_amd ide_core ehci_pci ohci_hcd libata ehci_hcd kvm usbcore tg3 usb_common libphy k10temp pcspkr ptp i2c_piix4 i2c_core evdev microcode hwmon rtc_cmos pps_core e100 skge floppy mii processor button unix
    CPU: 0 PID: 2739 Comm: lvchange Tainted: G        W
    3.10.15-devel #14
    Hardware name: empty empty/S3992-E, BIOS 'V1.06   ' 06/09/2009
     0000000000000009 ffff88023c3c1ae8 ffffffff813c8fd4 ffff88023c3c1b20
     ffffffff810399eb ffff88043d35cd58 ffffffff81651940 ffff88023c3c1bf8
     ffffffff82479d90 0000000000000005 ffff88023c3c1b80 ffffffff81039a67
    Call Trace:
     [<ffffffff813c8fd4>] dump_stack+0x19/0x1b
     [<ffffffff810399eb>] warn_slowpath_common+0x6b/0xa0
     [<ffffffff81039a67>] warn_slowpath_fmt+0x47/0x50
     [<ffffffff8122aaaf>] ? debug_check_no_obj_freed+0xcf/0x250
     [<ffffffff81229a15>] debug_print_object+0x85/0xa0
     [<ffffffff8122abe3>] debug_check_no_obj_freed+0x203/0x250
     [<ffffffff8113c4ac>] kmem_cache_free+0x20c/0x3a0
     [<ffffffff811f6709>] blk_alloc_queue_node+0x2a9/0x2c0
     [<ffffffff811f672e>] blk_alloc_queue+0xe/0x10
     [<ffffffffa04c0093>] dm_create+0x1a3/0x530 [dm_mod]
     [<ffffffffa04c6bb0>] ? list_version_get_info+0xe0/0xe0 [dm_mod]
     [<ffffffffa04c6c07>] dev_create+0x57/0x2b0 [dm_mod]
     [<ffffffffa04c6bb0>] ? list_version_get_info+0xe0/0xe0 [dm_mod]
     [<ffffffffa04c6bb0>] ? list_version_get_info+0xe0/0xe0 [dm_mod]
     [<ffffffffa04c6528>] ctl_ioctl+0x268/0x500 [dm_mod]
     [<ffffffff81097662>] ? get_lock_stats+0x22/0x70
     [<ffffffffa04c67ce>] dm_ctl_ioctl+0xe/0x20 [dm_mod]
     [<ffffffff81161aad>] do_vfs_ioctl+0x2ed/0x520
     [<ffffffff8116cfc7>] ? fget_light+0x377/0x4e0
     [<ffffffff81161d2b>] SyS_ioctl+0x4b/0x90
     [<ffffffff813cff16>] system_call_fastpath+0x1a/0x1f
    ---[ end trace 4b5ff0d55673d986 ]---
    ------------[ cut here ]------------

    This fix should be backported to stable kernels starting with 2.6.37. Note
    that in the kernels prior to 3.5 the affected code is different, but the
    bug is still there - bdi_init is called and bdi_destroy isn't.

    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d8b8a43e0f3c99bb29f258ef508969793f8e43bd
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Fri Mar 1 22:45:44 2013 +0000

    dm: fix truncated status strings

    commit fd7c092e711ebab55b2688d3859d95dfd0301f73 upstream.

    Avoid returning a truncated table or status string instead of setting
    the DM_BUFFER_FULL_FLAG when the last target of a table fills the
    buffer.

    When processing a table or status request, the function retrieve_status
    calls ti->type->status. If ti->type->status returns non-zero,
    retrieve_status assumes that the buffer overflowed and sets
    DM_BUFFER_FULL_FLAG.

    However, targets don't return non-zero values from their status method
    on overflow. Most targets returns always zero.

    If a buffer overflow happens in a target that is not the last in the
    table, it gets noticed during the next iteration of the loop in
    retrieve_status; but if a buffer overflow happens in the last target, it
    goes unnoticed and erroneously truncated data is returned.

    In the current code, the targets behave in the following way:
    * dm-crypt returns -ENOMEM if there is not enough space to store the
      key, but it returns 0 on all other overflows.
    * dm-thin returns errors from the status method if a disk error happened.
      This is incorrect because retrieve_status doesn't check the error
      code, it assumes that all non-zero values mean buffer overflow.
    * all the other targets always return 0.

    This patch changes the ti->type->status function to return void (because
    most targets don't use the return code). Overflow is detected in
    retrieve_status: if the status method fills up the remaining space
    completely, it is assumed that buffer overflow happened.

    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Alasdair G Kergon <agk@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e23d8bd64e49062faf4aa4abcedd3943cf1d09d
Author: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
Date:   Tue Oct 15 16:42:19 2013 -0600

    elevator: acquire q->sysfs_lock in elevator_change()

    commit 7c8a3679e3d8e9d92d58f282161760a0e247df97 upstream.

    Add locking of q->sysfs_lock into elevator_change() (an exported function)
    to ensure it is held to protect q->elevator from elevator_init(), even if
    elevator_change() is called from non-sysfs paths.
    sysfs path (elv_iosched_store) uses __elevator_change(), non-locking
    version, as the lock is already taken by elv_iosched_store().

    Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Cc: Josh Boyer <jwboyer@fedoraproject.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3dc062d269601c3f2f9860e9033906d303661622
Author: Julian Stecklina <jsteckli@os.inf.tu-dresden.de>
Date:   Wed Oct 9 10:03:52 2013 +0200

    iommu/vt-d: Fixed interaction of VFIO_IOMMU_MAP_DMA with IOMMU address limits

    commit f9423606ade08653dd8a43334f0a7fb45504c5cc upstream.

    The BUG_ON in drivers/iommu/intel-iommu.c:785 can be triggered from userspace via
    VFIO by calling the VFIO_IOMMU_MAP_DMA ioctl on a vfio device with any address
    beyond the addressing capabilities of the IOMMU. The problem is that the ioctl code
    calls iommu_iova_to_phys before it calls iommu_map. iommu_map handles the case that
    it gets addresses beyond the addressing capabilities of its IOMMU.
    intel_iommu_iova_to_phys does not.

    This patch fixes iommu_iova_to_phys to return NULL for addresses beyond what the
    IOMMU can handle. This in turn causes the ioctl call to fail in iommu_map and
    (correctly) return EFAULT to the user with a helpful warning message in the kernel
    log.

    Signed-off-by: Julian Stecklina <jsteckli@os.inf.tu-dresden.de>
    Acked-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Joerg Roedel <joro@8bytes.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6fa8c5d6ac1afc5563932d7220ed01ee959a8764
Author: Sasha Levin <sasha.levin@oracle.com>
Date:   Tue Nov 19 14:25:36 2013 -0500

    video: kyro: fix incorrect sizes when copying to userspace

    commit 2ab68ec927310dc488f3403bb48f9e4ad00a9491 upstream.

    kyro would copy u32s and specify sizeof(unsigned long) as the size to copy.

    This would copy more data than intended and cause memory corruption and might
    leak kernel memory.

    Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b79811fc009205e700039a997ea5b0b9b44bd260
Author: Stanislav Kinsbursky <skinsbursky@parallels.com>
Date:   Mon Dec 10 12:19:04 2012 +0300

    nfsd: use "init_net" for portmapper

    commit f7fb86c6e639360ad9c253cec534819ef928a674 upstream.

    There could be a situation, when NFSd was started in one network namespace, but
    stopped in another one.
    This will trigger kernel panic, because RPCBIND client is stored on per-net
    NFSd data, and will be NULL on NFSd shutdown.

    Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Weng Meiling <wengmeiling.weng@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98048d9b597625034b47f7e0bd04595b6002a045
Author: KOBAYASHI Yoshitake <yoshitake.kobayashi@toshiba.co.jp>
Date:   Sun Jul 7 07:35:45 2013 +0900

    mmc: block: fix a bug of error handling in MMC driver

    commit c8760069627ad3b0dbbea170f0c4c58b16e18d3d upstream.

    Current MMC driver doesn't handle generic error (bit19 of device
    status) in write sequence. As a result, write data gets lost when
    generic error occurs. For example, a generic error when updating a
    filesystem management information causes a loss of write data and
    corrupts the filesystem. In the worst case, the system will never
    boot.

    This patch includes the following functionality:
      1. To enable error checking for the response of CMD12 and CMD13
         in write command sequence
      2. To retry write sequence when a generic error occurs

    Messages are added for v2 to show what occurs.

    Signed-off-by: KOBAYASHI Yoshitake <yoshitake.kobayashi@toshiba.co.jp>
    Signed-off-by: Chris Ball <cjb@laptop.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12c1f610fe8574b5ea9374344f1684b5d972d50b
Author: Kees Cook <keescook@chromium.org>
Date:   Wed Aug 28 22:31:52 2013 +0200

    HID: picolcd_core: validate output report details

    commit 1e87a2456b0227ca4ab881e19a11bb99d164e792 upstream.

    A HID device could send a malicious output report that would cause the
    picolcd HID driver to trigger a NULL dereference during attr file writing.

    [jkosina@suse.cz: changed

    	report->maxfield < 1

    to

    	report->maxfield != 1

    as suggested by Bruno].

    CVE-2013-2899

    Signed-off-by: Kees Cook <keescook@chromium.org>
    Cc: stable@kernel.org
    Reviewed-by: Bruno Prémont <bonbons@linux-vserver.org>
    Acked-by: Bruno Prémont <bonbons@linux-vserver.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    [Kefeng: backported to stable 3.4: adjust filename]
    Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d92c9bfeb1ea4167d77f6a2fc05d9897c96736aa
Author: fan.du <fan.du@windriver.com>
Date:   Sun Dec 1 16:28:48 2013 +0800

    {pktgen, xfrm} Update IPv4 header total len and checksum after tranformation

    [ Upstream commit 3868204d6b89ea373a273e760609cb08020beb1a ]

    commit a553e4a6317b2cfc7659542c10fe43184ffe53da ("[PKTGEN]: IPSEC support")
    tried to support IPsec ESP transport transformation for pktgen, but acctually
    this doesn't work at all for two reasons(The orignal transformed packet has
    bad IPv4 checksum value, as well as wrong auth value, reported by wireshark)

    - After transpormation, IPv4 header total length needs update,
      because encrypted payload's length is NOT same as that of plain text.

    - After transformation, IPv4 checksum needs re-caculate because of payload
      has been changed.

    With this patch, armmed pktgen with below cofiguration, Wireshark is able to
    decrypted ESP packet generated by pktgen without any IPv4 checksum error or
    auth value error.

    pgset "flag IPSEC"
    pgset "flows 1"

    Signed-off-by: Fan Du <fan.du@windriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8799b15a11fa940cba1e0085775eee5b6e6825d5
Author: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date:   Fri Nov 29 06:39:44 2013 +0100

    ipv6: fix possible seqlock deadlock in ip6_finish_output2

    [ Upstream commit 7f88c6b23afbd31545c676dea77ba9593a1a14bf ]

    IPv6 stats are 64 bits and thus are protected with a seqlock. By not
    disabling bottom-half we could deadlock here if we don't disable bh and
    a softirq reentrantly updates the same mib.

    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fdc381c7cac378e757f76affb00f3b4e874d921
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Nov 28 09:51:22 2013 -0800

    inet: fix possible seqlock deadlocks

    [ Upstream commit f1d8cba61c3c4b1eb88e507249c4cb8d635d9a76 ]

    In commit c9e9042994d3 ("ipv4: fix possible seqlock deadlock") I left
    another places where IP_INC_STATS_BH() were improperly used.

    udp_sendmsg(), ping_v4_sendmsg() and tcp_v4_connect() are called from
    process context, not from softirq context.

    This was detected by lockdep seqlock support.

    Reported-by: jongman heo <jongman.heo@samsung.com>
    Fixes: 584bdf8cbdf6 ("[IPV4]: Fix "ipOutNoRoutes" counter error for TCP and UDP")
    Fixes: c319b4d76b9e ("net: ipv4: add IPPROTO_ICMP socket kind")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2671a6eef102f11f879ffc29e730381423bf675
Author: Shawn Landden <shawn@churchofgit.com>
Date:   Sun Nov 24 22:36:28 2013 -0800

    net: update consumers of MSG_MORE to recognize MSG_SENDPAGE_NOTLAST

    [ Upstream commit d3f7d56a7a4671d395e8af87071068a195257bf6 ]

    Commit 35f9c09fe (tcp: tcp_sendpages() should call tcp_push() once)
    added an internal flag MSG_SENDPAGE_NOTLAST, similar to
    MSG_MORE.

    algif_hash, algif_skcipher, and udp used MSG_MORE from tcp_sendpages()
    and need to see the new flag as identical to MSG_MORE.

    This fixes sendfile() on AF_ALG.

    v3: also fix udp

    Reported-and-tested-by: Shawn Landden <shawnlandden@gmail.com>
    Cc: Tom Herbert <therbert@google.com>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Cc: David S. Miller <davem@davemloft.net>
    Original-patch: Richard Weinberger <richard@nod.at>
    Signed-off-by: Shawn Landden <shawn@churchofgit.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4da7a3c088de8b4cb1c4523a3e22eb1aafb95e3
Author: Veaceslav Falico <vfalico@redhat.com>
Date:   Fri Nov 29 09:53:23 2013 +0100

    af_packet: block BH in prb_shutdown_retire_blk_timer()

    [ Upstream commit ec6f809ff6f19fafba3212f6aff0dda71dfac8e8 ]

    Currently we're using plain spin_lock() in prb_shutdown_retire_blk_timer(),
    however the timer might fire right in the middle and thus try to re-aquire
    the same spinlock, leaving us in a endless loop.

    To fix that, use the spin_lock_bh() to block it.

    Fixes: f6fb8f100b80 ("af-packet: TPACKET_V3 flexible buffer implementation.")
    CC: "David S. Miller" <davem@davemloft.net>
    CC: Daniel Borkmann <dborkman@redhat.com>
    CC: Willem de Bruijn <willemb@google.com>
    CC: Phil Sutter <phil@nwl.cc>
    CC: Eric Dumazet <edumazet@google.com>
    Reported-by: Jan Stancek <jstancek@redhat.com>
    Tested-by: Jan Stancek <jstancek@redhat.com>
    Signed-off-by: Veaceslav Falico <vfalico@redhat.com>
    Acked-by: Daniel Borkmann <dborkman@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 634851764c534f3ff8deffad2c9176a0815b0c2d
Author: Daniel Borkmann <dborkman@redhat.com>
Date:   Thu Nov 21 16:50:58 2013 +0100

    packet: fix use after free race in send path when dev is released

    [ Upstream commit e40526cb20b5ee53419452e1f03d97092f144418 ]

    Salam reported a use after free bug in PF_PACKET that occurs when
    we're sending out frames on a socket bound device and suddenly the
    net device is being unregistered. It appears that commit 827d9780
    introduced a possible race condition between {t,}packet_snd() and
    packet_notifier(). In the case of a bound socket, packet_notifier()
    can drop the last reference to the net_device and {t,}packet_snd()
    might end up suddenly sending a packet over a freed net_device.

    To avoid reverting 827d9780 and thus introducing a performance
    regression compared to the current state of things, we decided to
    hold a cached RCU protected pointer to the net device and maintain
    it on write side via bind spin_lock protected register_prot_hook()
    and __unregister_prot_hook() calls.

    In {t,}packet_snd() path, we access this pointer under rcu_read_lock
    through packet_cached_dev_get() that holds reference to the device
    to prevent it from being freed through packet_notifier() while
    we're in send path. This is okay to do as dev_put()/dev_hold() are
    per-cpu counters, so this should not be a performance issue. Also,
    the code simplifies a bit as we don't need need_rls_dev anymore.

    Fixes: 827d978037d7 ("af-packet: Use existing netdev reference for bound sockets.")
    Reported-by: Salam Noureddine <noureddine@aristanetworks.com>
    Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
    Signed-off-by: Salam Noureddine <noureddine@aristanetworks.com>
    Cc: Ben Greear <greearb@candelatech.com>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61258c169a47b167bcae7740f2187082cd33561d
Author: Ding Tianhong <dingtianhong@huawei.com>
Date:   Sat Dec 7 22:12:05 2013 +0800

    bridge: flush br's address entry in fdb when remove the bridge dev

    [ Upstream commit f873042093c0b418d2351fe142222b625c740149 ]

    When the following commands are executed:

    brctl addbr br0
    ifconfig br0 hw ether <addr>
    rmmod bridge

    The calltrace will occur:

    [  563.312114] device eth1 left promiscuous mode
    [  563.312188] br0: port 1(eth1) entered disabled state
    [  563.468190] kmem_cache_destroy bridge_fdb_cache: Slab cache still has objects
    [  563.468197] CPU: 6 PID: 6982 Comm: rmmod Tainted: G           O 3.12.0-0.7-default+ #9
    [  563.468199] Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007
    [  563.468200]  0000000000000880 ffff88010f111e98 ffffffff814d1c92 ffff88010f111eb8
    [  563.468204]  ffffffff81148efd ffff88010f111eb8 0000000000000000 ffff88010f111ec8
    [  563.468206]  ffffffffa062a270 ffff88010f111ed8 ffffffffa063ac76 ffff88010f111f78
    [  563.468209] Call Trace:
    [  563.468218]  [<ffffffff814d1c92>] dump_stack+0x6a/0x78
    [  563.468234]  [<ffffffff81148efd>] kmem_cache_destroy+0xfd/0x100
    [  563.468242]  [<ffffffffa062a270>] br_fdb_fini+0x10/0x20 [bridge]
    [  563.468247]  [<ffffffffa063ac76>] br_deinit+0x4e/0x50 [bridge]
    [  563.468254]  [<ffffffff810c7dc9>] SyS_delete_module+0x199/0x2b0
    [  563.468259]  [<ffffffff814e0922>] system_call_fastpath+0x16/0x1b
    [  570.377958] Bridge firewalling registered

    --------------------------- cut here -------------------------------

    The reason is that when the bridge dev's address is changed, the
    br_fdb_change_mac_address() will add new address in fdb, but when
    the bridge was removed, the address entry in the fdb did not free,
    the bridge_fdb_cache still has objects when destroy the cache, Fix
    this by flushing the bridge address entry when removing the bridge.

    v2: according to the Toshiaki Makita and Vlad's suggestion, I only
        delete the vlan0 entry, it still have a leak here if the vlan id
        is other number, so I need to call fdb_delete_by_port(br, NULL, 1)
        to flush all entries whose dst is NULL for the bridge.

    Suggested-by: Toshiaki Makita <toshiaki.makita1@gmail.com>
    Suggested-by: Vlad Yasevich <vyasevich@gmail.com>
    Signed-off-by: Ding Tianhong <dingtianhong@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9793558a4a509d147eb04c69a4c317a31ac5e7cc
Author: Vlad Yasevich <vyasevic@redhat.com>
Date:   Tue Nov 19 20:47:15 2013 -0500

    net: core: Always propagate flag changes to interfaces

    [ Upstream commit d2615bf450694c1302d86b9cc8a8958edfe4c3a4 ]

    The following commit:
        b6c40d68ff6498b7f63ddf97cf0aa818d748dee7
        net: only invoke dev->change_rx_flags when device is UP

    tried to fix a problem with VLAN devices and promiscuouse flag setting.
    The issue was that VLAN device was setting a flag on an interface that
    was down, thus resulting in bad promiscuity count.
    This commit blocked flag propagation to any device that is currently
    down.

    A later commit:
        deede2fabe24e00bd7e246eb81cd5767dc6fcfc7
        vlan: Don't propagate flag changes on down interfaces

    fixed VLAN code to only propagate flags when the VLAN interface is up,
    thus fixing the same issue as above, only localized to VLAN.

    The problem we have now is that if we have create a complex stack
    involving multiple software devices like bridges, bonds, and vlans,
    then it is possible that the flags would not propagate properly to
    the physical devices.  A simple examle of the scenario is the
    following:

      eth0----> bond0 ----> bridge0 ---> vlan50

    If bond0 or eth0 happen to be down at the time bond0 is added to
    the bridge, then eth0 will never have promisc mode set which is
    currently required for operation as part of the bridge.  As a
    result, packets with vlan50 will be dropped by the interface.

    The only 2 devices that implement the special flag handling are
    VLAN and DSA and they both have required code to prevent incorrect
    flag propagation.  As a result we can remove the generic solution
    introduced in b6c40d68ff6498b7f63ddf97cf0aa818d748dee7 and leave
    it to the individual devices to decide whether they will block
    flag propagation or not.

    Reported-by: Stefan Priebe <s.priebe@profihost.ag>
    Suggested-by: Veaceslav Falico <vfalico@redhat.com>
    Signed-off-by: Vlad Yasevich <vyasevic@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12263a242549802fc76da6f39b4d8f5ca080a71b
Author: Ying Xue <ying.xue@windriver.com>
Date:   Tue Nov 19 18:09:27 2013 +0800

    atm: idt77252: fix dev refcnt leak

    [ Upstream commit b5de4a22f157ca345cdb3575207bf46402414bc1 ]

    init_card() calls dev_get_by_name() to get a network deceive. But it
    doesn't decrease network device reference count after the device is
    used.

    Signed-off-by: Ying Xue <ying.xue@windriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 597b9d2145baea7ca03aa27ca5ede3e65f9859a2
Author: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date:   Sat Nov 23 07:22:33 2013 +0100

    ipv6: fix leaking uninitialized port number of offender sockaddr

    [ Upstream commit 1fa4c710b6fe7b0aac9907240291b6fe6aafc3b8 ]

    Offenders don't have port numbers, so set it to 0.

    Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb7eb184acef1e803629b0cdcf1afc90bff62e1a
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Nov 27 15:40:21 2013 +0300

    net: clamp ->msg_namelen instead of returning an error

    [ Upstream commit db31c55a6fb245fdbb752a2ca4aefec89afabb06 ]

    If kmsg->msg_namelen > sizeof(struct sockaddr_storage) then in the
    original code that would lead to memory corruption in the kernel if you
    had audit configured.  If you didn't have audit configured it was
    harmless.

    There are some programs such as beta versions of Ruby which use too
    large of a buffer and returning an error code breaks them.  We should
    clamp the ->msg_namelen value instead.

    Fixes: 1661bf364ae9 ("net: heap overflow in __audit_sockaddr()")
    Reported-by: Eric Wong <normalperson@yhbt.net>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Tested-by: Eric Wong <normalperson@yhbt.net>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad25b5df02bacf27efb56fe12bb8da8dd9273546
Author: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date:   Sat Nov 23 00:46:12 2013 +0100

    inet: fix addr_len/msg->msg_namelen assignment in recv_error and rxpmtu functions

    [ Upstream commit 85fbaa75037d0b6b786ff18658ddf0b4014ce2a4 ]

    Commit bceaa90240b6019ed73b49965eac7d167610be69 ("inet: prevent leakage
    of uninitialized memory to user in recv syscalls") conditionally updated
    addr_len if the msg_name is written to. The recv_error and rxpmtu
    functions relied on the recvmsg functions to set up addr_len before.

    As this does not happen any more we have to pass addr_len to those
    functions as well and set it to the size of the corresponding sockaddr
    length.

    This broke traceroute and such.

    Fixes: bceaa90240b6 ("inet: prevent leakage of uninitialized memory to user in recv syscalls")
    Reported-by: Brad Spengler <spender@grsecurity.net>
    Reported-by: Tom Labanowski
    Cc: mpb <mpb.mail@gmail.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea9d7dc958579b07bf5cc419c4db932689a1224d
Author: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date:   Thu Nov 21 03:14:34 2013 +0100

    net: add BUG_ON if kernel advertises msg_namelen > sizeof(struct sockaddr_storage)

    [ Upstream commit 68c6beb373955da0886d8f4f5995b3922ceda4be ]

    In that case it is probable that kernel code overwrote part of the
    stack. So we should bail out loudly here.

    The BUG_ON may be removed in future if we are sure all protocols are
    conformant.

    Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18719a4c7a90af3de4bb071511dd4a6dcf61a2e0
Author: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date:   Thu Nov 21 03:14:22 2013 +0100

    net: rework recvmsg handler msg_name and msg_namelen logic

    [ Upstream commit f3d3342602f8bcbf37d7c46641cb9bca7618eb1c ]

    This patch now always passes msg->msg_namelen as 0. recvmsg handlers must
    set msg_namelen to the proper size <= sizeof(struct sockaddr_storage)
    to return msg_name to the user.

    This prevents numerous uninitialized memory leaks we had in the
    recvmsg handlers and makes it harder for new code to accidentally leak
    uninitialized memory.

    Optimize for the case recvfrom is called with NULL as address. We don't
    need to copy the address at all, so set it to NULL before invoking the
    recvmsg handler. We can do so, because all the recvmsg handlers must
    cope with the case a plain read() is called on them. read() also sets
    msg_name to NULL.

    Also document these changes in include/linux/net.h as suggested by David
    Miller.

    Changes since RFC:

    Set msg->msg_name = NULL if user specified a NULL in msg_name but had a
    non-null msg_namelen in verify_iovec/verify_compat_iovec. This doesn't
    affect sendto as it would bail out earlier while trying to copy-in the
    address. It also more naturally reflects the logic by the callers of
    verify_iovec.

    With this change in place I could remove "
    if (!uaddr || msg_sys->msg_namelen == 0)
    	msg->msg_name = NULL
    ".

    This change does not alter the user visible error logic as we ignore
    msg_namelen as long as msg_name is NULL.

    Also remove two unnecessary curly brackets in ___sys_recvmsg and change
    comments to netdev style.

    Cc: David Miller <davem@davemloft.net>
    Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11afb94fbe0337a06ee7fce36841969b4e538622
Author: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date:   Mon Nov 18 04:20:45 2013 +0100

    inet: prevent leakage of uninitialized memory to user in recv syscalls

    [ Upstream commit bceaa90240b6019ed73b49965eac7d167610be69 ]

    Only update *addr_len when we actually fill in sockaddr, otherwise we
    can return uninitialized memory from the stack to the caller in the
    recvfrom, recvmmsg and recvmsg syscalls. Drop the the (addr_len == NULL)
    checks because we only get called with a valid addr_len pointer either
    from sock_common_recvmsg or inet_recvmsg.

    If a blocking read waits on a socket which is concurrently shut down we
    now return zero and set msg_msgnamelen to 0.

    Reported-by: mpb <mpb.mail@gmail.com>
    Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fadb5aaa2bcfbfc9c0707a04e980e0c85810b942
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Nov 14 13:37:54 2013 -0800

    ipv4: fix possible seqlock deadlock

    [ Upstream commit c9e9042994d37cbc1ee538c500e9da1bb9d1bcdf ]

    ip4_datagram_connect() being called from process context,
    it should use IP_INC_STATS() instead of IP_INC_STATS_BH()
    otherwise we can deadlock on 32bit arches, or get corruptions of
    SNMP counters.

    Fixes: 584bdf8cbdf6 ("[IPV4]: Fix "ipOutNoRoutes" counter error for TCP and UDP")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dave Jones <davej@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5faa67af221bba0e3e544d4771d608dc4ef611f6
Author: Chris Metcalf <cmetcalf@tilera.com>
Date:   Thu Nov 14 12:09:21 2013 -0500

    connector: improved unaligned access error fix

    [ Upstream commit 1ca1a4cf59ea343a1a70084fe7cc96f37f3cf5b1 ]

    In af3e095a1fb4, Erik Jacobsen fixed one type of unaligned access
    bug for ia64 by converting a 64-bit write to use put_unaligned().
    Unfortunately, since gcc will convert a short memset() to a series
    of appropriately-aligned stores, the problem is now visible again
    on tilegx, where the memset that zeros out proc_event is converted
    to three 64-bit stores, causing an unaligned access panic.

    A better fix for the original problem is to ensure that proc_event
    is aligned to 8 bytes here.  We can do that relatively easily by
    arranging to start the struct cn_msg aligned to 8 bytes and then
    offset by 4 bytes.  Doing so means that the immediately following
    proc_event structure is then correctly aligned to 8 bytes.

    The result is that the memset() stores are now aligned, and as an
    added benefit, we can remove the put_unaligned() calls in the code.

    Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0434f1641051d148682321b68ba8108ae9c52c98
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Nov 14 11:21:10 2013 +0300

    isdnloop: use strlcpy() instead of strcpy()

    [ Upstream commit f9a23c84486ed350cce7bb1b2828abd1f6658796 ]

    These strings come from a copy_from_user() and there is no way to be
    sure they are NUL terminated.

    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6f3fa48929dbcdcf3dd92507dbe32347645a969
Author: Nikolay Aleksandrov <nikolay@redhat.com>
Date:   Wed Nov 13 17:07:46 2013 +0100

    bonding: fix two race conditions in bond_store_updelay/downdelay

    [ Upstream commit b869ccfab1e324507fa3596e3e1308444fb68227 ]

    This patch fixes two race conditions between bond_store_updelay/downdelay
    and bond_store_miimon which could lead to division by zero as miimon can
    be set to 0 while either updelay/downdelay are being set and thus miss the
    zero check in the beginning, the zero div happens because updelay/downdelay
    are stored as new_value / bond->params.miimon. Use rtnl to synchronize with
    miimon setting.

    Signed-off-by: Nikolay Aleksandrov <nikolay@redhat.com>
    CC: Jay Vosburgh <fubar@us.ibm.com>
    CC: Andy Gospodarek <andy@greyhouse.net>
    CC: Veaceslav Falico <vfalico@redhat.com>
    Acked-by: Veaceslav Falico <vfalico@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ea5140565ea1e0dd9fcb20d9a66b76bc83399f3
Author: Jukka Rissanen <jukka.rissanen@linux.intel.com>
Date:   Wed Nov 13 11:03:39 2013 +0200

    6lowpan: Uncompression of traffic class field was incorrect

    [ Upstream commit 1188f05497e7bd2f2614b99c54adfbe7413d5749 ]

    If priority/traffic class field in IPv6 header is set (seen when
    using ssh), the uncompression sets the TC and Flow fields incorrectly.

    Example:

    This is IPv6 header of a sent packet. Note the priority/TC (=1) in
    the first byte.

    00000000: 61 00 00 00 00 2c 06 40 fe 80 00 00 00 00 00 00
    00000010: 02 02 72 ff fe c6 42 10 fe 80 00 00 00 00 00 00
    00000020: 02 1e ab ff fe 4c 52 57

    This gets compressed like this in the sending side

    00000000: 72 31 04 06 02 1e ab ff fe 4c 52 57 ec c2 00 16
    00000010: aa 2d fe 92 86 4e be c6 ....

    In the receiving end, the packet gets uncompressed to this
    IPv6 header

    00000000: 60 06 06 02 00 2a 1e 40 fe 80 00 00 00 00 00 00
    00000010: 02 02 72 ff fe c6 42 10 fe 80 00 00 00 00 00 00
    00000020: ab ff fe 4c 52 57 ec c2

    First four bytes are set incorrectly and we have also lost
    two bytes from destination address.

    The fix is to switch the case values in switch statement
    when checking the TC field.

    Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c22fc04e124631a59b4cca931b689841e38ff155
Author: Veaceslav Falico <vfalico@redhat.com>
Date:   Tue Nov 12 15:37:40 2013 +0100

    bonding: don't permit to use ARP monitoring in 802.3ad mode

    [ Upstream commit ec9f1d15db8185f63a2c3143dc1e90ba18541b08 ]

    Currently the ARP monitoring is not supported with 802.3ad, and it's
    prohibited to use it via the module params.

    However we still can set it afterwards via sysfs, cause we only check for
    *LB modes there.

    To fix this - add a check for 802.3ad mode in bonding_store_arp_interval.

    Signed-off-by: Veaceslav Falico <vfalico@redhat.com>
    CC: Jay Vosburgh <fubar@us.ibm.com>
    CC: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4dd7a52b53ab79e8990bb295a2907d47345d2fa2
Author: Daniel Borkmann <dborkman@redhat.com>
Date:   Mon Nov 11 12:20:32 2013 +0100

    random32: fix off-by-one in seeding requirement

    [ Upstream commit 51c37a70aaa3f95773af560e6db3073520513912 ]

    For properly initialising the Tausworthe generator [1], we have
    a strict seeding requirement, that is, s1 > 1, s2 > 7, s3 > 15.

    Commit 697f8d0348 ("random32: seeding improvement") introduced
    a __seed() function that imposes boundary checks proposed by the
    errata paper [2] to properly ensure above conditions.

    However, we're off by one, as the function is implemented as:
    "return (x < m) ? x + m : x;", and called with __seed(X, 1),
    __seed(X, 7), __seed(X, 15). Thus, an unwanted seed of 1, 7, 15
    would be possible, whereas the lower boundary should actually
    be of at least 2, 8, 16, just as GSL does. Fix this, as otherwise
    an initialization with an unwanted seed could have the effect
    that Tausworthe's PRNG properties cannot not be ensured.

    Note that this PRNG is *not* used for cryptography in the kernel.

     [1] http://www.iro.umontreal.ca/~lecuyer/myftp/papers/tausme.ps
     [2] http://www.iro.umontreal.ca/~lecuyer/myftp/papers/tausme2.ps

    Joint work with Hannes Frederic Sowa.

    Fixes: 697f8d0348a6 ("random32: seeding improvement")
    Cc: Stephen Hemminger <stephen@networkplumber.org>
    Cc: Florian Weimer <fweimer@redhat.com>
    Cc: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
    Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bb2cc8ea8b76426dcb60b95d27d599cb426bcf9
Author: Duan Jiong <duanj.fnst@cn.fujitsu.com>
Date:   Fri Nov 8 09:56:53 2013 +0800

    ipv6: use rt6_get_dflt_router to get default router in rt6_route_rcv

    [ Upstream commit f104a567e673f382b09542a8dc3500aa689957b4 ]

    As the rfc 4191 said, the Router Preference and Lifetime values in a
    ::/0 Route Information Option should override the preference and lifetime
    values in the Router Advertisement header. But when the kernel deals with
    a ::/0 Route Information Option, the rt6_get_route_info() always return
    NULL, that means that overriding will not happen, because those default
    routers were added without flag RTF_ROUTEINFO in rt6_add_dflt_router().

    In order to deal with that condition, we should call rt6_get_dflt_router
    when the prefix length is 0.

    Signed-off-by: Duan Jiong <duanj.fnst@cn.fujitsu.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c137ba1634fce3c456a3e9983f70868708c13711
Author: Andreas Henriksson <andreas@fatal.se>
Date:   Thu Nov 7 18:26:38 2013 +0100

    net: Fix "ip rule delete table 256"

    [ Upstream commit 13eb2ab2d33c57ebddc57437a7d341995fc9138c ]

    When trying to delete a table >= 256 using iproute2 the local table
    will be deleted.
    The table id is specified as a netlink attribute when it needs more then
    8 bits and iproute2 then sets the table field to RT_TABLE_UNSPEC (0).
    Preconditions to matching the table id in the rule delete code
    doesn't seem to take the "table id in netlink attribute" into condition
    so the frh_get_table helper function never gets to do its job when
    matching against current rule.
    Use the helper function twice instead of peaking at the table value directly.

    Originally reported at: http://bugs.debian.org/724783

    Reported-by: Nicolas HICHER <nhicher@avencall.com>
    Signed-off-by: Andreas Henriksson <andreas@fatal.se>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
V10i