1. 14 Aug, 2014 9 commits
    • Linus Torvalds's avatar
      Merge branch 'for-3.17/drivers' of git://git.kernel.dk/linux-block · d429a363
      Linus Torvalds authored
      Pull block driver changes from Jens Axboe:
       "Nothing out of the ordinary here, this pull request contains:
      
         - A big round of fixes for bcache from Kent Overstreet, Slava Pestov,
           and Surbhi Palande.  No new features, just a lot of fixes.
      
         - The usual round of drbd updates from Andreas Gruenbacher, Lars
           Ellenberg, and Philipp Reisner.
      
         - virtio_blk was converted to blk-mq back in 3.13, but now Ming Lei
           has taken it one step further and added support for actually using
           more than one queue.
      
         - Addition of an explicit SG_FLAG_Q_AT_HEAD for block/bsg, to
           compliment the the default behavior of adding to the tail of the
           queue.  From Douglas Gilbert"
      
      * 'for-3.17/drivers' of git://git.kernel.dk/linux-block: (86 commits)
        bcache: Drop unneeded blk_sync_queue() calls
        bcache: add mutex lock for bch_is_open
        bcache: Correct printing of btree_gc_max_duration_ms
        bcache: try to set b->parent properly
        bcache: fix memory corruption in init error path
        bcache: fix crash with incomplete cache set
        bcache: Fix more early shutdown bugs
        bcache: fix use-after-free in btree_gc_coalesce()
        bcache: Fix an infinite loop in journal replay
        bcache: fix crash in bcache_btree_node_alloc_fail tracepoint
        bcache: bcache_write tracepoint was crashing
        bcache: fix typo in bch_bkey_equal_header
        bcache: Allocate bounce buffers with GFP_NOWAIT
        bcache: Make sure to pass GFP_WAIT to mempool_alloc()
        bcache: fix uninterruptible sleep in writeback thread
        bcache: wait for buckets when allocating new btree root
        bcache: fix crash on shutdown in passthrough mode
        bcache: fix lockdep warnings on shutdown
        bcache allocator: send discards with correct size
        bcache: Fix to remove the rcu_sched stalls.
        ...
      d429a363
    • Linus Torvalds's avatar
      Merge branch 'for-3.17/core' of git://git.kernel.dk/linux-block · 4a319a49
      Linus Torvalds authored
      Pull block core bits from Jens Axboe:
       "Small round this time, after the massive blk-mq dump for 3.16.  This
        pull request contains:
      
         - Fixes for max_sectors overflow in ioctls from Akinoby Mita.
      
         - Partition off-by-one bug fix in aix partitions from Dan Carpenter.
      
         - Various small partition cleanups from Fabian Frederick.
      
         - Fix for the block integrity code sometimes returning the wrong
           vector count from Gu Zheng.
      
         - Cleanup an re-org of the blk-mq queue enter/exit percpu counters
           from Tejun.  Dependent on the percpu pull for 3.17 (which was in
           the block tree too), that you have already pulled in.
      
         - A blkcg oops fix, also from Tejun"
      
      * 'for-3.17/core' of git://git.kernel.dk/linux-block:
        partitions: aix.c: off by one bug
        blkcg: don't call into policy draining if root_blkg is already gone
        Revert "bio: modify __bio_add_page() to accept pages that don't start a new segment"
        bio: modify __bio_add_page() to accept pages that don't start a new segment
        block: fix SG_[GS]ET_RESERVED_SIZE ioctl when max_sectors is huge
        block: fix BLKSECTGET ioctl when max_sectors is greater than USHRT_MAX
        block/partitions/efi.c: kerneldoc fixing
        block/partitions/msdos.c: code clean-up
        block/partitions/amiga.c: replace nolevel printk by pr_err
        block/partitions/aix.c: replace count*size kzalloc by kcalloc
        bio-integrity: add "bip_max_vcnt" into struct bio_integrity_payload
        blk-mq: use percpu_ref for mq usage count
        blk-mq: collapse __blk_mq_drain_queue() into blk_mq_freeze_queue()
        blk-mq: decouble blk-mq freezing from generic bypassing
        block, blk-mq: draining can't be skipped even if bypass_depth was non-zero
        blk-mq: fix a memory ordering bug in blk_mq_queue_enter()
      4a319a49
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · f0094b28
      Linus Torvalds authored
      Pull networking fixes from David Miller:
       "Several networking final fixes and tidies for the merge window:
      
         1) Changes during the merge window unintentionally took away the
            ability to build bluetooth modular, fix from Geert Uytterhoeven.
      
         2) Several phy_node reference count bug fixes from Uwe Kleine-König.
      
         3) Fix ucc_geth build failures, also from Uwe Kleine-König.
      
         4) Fix klog false positivies when netlink messages go to network
            taps, by properly resetting the network header.  Fix from Daniel
            Borkmann.
      
         5) Sizing estimate of VF netlink messages is too small, from Jiri
            Benc.
      
         6) New APM X-Gene SoC ethernet driver, from Iyappan Subramanian.
      
         7) VLAN untagging is erroneously dependent upon whether the VLAN
            module is loaded or not, but there are generic dependencies that
            matter wrt what can be expected as the SKB enters the stack.
            Make the basic untagging generic code, and do it unconditionally.
            From Vlad Yasevich.
      
         8) xen-netfront only has so many slots in it's transmit queue so
            linearize packets that have too many frags.  From Zoltan Kiss.
      
         9) Fix suspend/resume PHY handling in bcmgenet driver, from Florian
            Fainelli"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (55 commits)
        net: bcmgenet: correctly resume adapter from Wake-on-LAN
        net: bcmgenet: update UMAC_CMD only when link is detected
        net: bcmgenet: correctly suspend and resume PHY device
        net: bcmgenet: request and enable main clock earlier
        net: ethernet: myricom: myri10ge: myri10ge.c: Cleaning up missing null-terminate after strncpy call
        xen-netfront: Fix handling packets on compound pages with skb_linearize
        net: fec: Support phys probed from devicetree and fixed-link
        smsc: replace WARN_ON() with WARN_ON_SMP()
        xen-netback: Don't deschedule NAPI when carrier off
        net: ethernet: qlogic: qlcnic: Remove duplicate object file from Makefile
        wan: wanxl: Remove typedefs from struct names
        m68k/atari: EtherNEC - ethernet support (ne)
        net: ethernet: ti: cpmac.c: Cleaning up missing null-terminate after strncpy call
        hdlc: Remove typedefs from struct names
        airo_cs: Remove typedef local_info_t
        atmel: Remove typedef atmel_priv_ioctl
        com20020_cs: Remove typedef com20020_dev_t
        ethernet: amd: Remove typedef local_info_t
        net: Always untag vlan-tagged traffic on input.
        drivers: net: Add APM X-Gene SoC ethernet driver support.
        ...
      f0094b28
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 13b102bf
      Linus Torvalds authored
      Pull Sparc fixes from David Miller:
       "Sparc bug fixes, one of which was preventing successful SMP boots with
        mainline"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc64: Fix pcr_ops initialization and usage bugs.
        sparc64: Do not disable interrupts in nmi_cpu_busy()
        sparc: Hook up seccomp and getrandom system calls.
        sparc: fix decimal printf format specifiers prefixed with 0x
      13b102bf
    • Linus Torvalds's avatar
      Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 81c02a21
      Linus Torvalds authored
      Pull x86/apic updates from Thomas Gleixner:
       "This is a major overhaul to the x86 apic subsystem consisting of the
        following parts:
      
         - Remove obsolete APIC driver abstractions (David Rientjes)
      
         - Use the irqdomain facilities to dynamically allocate IRQs for
           IOAPICs.  This is a prerequisite to enable IOAPIC hotplug support,
           and it also frees up wasted vectors (Jiang Liu)
      
         - Misc fixlets.
      
        Despite the hickup in Ingos previous pull request - caused by the
        missing fixup for the suspend/resume issue reported by Borislav - I
        strongly recommend that this update finds its way into 3.17.  Some
        history for you:
      
        This is preparatory work for physical IOAPIC hotplug.  The first
        attempt to support this was done by Yinghai and I shot it down because
        it just added another layer of obscurity and complexity to the already
        existing mess without tackling the underlying shortcomings of the
        current implementation.
      
        After quite some on- and offlist discussions, I requested that the
        design of this functionality must use generic infrastructure, i.e.
        irq domains, which provide all the mechanisms to dynamically map linux
        interrupt numbers to physical interrupts.
      
        Jiang picked up the idea and did a great job of consolidating the
        existing interfaces to manage the x86 (IOAPIC) interrupt system by
        utilizing irq domains.
      
        The testing in tip, Linux-next and inside of Intel on various machines
        did not unearth any oddities until Borislav exposed it to one of his
        oddball machines.  The issue was resolved quickly, but unfortunately
        the fix fell through the cracks and did not hit the tip tree before
        Ingo sent the pull request.  Not entirely Ingos fault, I also assumed
        that the fix was already merged when Ingo asked me whether he could
        send it.
      
        Nevertheless this work has a proper design, has undergone several
        rounds of review and the final fallout after applying it to tip and
        integrating it into Linux-next has been more than moderate.  It's the
        ground work not only for IOAPIC hotplug, it will also allow us to move
        the lowlevel vector allocation into the irqdomain hierarchy, which
        will benefit other architectures as well.  Patches are posted already,
        but they are on hold for two weeks, see below.
      
        I really appreciate the competence and responsiveness Jiang has shown
        in course of this endavour.  So I'm sure that any fallout of this will
        be addressed in a timely manner.
      
        FYI, I'm vanishing for 2 weeks into my annual kids summer camp kitchen
        duty^Wvacation, while you folks are drooling at KS/LinuxCon :) But HPA
        will have a look at the hopefully zero fallout until I'm back"
      
      * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (53 commits)
        x86, irq, PCI: Keep IRQ assignment for PCI devices during suspend/hibernation
        x86/apic/vsmp: Make is_vsmp_box() static
        x86, apic: Remove enable_apic_mode callback
        x86, apic: Remove setup_portio_remap callback
        x86, apic: Remove multi_timer_check callback
        x86, apic: Replace noop_check_apicid_used
        x86, apic: Remove check_apicid_present callback
        x86, apic: Remove mps_oem_check callback
        x86, apic: Remove smp_callin_clear_local_apic callback
        x86, apic: Replace trampoline physical addresses with defaults
        x86, apic: Remove x86_32_numa_cpu_node callback
        x86: intel-mid: Use the new io_apic interfaces
        x86, vsmp: Remove is_vsmp_box() from apic_is_clustered_box()
        x86, irq: Clean up irqdomain transition code
        x86, irq, devicetree: Release IOAPIC pin when PCI device is disabled
        x86, irq, SFI: Release IOAPIC pin when PCI device is disabled
        x86, irq, mpparse: Release IOAPIC pin when PCI device is disabled
        x86, irq, ACPI: Release IOAPIC pin when PCI device is disabled
        x86, irq: Introduce helper functions to release IOAPIC pin
        x86, irq: Simplify the way to handle ISA IRQ
        ...
      81c02a21
    • Linus Torvalds's avatar
      Merge branch 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · d27c0d90
      Linus Torvalds authored
      Pull x86/efix fixes from Peter Anvin:
       "Two EFI-related Kconfig changes, which happen to touch immediately
        adjacent lines in Kconfig and thus collapse to a single patch"
      
      * 'x86-efi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/efi: Enforce CONFIG_RELOCATABLE for EFI boot stub
        x86/efi: Fix 3DNow optimization build failure in EFI stub
      d27c0d90
    • Linus Torvalds's avatar
      Merge branch 'x86-xsave-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7453f33b
      Linus Torvalds authored
      Pull x86/xsave changes from Peter Anvin:
       "This is a patchset to support the XSAVES instruction required to
        support context switch of supervisor-only features in upcoming
        silicon.
      
        This patchset missed the 3.16 merge window, which is why it is based
        on 3.15-rc7"
      
      * 'x86-xsave-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, xsave: Add forgotten inline annotation
        x86/xsaves: Clean up code in xstate offsets computation in xsave area
        x86/xsave: Make it clear that the XSAVE macros use (%edi)/(%rdi)
        Define kernel API to get address of each state in xsave area
        x86/xsaves: Enable xsaves/xrstors
        x86/xsaves: Call booting time xsaves and xrstors in setup_init_fpu_buf
        x86/xsaves: Save xstate to task's xsave area in __save_fpu during booting time
        x86/xsaves: Add xsaves and xrstors support for booting time
        x86/xsaves: Clear reserved bits in xsave header
        x86/xsaves: Use xsave/xrstor for saving and restoring user space context
        x86/xsaves: Use xsaves/xrstors for context switch
        x86/xsaves: Use xsaves/xrstors to save and restore xsave area
        x86/xsaves: Define a macro for handling xsave/xrstor instruction fault
        x86/xsaves: Define macros for xsave instructions
        x86/xsaves: Change compacted format xsave area header
        x86/alternative: Add alternative_input_2 to support alternative with two features and input
        x86/xsaves: Add a kernel parameter noxsaves to disable xsaves/xrstors
      7453f33b
    • Linus Torvalds's avatar
      Merge tag 'metag-for-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag · fd1cf905
      Linus Torvalds authored
      Pull metag architecture updates from James Hogan:
       "Just a couple of minor static analysis fixes, removal of a NULL check
        that should never happen, and fix an error check where an unsigned
        value was being checked to see if it was negative"
      
      * tag 'metag-for-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag:
        metag: cachepart: Fix failure check
        metag: hugetlbpage: Remove null pointer checks that could never happen
      fd1cf905
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-3.17-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · 06b8ab55
      Linus Torvalds authored
      Pull NFS client updates from Trond Myklebust:
       "Highlights include:
      
         - stable fix for a bug in nfs3_list_one_acl()
         - speed up NFS path walks by supporting LOOKUP_RCU
         - more read/write code cleanups
         - pNFS fixes for layout return on close
         - fixes for the RCU handling in the rpcsec_gss code
         - more NFS/RDMA fixes"
      
      * tag 'nfs-for-3.17-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (79 commits)
        nfs: reject changes to resvport and sharecache during remount
        NFS: Avoid infinite loop when RELEASE_LOCKOWNER getting expired error
        SUNRPC: remove all refcounting of groupinfo from rpcauth_lookupcred
        NFS: fix two problems in lookup_revalidate in RCU-walk
        NFS: allow lockless access to access_cache
        NFS: teach nfs_lookup_verify_inode to handle LOOKUP_RCU
        NFS: teach nfs_neg_need_reval to understand LOOKUP_RCU
        NFS: support RCU_WALK in nfs_permission()
        sunrpc/auth: allow lockless (rcu) lookup of credential cache.
        NFS: prepare for RCU-walk support but pushing tests later in code.
        NFS: nfs4_lookup_revalidate: only evaluate parent if it will be used.
        NFS: add checks for returned value of try_module_get()
        nfs: clear_request_commit while holding i_lock
        pnfs: add pnfs_put_lseg_async
        pnfs: find swapped pages on pnfs commit lists too
        nfs: fix comment and add warn_on for PG_INODE_REF
        nfs: check wait_on_bit_lock err in page_group_lock
        sunrpc: remove "ec" argument from encrypt_v2 operation
        sunrpc: clean up sparse endianness warnings in gss_krb5_wrap.c
        sunrpc: clean up sparse endianness warnings in gss_krb5_seal.c
        ...
      06b8ab55
  2. 13 Aug, 2014 4 commits
    • Linus Torvalds's avatar
      Merge tag 'xfs-for-linus-3.17-rc1' of git://oss.sgi.com/xfs/xfs · dc1cc851
      Linus Torvalds authored
      Pull xfs update from Dave Chinner:
       "This update contains:
         - conversion of the XFS core to pass negative error numbers
         - restructing of core XFS code that is shared with userspace to
           fs/xfs/libxfs
         - introduction of sysfs interface for XFS
         - bulkstat refactoring
         - demand driven speculative preallocation removal
         - XFS now always requires 64 bit sectors to be configured
         - metadata verifier changes to ensure CRCs are calculated during log
           recovery
         - various minor code cleanups
         - miscellaneous bug fixes
      
        The diffstat is kind of noisy because of the restructuring of the code
        to make kernel/userspace code sharing simpler, along with the XFS wide
        change to use the standard negative error return convention (at last!)"
      
      * tag 'xfs-for-linus-3.17-rc1' of git://oss.sgi.com/xfs/xfs: (45 commits)
        xfs: fix coccinelle warnings
        xfs: flush both inodes in xfs_swap_extents
        xfs: fix swapext ilock deadlock
        xfs: kill xfs_vnode.h
        xfs: kill VN_MAPPED
        xfs: kill VN_CACHED
        xfs: kill VN_DIRTY()
        xfs: dquot recovery needs verifiers
        xfs: quotacheck leaves dquot buffers without verifiers
        xfs: ensure verifiers are attached to recovered buffers
        xfs: catch buffers written without verifiers attached
        xfs: avoid false quotacheck after unclean shutdown
        xfs: fix rounding error of fiemap length parameter
        xfs: introduce xfs_bulkstat_ag_ichunk
        xfs: require 64-bit sector_t
        xfs: fix uflags detection at xfs_fs_rm_xquota
        xfs: remove XFS_IS_OQUOTA_ON macros
        xfs: tidy up xfs_set_inode32
        xfs: allow inode allocations in post-growfs disk space
        xfs: mark xfs_qm_quotacheck as static
        ...
      dc1cc851
    • Linus Torvalds's avatar
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · cec99709
      Linus Torvalds authored
      Pull quota, reiserfs, UDF updates from Jan Kara:
       "Scalability improvements for quota, a few reiserfs fixes, and couple
        of misc cleanups (udf, ext2)"
      
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
        reiserfs: Fix use after free in journal teardown
        reiserfs: fix corruption introduced by balance_leaf refactor
        udf: avoid redundant memcpy when writing data in ICB
        fs/udf: re-use hex_asc_upper_{hi,lo} macros
        fs/quota: kernel-doc warning fixes
        udf: use linux/uaccess.h
        fs/ext2/super.c: Drop memory allocation cast
        quota: remove dqptr_sem
        quota: simplify remove_inode_dquot_ref()
        quota: avoid unnecessary dqget()/dqput() calls
        quota: protect Q_GETFMT by dqonoff_mutex
      cec99709
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client · 8d2d441a
      Linus Torvalds authored
      Pull Ceph updates from Sage Weil:
       "There is a lot of refactoring and hardening of the libceph and rbd
        code here from Ilya that fix various smaller bugs, and a few more
        important fixes with clone overlap.  The main fix is a critical change
        to the request_fn handling to not sleep that was exposed by the recent
        mutex changes (which will also go to the 3.16 stable series).
      
        Yan Zheng has several fixes in here for CephFS fixing ACL handling,
        time stamps, and request resends when the MDS restarts.
      
        Finally, there are a few cleanups from Himangi Saraogi based on
        Coccinelle"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (39 commits)
        libceph: set last_piece in ceph_msg_data_pages_cursor_init() correctly
        rbd: remove extra newlines from rbd_warn() messages
        rbd: allocate img_request with GFP_NOIO instead GFP_ATOMIC
        rbd: rework rbd_request_fn()
        ceph: fix kick_requests()
        ceph: fix append mode write
        ceph: fix sizeof(struct tYpO *) typo
        ceph: remove redundant memset(0)
        rbd: take snap_id into account when reading in parent info
        rbd: do not read in parent info before snap context
        rbd: update mapping size only on refresh
        rbd: harden rbd_dev_refresh() and callers a bit
        rbd: split rbd_dev_spec_update() into two functions
        rbd: remove unnecessary asserts in rbd_dev_image_probe()
        rbd: introduce rbd_dev_header_info()
        rbd: show the entire chain of parent images
        ceph: replace comma with a semicolon
        rbd: use rbd_segment_name_free() instead of kfree()
        ceph: check zero length in ceph_sync_read()
        ceph: reset r_resend_mds after receiving -ESTALE
        ...
      8d2d441a
    • Linus Torvalds's avatar
      Merge tag 'upstream-3.17-rc1' of git://git.infradead.org/linux-ubifs · 89838b80
      Linus Torvalds authored
      Pull UBI/UBIFS changes from Artem Bityutskiy:
       "No significant changes, mostly small fixes here and there.  The more
        important fixes are:
      
         - UBI deleted list items while iterating the list with
           'list_for_each_entry'
         - The UBI block driver did not work properly with very large UBI
           volumes"
      
      * tag 'upstream-3.17-rc1' of git://git.infradead.org/linux-ubifs: (21 commits)
        UBIFS: Add log overlap assertions
        Revert "UBIFS: add a log overlap assertion"
        UBI: bugfix in ubi_wl_flush()
        UBI: block: Avoid disk size integer overflow
        UBI: block: Set disk_capacity out of the mutex
        UBI: block: Make ubiblock_resize return something
        UBIFS: add a log overlap assertion
        UBIFS: remove unnecessary check
        UBIFS: remove mst_mutex
        UBIFS: kernel-doc warning fix
        UBI: init_volumes: Ignore volumes with no LEBs
        UBIFS: replace seq_printf by seq_puts
        UBIFS: replace count*size kzalloc by kcalloc
        UBIFS: kernel-doc warning fix
        UBIFS: fix error path in create_default_filesystem()
        UBIFS: fix spelling of "scanned"
        UBIFS: fix some comments
        UBIFS: remove useless @ecc in struct ubifs_scan_leb
        UBIFS: remove useless statements
        UBIFS: Add missing break statements in dbg_chk_pnode()
        ...
      89838b80
  3. 12 Aug, 2014 3 commits
    • Jan Kara's avatar
      reiserfs: Fix use after free in journal teardown · 01777836
      Jan Kara authored
      If do_journal_release() races with do_journal_end() which requeues
      delayed works for transaction flushing, we can leave work items for
      flushing outstanding transactions queued while freeing them. That
      results in use after free and possible crash in run_timers_softirq().
      
      Fix the problem by not requeueing works if superblock is being shut down
      (MS_ACTIVE not set) and using cancel_delayed_work_sync() in
      do_journal_release().
      
      CC: stable@vger.kernel.org
      Signed-off-by: default avatarJan Kara <jack@suse.cz>
      01777836
    • David S. Miller's avatar
      sparc64: Fix pcr_ops initialization and usage bugs. · 8bccf5b3
      David S. Miller authored
      Christopher reports that perf_event_print_debug() can crash in uniprocessor
      builds.  The crash is due to pcr_ops being NULL.
      
      This happens because pcr_arch_init() is only invoked by smp_cpus_done() which
      only executes in SMP builds.
      
      init_hw_perf_events() is closely intertwined with pcr_ops being setup properly,
      therefore:
      
      1) Call pcr_arch_init() early on from init_hw_perf_events(), instead of
         from smp_cpus_done().
      
      2) Do not hook up a PMU type if pcr_ops is NULL after pcr_arch_init().
      
      3) Move init_hw_perf_events to a later initcall so that it we will be
         sure to invoke pcr_arch_init() after all cpus are brought up.
      
      Finally, guard the one naked sequence of pcr_ops dereferences in
      __global_pmu_self() with an appropriate NULL check.
      Reported-by: default avatarChristopher Alexander Tobias Schulze <cat.schulze@alice-dsl.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8bccf5b3
    • David S. Miller's avatar
      sparc64: Do not disable interrupts in nmi_cpu_busy() · 58556104
      David S. Miller authored
      nmi_cpu_busy() is a SMP function call that just makes sure that all of the
      cpus are spinning using cpu cycles while the NMI test runs.
      
      It does not need to disable IRQs because we just care about NMIs executing
      which will even with 'normal' IRQs disabled.
      
      It is not legal to enable hard IRQs in a SMP cross call, in fact this bug
      triggers the BUG check in irq_work_run_list():
      
      	BUG_ON(!irqs_disabled());
      
      Because now irq_work_run() is invoked from the tail of
      generic_smp_call_function_single_interrupt().
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      58556104
  4. 11 Aug, 2014 24 commits
    • David S. Miller's avatar
      Merge branch 'bcmgenet' · 61dac43e
      David S. Miller authored
      Florian Fainelli says:
      
      ====================
      net: bcmgenet: Wake-on-LAN and suspend fixes
      
      This patch series fixes some mistakes that were introduced during the driver
      changes adding support suspend/resume and Wake-on-LAN.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      61dac43e
    • Florian Fainelli's avatar
      net: bcmgenet: correctly resume adapter from Wake-on-LAN · 98bb7399
      Florian Fainelli authored
      In case we configured the adapter to be a wake up source from
      Wake-on-LAN, but we never actually woke up using Wake-on-LAN, we will
      leave the adapter in MagicPacket matching mode, which prevents any other
      type of packets from reaching the RX engine. Fix this by calling
      bcmgenet_power_up() with GENET_POWER_WOL_MAGIC to restore the adapter
      configuration in bcmgenet_resume().
      
      The second problem we had was an imbalanced clock disabling in
      bcmgenet_wol_resume(), the Wake-on-LAN slow clock is only enabled in
      bcmgenet_suspend() if we configured Wake-on-LAN, yet we unconditionally
      disabled the clock in bcmgenet_wol_resume().
      
      Fixes: 8c90db72 ("net: bcmgenet: suspend and resume from Wake-on-LAN")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      98bb7399
    • Florian Fainelli's avatar
      net: bcmgenet: update UMAC_CMD only when link is detected · c677ba8b
      Florian Fainelli authored
      When we bring the interface down, phy_stop() will schedule the PHY state
      machine to call our link adjustment callback. By the time we do so, we
      may have clock gated off the GENET hardware block, and this will cause
      bus errors to happen in bcmgenet_mii_setup():
      
      Make sure that we only touch the UMAC_CMD register when there is an
      actual link. This is safe to do for two reasons:
      
      - updating the Ethernet MAC registers only make sense when a physical
        link is present
      - the PHY library state machine first set phydev->link = 0 before
        invoking phydev->adjust_link in the PHY_HALTED case
      
      Fixes: 24052408 ("net: bcmgenet: only update UMAC_CMD if something changed")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c677ba8b
    • Florian Fainelli's avatar
      net: bcmgenet: correctly suspend and resume PHY device · cc013fb4
      Florian Fainelli authored
      Make sure that we properly suspend and resume the PHY device when we
      enter low power modes. We had two calls to bcmgenet_mii_reset() which
      will issue a software-reset to the PHY without using the PHY library,
      get rid of them since they are completely bogus and mess up with the PHY
      library state. Make sure that we reset the PHY library cached values
      (link, pause and duplex) to allow the link adjustment callback to be
      invoked when needed.
      
      Fixes: b6e978e5 ("net: bcmgenet: add suspend/resume callbacks")
      Fixes: 1c1008c7 ("net: bcmgenet: add main driver file")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cc013fb4
    • Florian Fainelli's avatar
      net: bcmgenet: request and enable main clock earlier · e4a60a93
      Florian Fainelli authored
      bcmgenet_set_hw_params() will read the hardware version and compare it
      with the one we are getting from Device Tree. Due to the clock being
      enabled too late, bcmgenet_set_hw_params() will cause bus errors since
      the GENET hardware block is still gated off by the time
      bcmgenet_set_hw_params() is called, this will also make us fail the
      version check since we will read the value 0 from the hardware.
      
      Fix this by requesting the clock before the first piece of code that
      needs to access hardware register.
      
      Fixes: 1c1008c7 ("net: bcmgenet: add main driver file")
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e4a60a93
    • Rickard Strandqvist's avatar
      8dff81e8
    • Zoltan Kiss's avatar
      xen-netfront: Fix handling packets on compound pages with skb_linearize · 97a6d1bb
      Zoltan Kiss authored
      There is a long known problem with the netfront/netback interface: if the guest
      tries to send a packet which constitues more than MAX_SKB_FRAGS + 1 ring slots,
      it gets dropped. The reason is that netback maps these slots to a frag in the
      frags array, which is limited by size. Having so many slots can occur since
      compound pages were introduced, as the ring protocol slice them up into
      individual (non-compound) page aligned slots. The theoretical worst case
      scenario looks like this (note, skbs are limited to 64 Kb here):
      linear buffer: at most PAGE_SIZE - 17 * 2 bytes, overlapping page boundary,
      using 2 slots
      first 15 frags: 1 + PAGE_SIZE + 1 bytes long, first and last bytes are at the
      end and the beginning of a page, therefore they use 3 * 15 = 45 slots
      last 2 frags: 1 + 1 bytes, overlapping page boundary, 2 * 2 = 4 slots
      Although I don't think this 51 slots skb can really happen, we need a solution
      which can deal with every scenario. In real life there is only a few slots
      overdue, but usually it causes the TCP stream to be blocked, as the retry will
      most likely have the same buffer layout.
      This patch solves this problem by linearizing the packet. This is not the
      fastest way, and it can fail much easier as it tries to allocate a big linear
      area for the whole packet, but probably easier by an order of magnitude than
      anything else. Probably this code path is not touched very frequently anyway.
      Signed-off-by: default avatarZoltan Kiss <zoltan.kiss@citrix.com>
      Cc: Wei Liu <wei.liu2@citrix.com>
      Cc: Ian Campbell <Ian.Campbell@citrix.com>
      Cc: Paul Durrant <paul.durrant@citrix.com>
      Cc: netdev@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Cc: xen-devel@lists.xenproject.org
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      97a6d1bb
    • Uwe Kleine-König's avatar
      net: fec: Support phys probed from devicetree and fixed-link · 407066f8
      Uwe Kleine-König authored
      This adds support for specifying the phy to be used with the fec in the
      devicetree using the standard phy-handle property and also supports
      fixed-link.
      Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
      Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      407066f8
    • Sanjeev Sharma's avatar
      smsc: replace WARN_ON() with WARN_ON_SMP() · 200d7db7
      Sanjeev Sharma authored
      spin_is_locked() always return false in uniprocessor configuration and therefore it
      would be advise to repalce with WARN_ON_SMP().
      Signed-off-by: default avatarSanjeev Sharma <Sanjeev_Sharma@mentor.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      200d7db7
    • Zoltan Kiss's avatar
      xen-netback: Don't deschedule NAPI when carrier off · 2561cc15
      Zoltan Kiss authored
      In the patch called "xen-netback: Turn off the carrier if the guest is not able
      to receive" NAPI was descheduled when the carrier was set off. That's
      not what most of the drivers do, and we don't have any specific reason to do so
      as well, so revert that change.
      Signed-off-by: default avatarZoltan Kiss <zoltan.kiss@citrix.com>
      Cc: netdev@vger.kernel.org
      Cc: linux-kernel@vger.kernel.org
      Cc: xen-devel@lists.xenproject.org
      Acked-by: default avatarWei Liu <wei.liu2@citrix.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2561cc15
    • H. Peter Anvin's avatar
      Merge tag 'efi-urgent' into x86/efi · 9e13bcf7
      H. Peter Anvin authored
       * Enforce CONFIG_RELOCATABLE for the x86 EFI boot stub, otherwise
         it's possible to overwrite random pieces of unallocated memory during
         kernel decompression, leading to machine resets.
      
      Resolved Conflicts:
      	arch/x86/Kconfig
      Signed-off-by: default avatarH. Peter Anvin <hpa@linux.intel.com>
      9e13bcf7
    • Andreas Ruprecht's avatar
      net: ethernet: qlogic: qlcnic: Remove duplicate object file from Makefile · 7a6cdb8c
      Andreas Ruprecht authored
      In the Makefile, qlcnic_minidump.o is included twice in the list of
      object files linked into qlcnic.o.
      
      This change removes the superfluous include.
      Signed-off-by: default avatarAndreas Ruprecht <rupran@einserver.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7a6cdb8c
    • Himangi Saraogi's avatar
      wan: wanxl: Remove typedefs from struct names · db569581
      Himangi Saraogi authored
      The Linux kernel coding style guidelines suggest not using typedefs
      for structure types. This patch gets rid of the typedefs for
      port_t, card_status_t and card_t. Also, the names of the structs
      are changed to drop the _t, to make the name look less typedef-like.
      
      The following Coccinelle semantic patch detects two cases and a
      similar one detects the case for card_t.
      
      @tn1@
      type td;
      @@
      
      typedef struct { ... } td;
      
      @script:python tf@
      td << tn1.td;
      tdres;
      @@
      
      coccinelle.tdres = td;
      
      @@
      type tn1.td;
      identifier tf.tdres;
      @@
      
      -typedef
       struct
      +  tdres
         { ... }
      -td
       ;
      
      @@
      type tn1.td;
      identifier tf.tdres;
      @@
      
      -td
      + struct tdres
      Signed-off-by: default avatarHimangi Saraogi <himangi774@gmail.com>
      Acked-by: default avatarJulia Lawall <julia.lawall@lip6.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      db569581
    • Michael Schmitz's avatar
      m68k/atari: EtherNEC - ethernet support (ne) · 65eca28d
      Michael Schmitz authored
      Support for Atari EtherNEC ROM port adapters in ne.c
      Signed-off-by: default avatarMichael Schmitz <schmitz@debian.org>
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      65eca28d
    • Rickard Strandqvist's avatar
      net: ethernet: ti: cpmac.c: Cleaning up missing null-terminate after strncpy call · 9951e048
      Rickard Strandqvist authored
      Added a guaranteed null-terminate after call to strncpy.
      Signed-off-by: default avatarRickard Strandqvist <rickard_strandqvist@spectrumdigital.se>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9951e048
    • Himangi Saraogi's avatar
      hdlc: Remove typedefs from struct names · 3fadb06d
      Himangi Saraogi authored
      The Linux kernel coding style guidelines suggest not using typedefs
      for structure types. This patch gets rid of the typedefs for
      fr_hdr and pvc_device. Also, the names of the structs are changed to
      drop the _t, to make the name look less typedef-like.
      
      The following Coccinelle semantic patch detects the case fr_hdr and a
      similar one detects the case for pvc_device.
      
      @tn1@
      type td;
      @@
      
      typedef struct { ... } td;
      
      @script:python tf@
      td << tn1.td;
      tdres;
      @@
      
      coccinelle.tdres = td;
      
      @@
      type tn1.td;
      identifier tf.tdres;
      @@
      
      -typedef
       struct
      +  tdres
         { ... }
      -td
       ;
      
      @@
      type tn1.td;
      identifier tf.tdres;
      @@
      
      -td
      + struct tdres
      Signed-off-by: default avatarHimangi Saraogi <himangi774@gmail.com>
      Acked-by: default avatarJulia Lawall <julia.lawall@lip6.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3fadb06d
    • Himangi Saraogi's avatar
      airo_cs: Remove typedef local_info_t · 61ecba64
      Himangi Saraogi authored
      The Linux kernel coding style guidelines suggest not using typedefs
      for structure types. This patch gets rid of the typedef for
      local_info_t. Also, the name of the struct is changed to drop the _t,
      to make the name look less typedef-like.
      
      The following Coccinelle semantic patch detects the case:
      
      @tn@
      identifier i;
      type td;
      @@
      
      -typedef
       struct i { ... }
      -td
       ;
      
      @@
      type tn.td;
      identifier tn.i;
      @@
      
      -td
      + struct i
      Signed-off-by: default avatarHimangi Saraogi <himangi774@gmail.com>
      Acked-by: default avatarJulia Lawall <julia.lawall@lip6.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      61ecba64
    • Himangi Saraogi's avatar
      atmel: Remove typedef atmel_priv_ioctl · f0db82a5
      Himangi Saraogi authored
      The Linux kernel coding style guidelines suggest not using typedefs
      for structure types. This patch gets rid of the typedef for
      atmel_priv_ioctl.
      
      The following Coccinelle semantic patch detects the case:
      
      @tn@
      identifier i;
      type td;
      @@
      
      -typedef
       struct i { ... }
      -td
       ;
      
      @@
      type tn.td;
      identifier tn.i;
      @@
      
      -td
      + struct i
      Signed-off-by: default avatarHimangi Saraogi <himangi774@gmail.com>
      Acked-by: default avatarJulia Lawall <julia.lawall@lip6.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f0db82a5
    • Himangi Saraogi's avatar
      com20020_cs: Remove typedef com20020_dev_t · 2dfd2533
      Himangi Saraogi authored
      The Linux kernel coding style guidelines suggest not using typedefs
      for structure types. This patch gets rid of the typedef for
      com20020_dev_t. Also, the name of the struct is changed to drop the
      _t, to make the name look less typedef-like.
      
      The following Coccinelle semantic patch detects the case:
      
      @tn@
      identifier i;
      type td;
      @@
      
      -typedef
       struct i { ... }
      -td
       ;
      
      @@
      type tn.td;
      identifier tn.i;
      @@
      
      -td
      + struct i
      Signed-off-by: default avatarHimangi Saraogi <himangi774@gmail.com>
      Acked-by: default avatarJulia Lawall <julia.lawall@lip6.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2dfd2533
    • Himangi Saraogi's avatar
      ethernet: amd: Remove typedef local_info_t · f8653464
      Himangi Saraogi authored
      The Linux kernel coding style guidelines suggest not using typedefs
      for structure types. This patch gets rid of the typedef for local_info_t.
      Also, the name of the struct is changed to drop the _t, to make the
      name look less typedef-like.
      
      The following Coccinelle semantic patch detects the case:
      
      @tn@
      identifier i;
      type td;
      @@
      
      -typedef
       struct i { ... }
      -td
       ;
      
      @@
      type tn.td;
      identifier tn.i;
      @@
      
      -td
      + struct i
      Signed-off-by: default avatarHimangi Saraogi <himangi774@gmail.com>
      Acked-by: default avatarJulia Lawall <julia.lawall@lip6.fr>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f8653464
    • Vlad Yasevich's avatar
      net: Always untag vlan-tagged traffic on input. · 0d5501c1
      Vlad Yasevich authored
      Currently the functionality to untag traffic on input resides
      as part of the vlan module and is build only when VLAN support
      is enabled in the kernel.  When VLAN is disabled, the function
      vlan_untag() turns into a stub and doesn't really untag the
      packets.  This seems to create an interesting interaction
      between VMs supporting checksum offloading and some network drivers.
      
      There are some drivers that do not allow the user to change
      tx-vlan-offload feature of the driver.  These drivers also seem
      to assume that any VLAN-tagged traffic they transmit will
      have the vlan information in the vlan_tci and not in the vlan
      header already in the skb.  When transmitting skbs that already
      have tagged data with partial checksum set, the checksum doesn't
      appear to be updated correctly by the card thus resulting in a
      failure to establish TCP connections.
      
      The following is a packet trace taken on the receiver where a
      sender is a VM with a VLAN configued.  The host VM is running on
      doest not have VLAN support and the outging interface on the
      host is tg3:
      10:12:43.503055 52:54:00:ae:42:3f > 28:d2:44:7d:c2:de, ethertype 802.1Q
      (0x8100), length 78: vlan 100, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 27243,
      offset 0, flags [DF], proto TCP (6), length 60)
          10.0.100.1.58545 > 10.0.100.10.ircu-2: Flags [S], cksum 0xdc39 (incorrect
      -> 0x48d9), seq 1069378582, win 29200, options [mss 1460,sackOK,TS val
      4294837885 ecr 0,nop,wscale 7], length 0
      10:12:44.505556 52:54:00:ae:42:3f > 28:d2:44:7d:c2:de, ethertype 802.1Q
      (0x8100), length 78: vlan 100, p 0, ethertype IPv4, (tos 0x0, ttl 64, id 27244,
      offset 0, flags [DF], proto TCP (6), length 60)
          10.0.100.1.58545 > 10.0.100.10.ircu-2: Flags [S], cksum 0xdc39 (incorrect
      -> 0x44ee), seq 1069378582, win 29200, options [mss 1460,sackOK,TS val
      4294838888 ecr 0,nop,wscale 7], length 0
      
      This connection finally times out.
      
      I've only access to the TG3 hardware in this configuration thus have
      only tested this with TG3 driver.  There are a lot of other drivers
      that do not permit user changes to vlan acceleration features, and
      I don't know if they all suffere from a similar issue.
      
      The patch attempt to fix this another way.  It moves the vlan header
      stipping code out of the vlan module and always builds it into the
      kernel network core.  This way, even if vlan is not supported on
      a virtualizatoin host, the virtual machines running on top of such
      host will still work with VLANs enabled.
      
      CC: Patrick McHardy <kaber@trash.net>
      CC: Nithin Nayak Sujir <nsujir@broadcom.com>
      CC: Michael Chan <mchan@broadcom.com>
      CC: Jiri Pirko <jiri@resnulli.us>
      Signed-off-by: default avatarVladislav Yasevich <vyasevic@redhat.com>
      Acked-by: default avatarJiri Pirko <jiri@resnulli.us>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0d5501c1
    • David S. Miller's avatar
      Merge branch 'apm_xgene' · 217e606b
      David S. Miller authored
      Iyappan Subramanian says:
      
      ====================
      net: Add APM X-Gene SoC Ethernet driver support
      
      Adding APM X-Gene SoC Ethernet driver.
      
      v10: Address comments from v9 review
      * Documentation: aligned descriptions
      * simplified struct platform_driver initialization
      * fixed xgene_enet_mdio_config error path
      * fixed xgene_enet_init_hw error path
      * removed statistics spin_lock as it is not required
      * changed raw_desc fields to type __le64
      * defined helper macros for set/get raw_descriptor fields
      
      v9: Address comments from v8 review
      * changed to direct read/write, byteswap into raw descriptor
      * fixed xgene_enet_create_desc_ring() error handling
      * removed references to IS_ERR_OR_NULL
      * disabled half duplex on phy_devce supported/advertising
      * simplified xgene_enet_adjust_link() function
      * fixed sparse tool compilation warnings
      
      v8: Address comments from v7 review
      * changed angle bracket to double quotes in header file include.
      
      v7: Address comments from v6 review
      * fixed skb memory leak when dma_map_single fails in xmit.
      
      v6: Address comments from v5 review
      * added basic ethtool support
      * added ndo_get_stats64 call back
      * deleted priting Rx error messages
      * renamed set_bits to xgene_set_bits to fix kbuild error (make ARCH=powerpc)
      
      v5: Address comments from v4 review
      * Documentation: Added phy-handle, reg-names and changed mdio part
      * dtb: Added reg-names supplemental property
      * changed platform_get_resource to platform_get_resource_byname
      * added separate tx/rx set_desc/get_desc functions to do raw_write/raw_read
      * removed set_desc/get_desc table lookup logic
      * added error handling logic based on per packet descriptor bits
      * added software managed Rx packet and error counters
      * added busy wait for register read/writes
      * changed mdio_bus->id to avoid conflict
      * fixed mdio_bus leak in case of mdio_config error
      * changed phy reg hard coded value to MII_BMSR
      * changed phy addr hard coded value to phy_device->addr
      * added paranthesis around macro arguments
      * converted helper macros to inline functions
      * changed use of goto's only to common work such as cleanup
      
      v4: Address comments from v3 review
      * MAINTAINERS: changed status to supported
      * Kconfig: made default to no
      * changed to bool data type wherever applicable
      * cleaned up single bit set and masking code
      * removed statistics counters masking
      * removed unnecessary OOM message printing
      * fixed dma_map_single and dma_unmap_single size parameter
      * changed set bits macro body using new set_bits function
      
      v3: Address comments from v2 review
      * cleaned up set_desc and get_desc functions
      * added dtb mdio node and phy-handle subnode
      * renamed dtb phy-mode to phy-connection-type
      * added of_phy_connect call to connec to PHY
      * added empty line after last local variable declaration
      * removed type casting when not required
      * removed inline keyword from source files
      * removed CONFIG_CPU_BIG_ENDIAN ifdef
      
      v2
      * Completely redesigned ethernet driver
      * Added support to work with big endian kernel
      * Renamed dtb phyid entry to phy_addr
      * Changed dtb local-mac-address entry to byte string format
      * Renamed dtb eth8clk entry to menetclk
      
      v1
      * Initial version
      ====================
      Signed-off-by: default avatarIyappan Subramanian <isubramanian@apm.com>
      Signed-off-by: default avatarRavi Patel <rapatel@apm.com>
      Signed-off-by: default avatarKeyur Chudgar <kchudgar@apm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      217e606b
    • Iyappan Subramanian's avatar
      drivers: net: Add APM X-Gene SoC ethernet driver support. · e6ad7673
      Iyappan Subramanian authored
      This patch adds network driver for APM X-Gene SoC ethernet.
      Signed-off-by: default avatarIyappan Subramanian <isubramanian@apm.com>
      Signed-off-by: default avatarRavi Patel <rapatel@apm.com>
      Signed-off-by: default avatarKeyur Chudgar <kchudgar@apm.com>
      Signed-off-by: default avatarDean Nelson <dnelson@redhat.com>
      Reviewed-by: default avatarTobias Klauser <tklauser@distanz.ch>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e6ad7673
    • Iyappan Subramanian's avatar
      dts: Add bindings for APM X-Gene SoC ethernet driver · 3d390425
      Iyappan Subramanian authored
      This patch adds bindings for APM X-Gene SoC ethernet driver.
      Signed-off-by: default avatarIyappan Subramanian <isubramanian@apm.com>
      Signed-off-by: default avatarRavi Patel <rapatel@apm.com>
      Signed-off-by: default avatarKeyur Chudgar <kchudgar@apm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3d390425