18 Jun, 2016

1 commit


18 May, 2016

34 commits

  • Pull HID updates from Jiri Kosina:
    "No biggies this time:

    - micro-optimization of implement() in HID core parses, from Dmitry
    Torokhov

    - thingm driver cleanups from Heiner Kallweit

    - fine-graining detection of distance and tilt axes in wacom driver
    from Jason Gerecke

    - New hid-asus driver, currently supporting X205TA and VivoBook
    E200HA, from Yusuke Fujimaki"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
    HID: wacom: Add fuzz factor to distance and tilt axes
    HID: usbhid: quirks for Corsair RGB keyboard & mice (K70R, K95RGB, M65RGB, K70RGB, K65RGB)
    HID: thingm: remove not needed error message
    HID: thingm: set new flag LED_HW_PLUGGABLE
    HID: thingm: factor out duplicated code to thingm_init_led
    HID: simplify implement() a bit
    HID: asus: add support for VivoBook E200HA
    HID: hidraw: silence an uninitialized variable warning
    HID: roccat: silence an uninitialized variable warning
    HID: Asus X205TA keyboard driver
    HID: hidraw: switch to using memdup_user

    Linus Torvalds
     
  • Pull livepatching updates from Jiri Kosina:

    - remove of our own implementation of architecture-specific relocation
    code and leveraging existing code in the module loader to perform
    arch-dependent work, from Jessica Yu.

    The relevant patches have been acked by Rusty (for module.c) and
    Heiko (for s390).

    - live patching support for ppc64le, which is a joint work of Michael
    Ellerman and Torsten Duwe. This is coming from topic branch that is
    share between livepatching.git and ppc tree.

    - addition of livepatching documentation from Petr Mladek

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching:
    livepatch: make object/func-walking helpers more robust
    livepatch: Add some basic livepatch documentation
    powerpc/livepatch: Add live patching support on ppc64le
    powerpc/livepatch: Add livepatch stack to struct thread_info
    powerpc/livepatch: Add livepatch header
    livepatch: Allow architectures to specify an alternate ftrace location
    ftrace: Make ftrace_location_range() global
    livepatch: robustify klp_register_patch() API error checking
    Documentation: livepatch: outline Elf format and requirements for patch modules
    livepatch: reuse module loader code to write relocations
    module: s390: keep mod_arch_specific for livepatch modules
    module: preserve Elf information for livepatch modules
    Elf: add livepatch-specific Elf constants

    Linus Torvalds
     
  • Pull trivial tree updates from Jiri Kosina.

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (21 commits)
    gitignore: fix wording
    mfd: ab8500-debugfs: fix "between" in printk
    memstick: trivial fix of spelling mistake on management
    cpupowerutils: bench: fix "average"
    treewide: Fix typos in printk
    IB/mlx4: printk fix
    pinctrl: sirf/atlas7: fix printk spelling
    serial: mctrl_gpio: Grammar s/lines GPIOs/line GPIOs/, /sets/set/
    w1: comment spelling s/minmum/minimum/
    Blackfin: comment spelling s/divsor/divisor/
    metag: Fix misspellings in comments.
    ia64: Fix misspellings in comments.
    hexagon: Fix misspellings in comments.
    tools/perf: Fix misspellings in comments.
    cris: Fix misspellings in comments.
    c6x: Fix misspellings in comments.
    blackfin: Fix misspelling of 'register' in comment.
    avr32: Fix misspelling of 'definitions' in comment.
    treewide: Fix typos in printk
    Doc: treewide : Fix typos in DocBook/filesystem.xml
    ...

    Linus Torvalds
     
  • Pull networking updates from David Miller:
    "Highlights:

    1) Support SPI based w5100 devices, from Akinobu Mita.

    2) Partial Segmentation Offload, from Alexander Duyck.

    3) Add GMAC4 support to stmmac driver, from Alexandre TORGUE.

    4) Allow cls_flower stats offload, from Amir Vadai.

    5) Implement bpf blinding, from Daniel Borkmann.

    6) Optimize _ASYNC_ bit twiddling on sockets, unless the socket is
    actually using FASYNC these atomics are superfluous. From Eric
    Dumazet.

    7) Run TCP more preemptibly, also from Eric Dumazet.

    8) Support LED blinking, EEPROM dumps, and rxvlan offloading in mlx5e
    driver, from Gal Pressman.

    9) Allow creating ppp devices via rtnetlink, from Guillaume Nault.

    10) Improve BPF usage documentation, from Jesper Dangaard Brouer.

    11) Support tunneling offloads in qed, from Manish Chopra.

    12) aRFS offloading in mlx5e, from Maor Gottlieb.

    13) Add RFS and RPS support to SCTP protocol, from Marcelo Ricardo
    Leitner.

    14) Add MSG_EOR support to TCP, this allows controlling packet
    coalescing on application record boundaries for more accurate
    socket timestamp sampling. From Martin KaFai Lau.

    15) Fix alignment of 64-bit netlink attributes across the board, from
    Nicolas Dichtel.

    16) Per-vlan stats in bridging, from Nikolay Aleksandrov.

    17) Several conversions of drivers to ethtool ksettings, from Philippe
    Reynes.

    18) Checksum neutral ILA in ipv6, from Tom Herbert.

    19) Factorize all of the various marvell dsa drivers into one, from
    Vivien Didelot

    20) Add VF support to qed driver, from Yuval Mintz"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next: (1649 commits)
    Revert "phy dp83867: Fix compilation with CONFIG_OF_MDIO=m"
    Revert "phy dp83867: Make rgmii parameters optional"
    r8169: default to 64-bit DMA on recent PCIe chips
    phy dp83867: Make rgmii parameters optional
    phy dp83867: Fix compilation with CONFIG_OF_MDIO=m
    bpf: arm64: remove callee-save registers use for tmp registers
    asix: Fix offset calculation in asix_rx_fixup() causing slow transmissions
    switchdev: pass pointer to fib_info instead of copy
    net_sched: close another race condition in tcf_mirred_release()
    tipc: fix nametable publication field in nl compat
    drivers: net: Don't print unpopulated net_device name
    qed: add support for dcbx.
    ravb: Add missing free_irq() calls to ravb_close()
    qed: Remove a stray tab
    net: ethernet: fec-mpc52xx: use phy_ethtool_{get|set}_link_ksettings
    net: ethernet: fec-mpc52xx: use phydev from struct net_device
    bpf, doc: fix typo on bpf_asm descriptions
    stmmac: hardware TX COE doesn't work when force_thresh_dma_mode is set
    net: ethernet: fs-enet: use phy_ethtool_{get|set}_link_ksettings
    net: ethernet: fs-enet: use phydev from struct net_device
    ...

    Linus Torvalds
     
  • Pull device mapper updates from Mike Snitzer:

    - based on Jens' 'for-4.7/core' to have DM thinp's discard support use
    bio_inc_remaining() and the block core's new async __blkdev_issue_discard()
    interface

    - make DM multipath's fast code-paths lockless, using lockless_deference,
    to significantly improve large NUMA performance when using blk-mq.
    The m->lock spinlock contention was a serious bottleneck.

    - a few other small code cleanups and Documentation fixes

    * tag 'dm-4.7-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
    dm thin: unroll issue_discard() to create longer discard bio chains
    dm thin: use __blkdev_issue_discard for async discard support
    dm thin: remove __bio_inc_remaining() and switch to using bio_inc_remaining()
    dm raid: make sure no feature flags are set in metadata
    dm ioctl: drop use of __GFP_REPEAT in copy_params()'s __vmalloc() call
    dm stats: fix spelling mistake in Documentation
    dm cache: update cache-policies.txt now that mq is an alias for smq
    dm mpath: eliminate use of spinlock in IO fast-paths
    dm mpath: move trigger_event member to the end of 'struct multipath'
    dm mpath: use atomic_t for counting members of 'struct multipath'
    dm mpath: switch to using bitops for state flags
    dm thin: Remove return statement from void function
    dm: remove unused mapped_device argument from free_tio()

    Linus Torvalds
     
  • Pull block driver updates from Jens Axboe:
    "On top of the core pull request, this is the drivers pull request for
    this merge window. This contains:

    - Switch drivers to the new write back cache API, and kill off the
    flush flags. From me.

    - Kill the discard support for the STEC pci-e flash driver. It's
    trivially broken, and apparently unmaintained, so it's safer to
    just remove it. From Jeff Moyer.

    - A set of lightnvm updates from the usual suspects (Matias/Javier,
    and Simon), and fixes from Arnd, Jeff Mahoney, Sagi, and Wenwei
    Tao.

    - A set of updates for NVMe:

    - Turn the controller state management into a proper state
    machine. From Christoph.

    - Shuffling of code in preparation for NVMe-over-fabrics, also
    from Christoph.

    - Cleanup of the command prep part from Ming Lin.

    - Rewrite of the discard support from Ming Lin.

    - Deadlock fix for namespace removal from Ming Lin.

    - Use the now exported blk-mq tag helper for IO termination.
    From Sagi.

    - Various little fixes from Christoph, Guilherme, Keith, Ming
    Lin, Wang Sheng-Hui.

    - Convert mtip32xx to use the now exported blk-mq tag iter function,
    from Keith"

    * 'for-4.7/drivers' of git://git.kernel.dk/linux-block: (74 commits)
    lightnvm: reserved space calculation incorrect
    lightnvm: rename nr_pages to nr_ppas on nvm_rq
    lightnvm: add is_cached entry to struct ppa_addr
    lightnvm: expose gennvm_mark_blk to targets
    lightnvm: remove mgt targets on mgt removal
    lightnvm: pass dma address to hardware rather than pointer
    lightnvm: do not assume sequential lun alloc.
    nvme/lightnvm: Log using the ctrl named device
    lightnvm: rename dma helper functions
    lightnvm: enable metadata to be sent to device
    lightnvm: do not free unused metadata on rrpc
    lightnvm: fix out of bound ppa lun id on bb tbl
    lightnvm: refactor set_bb_tbl for accepting ppa list
    lightnvm: move responsibility for bad blk mgmt to target
    lightnvm: make nvm_set_rqd_ppalist() aware of vblks
    lightnvm: remove struct factory_blks
    lightnvm: refactor device ops->get_bb_tbl()
    lightnvm: introduce nvm_for_each_lun_ppa() macro
    lightnvm: refactor dev->online_target to global nvm_targets
    lightnvm: rename nvm_targets to nvm_tgt_type
    ...

    Linus Torvalds
     
  • Pull core block layer updates from Jens Axboe:
    "This is the core block IO changes for this merge window. Nothing
    earth shattering in here, it's mostly just fixes. In detail:

    - Fix for a long standing issue where wrong ordering in blk-mq caused
    order_to_size() to spew a warning. From Bart.

    - Async discard support from Christoph. Basically just splitting our
    sync interface into a submit + wait part.

    - Add a cleaner interface for flagging whether a device has a write
    back cache or not. We've previously overloaded blk_queue_flush()
    with this, but let's make it more explicit. Drivers cleaned up and
    updated in the drivers pull request. From me.

    - Fix for a double check for whether IO accounting is enabled or not.
    From Michael Callahan.

    - Fix for the async discard from Mike Snitzer, reinstating the early
    EOPNOTSUPP return if the device doesn't support discards.

    - Also from Mike, export bio_inc_remaining() so dm can drop it's
    private copy of it.

    - From Ming Lin, add support for passing in an offset for request
    payloads.

    - Tag function export from Sagi, which will be used in NVMe in the
    drivers pull.

    - Two blktrace related fixes from Shaohua.

    - Propagate NOMERGE flag when making a request from a bio, also from
    Shaohua.

    - An optimization to not parse cgroup paths in blk-throttle, if we
    don't need to. From Shaohua"

    * 'for-4.7/core' of git://git.kernel.dk/linux-block:
    blk-mq: fix undefined behaviour in order_to_size()
    blk-throttle: don't parse cgroup path if trace isn't enabled
    blktrace: add missed mask name
    blktrace: delete garbage for message trace
    block: make bio_inc_remaining() interface accessible again
    block: reinstate early return of -EOPNOTSUPP from blkdev_issue_discard
    block: Minor blk_account_io_start usage cleanup
    block: add __blkdev_issue_discard
    block: remove struct bio_batch
    block: copy NOMERGE flag from bio to request
    block: add ability to flag write back caching on a device
    blk-mq: Export tagset iter function
    block: add offset in blk_add_request_payload()
    writeback: Fix performance regression in wb_over_bg_thresh()

    Linus Torvalds
     
  • Pull vfs cleanups from Al Viro:
    "More cleanups from Christoph"

    * 'work.preadv2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    nfsd: use RWF_SYNC
    fs: add RWF_DSYNC aand RWF_SYNC
    ceph: use generic_write_sync
    fs: simplify the generic_write_sync prototype
    fs: add IOCB_SYNC and IOCB_DSYNC
    direct-io: remove the offset argument to dio_complete
    direct-io: eliminate the offset argument to ->direct_IO
    xfs: eliminate the pos variable in xfs_file_dio_aio_write
    filemap: remove the pos argument to generic_file_direct_write
    filemap: remove pos variables in generic_file_read_iter

    Linus Torvalds
     
  • Pull 'struct path' constification update from Al Viro:
    "'struct path' is passed by reference to a bunch of Linux security
    methods; in theory, there's nothing to stop them from modifying the
    damn thing and LSM community being what it is, sooner or later some
    enterprising soul is going to decide that it's a good idea.

    Let's remove the temptation and constify all of those..."

    * 'work.const-path' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    constify ima_d_path()
    constify security_sb_pivotroot()
    constify security_path_chroot()
    constify security_path_{link,rename}
    apparmor: remove useless checks for NULL ->mnt
    constify security_path_{mkdir,mknod,symlink}
    constify security_path_{unlink,rmdir}
    apparmor: constify common_perm_...()
    apparmor: constify aa_path_link()
    apparmor: new helper - common_path_perm()
    constify chmod_common/security_path_chmod
    constify security_sb_mount()
    constify chown_common/security_path_chown
    tomoyo: constify assorted struct path *
    apparmor_path_truncate(): path->mnt is never NULL
    constify vfs_truncate()
    constify security_path_truncate()
    [apparmor] constify struct path * in a bunch of helpers

    Linus Torvalds
     
  • Pull cifs xattr updates from Al Viro:
    "This is the remaining parts of the xattr work - the cifs bits"

    * 'for-cifs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    cifs: Switch to generic xattr handlers
    cifs: Fix removexattr for os2.* xattrs
    cifs: Check for equality with ACL_TYPE_ACCESS and ACL_TYPE_DEFAULT
    cifs: Fix xattr name checks

    Linus Torvalds
     
  • Pull UDF fixes from Jan Kara:
    "A fix for UDF crash on corrupted media and one UDF header fixup"

    * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
    udf: Export superblock magic to userspace
    udf: Prevent stack overflow on corrupted filesystem mount

    Linus Torvalds
     
  • Pull jfs updates from Dave Kleikamp:
    "Some jfs logging cleanups from Joe Perches"

    * tag 'jfs-4.7' of git://github.com/kleikamp/linux-shaggy:
    jfs: Coalesce some formats
    jfs: Remove unnecessary line continuations and terminating newlines
    jfs: Remove terminating newlines from jfs_info, jfs_warn, jfs_err uses

    Linus Torvalds
     
  • This section of code initially looks redundant, but is required. This
    improves the comment to explain more clearly why the reset is needed.

    Signed-off-by: Kees Cook
    Acked-by: Serge E. Hallyn
    Signed-off-by: Linus Torvalds

    Kees Cook
     
  • This reverts commit 7f32541c2fdaa84af418c3e1431bbd066ab44d09.

    This needs reverting too, as per requests.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • This reverts commit 81003bc924bac0a99bfdc2869f5dff5a87aa4a3d.

    Developers have asked me to revert this for now.

    Signed-off-by: David S. Miller

    David S. Miller
     
  • The current logic around the 'use_dac' module parameter prevents the
    r81969 driver from being loadable on 64-bit systems without any RAM
    below 4 GB when the parameter is left at its default value.

    So introduce a new default value -1 which indicates that 64-bit DMA
    should be enabled on sufficiently recent PCIe chips, i.e., versions
    RTL_GIGA_MAC_VER_18 or later. Explicit param values of 0 or 1 retain
    the existing behavior of unconditionally enabling/disabling 64-bit DMA
    on 64-bit architectures (i.e., regardless of the type and version of the
    chip)

    Since PCIe chips do not need to CPlusCmd Dual Address Cycle to be set,
    make that conditional on the device type as well.

    Cc: Realtek linux nic maintainers
    Signed-off-by: Ard Biesheuvel
    Signed-off-by: David S. Miller

    Ard Biesheuvel
     
  • If you compile without OF_MDIO support in an RGMII configuration, we fail
    to configure the dp83867 phy today by writing garbage into its configuration
    registers.

    On the other hand if you do compile with OF_MDIO and the phy gets loaded via
    device tree, you have to have the properties set in the device tree, otherwise
    we fail to load the driver and don't even attach the generic phy driver to
    the interface anymore.

    To make things slightly more consistent, make the rgmii configuration properties
    optional and allow a user to omit them in their device tree.

    Signed-off-by: Alexander Graf
    Signed-off-by: David S. Miller

    Alexander Graf
     
  • When CONFIG_OF_MDIO is configured as module, the #define for it really
    is CONFIG_OF_MDIO_MODULE, not CONFIG_OF_MDIO. So if we are compiling it
    as module, the dp83867 doesn't see that OF_MDIO was selected and doesn't
    read the dt rgmii parameters.

    The fix is simple: Use IS_ENABLED(). It checks for both - module as well
    as compiled in code.

    Signed-off-by: Alexander Graf
    Signed-off-by: David S. Miller

    Alexander Graf
     
  • Merge tag 'qcom-soc-for-4.7-2' into net-next

    This merges the Qualcomm SOC tree with the net-next, solving the
    merge conflict in the SMD API between the two.

    David S. Miller
     
  • In the current implementation of ARM64 eBPF JIT, R23 and R24 are used for
    tmp registers, which are callee-saved registers. This leads to variable size
    of JIT prologue and epilogue. The latest blinding constant change prefers to
    constant size of prologue and epilogue. AAPCS reserves R9 ~ R15 for temp
    registers which not need to be saved/restored during function call. So, replace
    R23 and R24 to R10 and R11, and remove tmp_used flag to save 2 instructions for
    some jited BPF program.

    CC: Daniel Borkmann
    Acked-by: Zi Shen Lim
    Signed-off-by: Yang Shi
    Acked-by: Catalin Marinas
    Acked-by: Daniel Borkmann
    Signed-off-by: David S. Miller

    Yang Shi
     
  • In testing with HiKey, we found that since
    commit 3f30b158eba5 ("asix: On RX avoid creating bad Ethernet
    frames"),
    we're seeing lots of noise during network transfers:

    [ 239.027993] asix 1-1.1:1.0 eth0: asix_rx_fixup() Data Header synchronisation was lost, remaining 988
    [ 239.037310] asix 1-1.1:1.0 eth0: asix_rx_fixup() Bad Header Length 0x54ebb5ec, offset 4
    [ 239.045519] asix 1-1.1:1.0 eth0: asix_rx_fixup() Bad Header Length 0xcdffe7a2, offset 4
    [ 239.275044] asix 1-1.1:1.0 eth0: asix_rx_fixup() Data Header synchronisation was lost, remaining 988
    [ 239.284355] asix 1-1.1:1.0 eth0: asix_rx_fixup() Bad Header Length 0x1d36f59d, offset 4
    [ 239.292541] asix 1-1.1:1.0 eth0: asix_rx_fixup() Bad Header Length 0xaef3c1e9, offset 4
    [ 239.518996] asix 1-1.1:1.0 eth0: asix_rx_fixup() Data Header synchronisation was lost, remaining 988
    [ 239.528300] asix 1-1.1:1.0 eth0: asix_rx_fixup() Bad Header Length 0x2881912, offset 4
    [ 239.536413] asix 1-1.1:1.0 eth0: asix_rx_fixup() Bad Header Length 0x5638f7e2, offset 4

    And network throughput ends up being pretty bursty and slow with
    a overall throughput of at best ~30kB/s (where as previously we
    got 1.1MB/s with the slower USB1.1 "full speed" host).

    We found the issue also was reproducible on a x86_64 system,
    using a "high-speed" USB2.0 port but the throughput did not
    measurably drop (possibly due to the scp transfer being cpu
    bound on my slow test hardware).

    After lots of debugging, I found the check added in the
    problematic commit seems to be calculating the offset
    incorrectly.

    In the normal case, in the main loop of the function, we do:
    (where offset is zero, or set to "offset += (copy_length + 1) &
    0xfffe" in the previous loop)
    rx->header = get_unaligned_le32(skb->data +
    offset);
    offset += sizeof(u32);

    But the problematic patch calculates:
    offset = ((rx->remaining + 1) & 0xfffe) + sizeof(u32);
    rx->header = get_unaligned_le32(skb->data + offset);

    Adding some debug logic to check those offset calculation used
    to find rx->header, the one in problematic code is always too
    large by sizeof(u32).

    Thus, this patch removes the incorrect " + sizeof(u32)" addition
    in the problematic calculation, and resolves the issue.

    Cc: Dean Jenkins
    Cc: "David B. Robins"
    Cc: Mark Craske
    Cc: Emil Goode
    Cc: "David S. Miller"
    Cc: YongQin Liu
    Cc: Guodong Xu
    Cc: Ivan Vecera
    Cc: linux-usb@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Cc: stable #4.4+
    Reported-by: Yongqin Liu
    Signed-off-by: John Stultz
    Signed-off-by: David S. Miller

    John Stultz
     
  • Pull parallel filesystem directory handling update from Al Viro.

    This is the main parallel directory work by Al that makes the vfs layer
    able to do lookup and readdir in parallel within a single directory.
    That's a big change, since this used to be all protected by the
    directory inode mutex.

    The inode mutex is replaced by an rwsem, and serialization of lookups of
    a single name is done by a "in-progress" dentry marker.

    The series begins with xattr cleanups, and then ends with switching
    filesystems over to actually doing the readdir in parallel (switching to
    the "iterate_shared()" that only takes the read lock).

    A more detailed explanation of the process from Al Viro:
    "The xattr work starts with some acl fixes, then switches ->getxattr to
    passing inode and dentry separately. This is the point where the
    things start to get tricky - that got merged into the very beginning
    of the -rc3-based #work.lookups, to allow untangling the
    security_d_instantiate() mess. The xattr work itself proceeds to
    switch a lot of filesystems to generic_...xattr(); no complications
    there.

    After that initial xattr work, the series then does the following:

    - untangle security_d_instantiate()

    - convert a bunch of open-coded lookup_one_len_unlocked() to calls of
    that thing; one such place (in overlayfs) actually yields a trivial
    conflict with overlayfs fixes later in the cycle - overlayfs ended
    up switching to a variant of lookup_one_len_unlocked() sans the
    permission checks. I would've dropped that commit (it gets
    overridden on merge from #ovl-fixes in #for-next; proper resolution
    is to use the variant in mainline fs/overlayfs/super.c), but I
    didn't want to rebase the damn thing - it was fairly late in the
    cycle...

    - some filesystems had managed to depend on lookup/lookup exclusion
    for *fs-internal* data structures in a way that would break if we
    relaxed the VFS exclusion. Fixing hadn't been hard, fortunately.

    - core of that series - parallel lookup machinery, replacing
    ->i_mutex with rwsem, making lookup_slow() take it only shared. At
    that point lookups happen in parallel; lookups on the same name
    wait for the in-progress one to be done with that dentry.

    Surprisingly little code, at that - almost all of it is in
    fs/dcache.c, with fs/namei.c changes limited to lookup_slow() -
    making it use the new primitive and actually switching to locking
    shared.

    - parallel readdir stuff - first of all, we provide the exclusion on
    per-struct file basis, same as we do for read() vs lseek() for
    regular files. That takes care of most of the needed exclusion in
    readdir/readdir; however, these guys are trickier than lookups, so
    I went for switching them one-by-one. To do that, a new method
    '->iterate_shared()' is added and filesystems are switched to it
    as they are either confirmed to be OK with shared lock on directory
    or fixed to be OK with that. I hope to kill the original method
    come next cycle (almost all in-tree filesystems are switched
    already), but it's still not quite finished.

    - several filesystems get switched to parallel readdir. The
    interesting part here is dealing with dcache preseeding by readdir;
    that needs minor adjustment to be safe with directory locked only
    shared.

    Most of the filesystems doing that got switched to in those
    commits. Important exception: NFS. Turns out that NFS folks, with
    their, er, insistence on VFS getting the fuck out of the way of the
    Smart Filesystem Code That Knows How And What To Lock(tm) have
    grown the locking of their own. They had their own homegrown
    rwsem, with lookup/readdir/atomic_open being *writers* (sillyunlink
    is the reader there). Of course, with VFS getting the fuck out of
    the way, as requested, the actual smarts of the smart filesystem
    code etc. had become exposed...

    - do_last/lookup_open/atomic_open cleanups. As the result, open()
    without O_CREAT locks the directory only shared. Including the
    ->atomic_open() case. Backmerge from #for-linus in the middle of
    that - atomic_open() fix got brought in.

    - then comes NFS switch to saner (VFS-based ;-) locking, killing the
    homegrown "lookup and readdir are writers" kinda-sorta rwsem. All
    exclusion for sillyunlink/lookup is done by the parallel lookups
    mechanism. Exclusion between sillyunlink and rmdir is a real rwsem
    now - rmdir being the writer.

    Result: NFS lookups/readdirs/O_CREAT-less opens happen in parallel
    now.

    - the rest of the series consists of switching a lot of filesystems
    to parallel readdir; in a lot of cases ->llseek() gets simplified
    as well. One backmerge in there (again, #for-linus - rockridge
    fix)"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (74 commits)
    ext4: switch to ->iterate_shared()
    hfs: switch to ->iterate_shared()
    hfsplus: switch to ->iterate_shared()
    hostfs: switch to ->iterate_shared()
    hpfs: switch to ->iterate_shared()
    hpfs: handle allocation failures in hpfs_add_pos()
    gfs2: switch to ->iterate_shared()
    f2fs: switch to ->iterate_shared()
    afs: switch to ->iterate_shared()
    befs: switch to ->iterate_shared()
    befs: constify stuff a bit
    isofs: switch to ->iterate_shared()
    get_acorn_filename(): deobfuscate a bit
    btrfs: switch to ->iterate_shared()
    logfs: no need to lock directory in lseek
    switch ecryptfs to ->iterate_shared
    9p: switch to ->iterate_shared()
    fat: switch to ->iterate_shared()
    romfs, squashfs: switch to ->iterate_shared()
    more trivial ->iterate_shared conversions
    ...

    Linus Torvalds
     
  • The problem is that fib_info->nh is [0] so the struct fib_info
    allocation size depends on number of nexthops. If we just copy fib_info,
    we do not copy the nexthops info and driver accesses memory which is not
    ours.

    Given the fact that fib4 does not defer operations and therefore it does
    not need copy, just pass the pointer down to drivers as it was done
    before.

    Fixes: 850d0cbc91 ("switchdev: remove pointers from switchdev objects")
    Signed-off-by: Jiri Pirko
    Signed-off-by: David S. Miller

    Jiri Pirko
     
  • Pull irq updates from Thomas Gleixner:
    "This update delivers:

    - Yet another interrupt chip diver (LPC32xx)
    - Core functions to handle partitioned per-cpu interrupts
    - Enhancements to the IPI core
    - Proper handling of irq type configuration
    - A large set of ARM GIC enhancements
    - The usual pile of small fixes, cleanups and enhancements"

    * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (31 commits)
    irqchip/bcm2836: Use a more generic memory barrier call
    irqchip/bcm2836: Fix compiler warning on 64-bit build
    irqchip/bcm2836: Drop smp_set_ops on arm64 builds
    irqchip/gic: Add helper functions for GIC setup and teardown
    irqchip/gic: Store GIC configuration parameters
    irqchip/gic: Pass GIC pointer to save/restore functions
    irqchip/gic: Return an error if GIC initialisation fails
    irqchip/gic: Remove static irq_chip definition for eoimode1
    irqchip/gic: Don't initialise chip if mapping IO space fails
    irqchip/gic: WARN if setting the interrupt type for a PPI fails
    irqchip/gic: Don't unnecessarily write the IRQ configuration
    irqchip: Mask the non-type/sense bits when translating an IRQ
    genirq: Ensure IRQ descriptor is valid when setting-up the IRQ
    irqchip/gic-v3: Configure all interrupts as non-secure Group-1
    irqchip/gic-v2m: Add workaround for Broadcom NS2 GICv2m erratum
    irqchip/irq-alpine-msi: Don't use
    irqchip/mbigen: Checking for IS_ERR() instead of NULL
    irqchip/gic-v3: Remove inexistant register definition
    irqchip/gicv3-its: Don't allow devices whose ID is outside range
    irqchip: Add LPC32xx interrupt controller driver
    ...

    Linus Torvalds
     
  • Pull timer updates from Thomas Gleixner:
    "A rather small set of patches from the timer departement:

    - Some more y2038 work
    - Yet another new clocksource driver
    - The usual set of small fixes, cleanups and enhancements"

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    clocksource/drivers/tegra: Remove unused suspend/resume code
    clockevents/driversi/mps2: add MPS2 Timer driver
    dt-bindings: document the MPS2 timer bindings
    clocksource/drivers/mtk_timer: Add __init attribute
    clockevents/drivers/dw_apb_timer: Implement ->set_state_oneshot_stopped()
    time: Introduce do_sys_settimeofday64()
    security: Introduce security_settime64()
    clocksource: Add missing include of of.h.

    Linus Torvalds
     
  • …t/rostedt/linux-trace

    Pull tracing ring-buffer fixes from Steven Rostedt:
    "Hao Qin reported an integer overflow possibility with signed and
    unsigned numbers in the ring-buffer code.

    https://bugzilla.kernel.org/show_bug.cgi?id=118001

    At first I did not think this was too much of an issue, because the
    overflow would be caught later when either too much data was allocated
    or it would trigger RB_WARN_ON() which shuts down the ring buffer.

    But looking closer into it, I found that the right settings could
    bypass the checks and crash the kernel. Luckily, this is only
    accessible by root.

    The first fix is to convert all the variables into long, such that we
    don't get into issues between 32 bit variables being assigned 64 bit
    ones. This fixes the RB_WARN_ON() triggering.

    The next fix is to get rid of a duplicate DIV_ROUND_UP() that when
    called twice with the right value, can cause a kernel crash.

    The first DIV_ROUND_UP() is to normalize the input and it is checked
    against the minimum allowable value. But then DIV_ROUND_UP() is
    called again, which can overflow due to the (a + b - 1)/b, logic. The
    first called upped the value, the second can overflow (with the +b
    part).

    The second call to DIV_ROUND_UP() came in via a second change a while
    ago and the code is cleaned up to remove it"

    * tag 'trace-fixes-v4.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
    ring-buffer: Prevent overflow of size in ring_buffer_resize()
    ring-buffer: Use long for nr_pages to avoid overflow failures

    Linus Torvalds
     
  • We saw the following extra refcount release on veth device:

    kernel: [7957821.463992] unregister_netdevice: waiting for mesos50284 to become free. Usage count = -1

    Since we heavily use mirred action to redirect packets to veth, I think
    this is caused by the following race condition:

    CPU0:
    tcf_mirred_release(): (in RCU callback)
    struct net_device *dev = rcu_dereference_protected(m->tcfm_dev, 1);

    CPU1:
    mirred_device_event():
    spin_lock_bh(&mirred_list_lock);
    list_for_each_entry(m, &mirred_list, tcfm_list) {
    if (rcu_access_pointer(m->tcfm_dev) == dev) {
    dev_put(dev);
    /* Note : no rcu grace period necessary, as
    * net_device are already rcu protected.
    */
    RCU_INIT_POINTER(m->tcfm_dev, NULL);
    }
    }
    spin_unlock_bh(&mirred_list_lock);

    CPU0:
    tcf_mirred_release():
    spin_lock_bh(&mirred_list_lock);
    list_del(&m->tcfm_list);
    spin_unlock_bh(&mirred_list_lock);
    if (dev) // tcfm_dev
    dev_put(dev); //
    Signed-off-by: Cong Wang
    Acked-by: Jamal Hadi Salim
    Signed-off-by: David S. Miller

    WANG Cong
     
  • The publication field of the old netlink API should contain the
    publication key and not the publication reference.

    Fixes: 44a8ae94fd55 (tipc: convert legacy nl name table dump to nl compat)
    Signed-off-by: Richard Alpe
    Acked-by: Jon Maloy
    Signed-off-by: David S. Miller

    Richard Alpe
     
  • Pull crypto update from Herbert Xu:
    "API:

    - Crypto self tests can now be disabled at boot/run time.
    - Add async support to algif_aead.

    Algorithms:

    - A large number of fixes to MPI from Nicolai Stange.
    - Performance improvement for HMAC DRBG.

    Drivers:

    - Use generic crypto engine in omap-des.
    - Merge ppc4xx-rng and crypto4xx drivers.
    - Fix lockups in sun4i-ss driver by disabling IRQs.
    - Add DMA engine support to ccp.
    - Reenable talitos hash algorithms.
    - Add support for Hisilicon SoC RNG.
    - Add basic crypto driver for the MXC SCC.

    Others:

    - Do not allocate crypto hash tfm in NORECLAIM context in ecryptfs"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: (77 commits)
    crypto: qat - change the adf_ctl_stop_devices to void
    crypto: caam - fix caam_jr_alloc() ret code
    crypto: vmx - comply with ABIs that specify vrsave as reserved.
    crypto: testmgr - Add a flag allowing the self-tests to be disabled at runtime.
    crypto: ccp - constify ccp_actions structure
    crypto: marvell/cesa - Use dma_pool_zalloc
    crypto: qat - make adf_vf_isr.c dependant on IOV config
    crypto: qat - Fix typo in comments
    lib: asn1_decoder - add MODULE_LICENSE("GPL")
    crypto: omap-sham - Use dma_request_chan() for requesting DMA channel
    crypto: omap-des - Use dma_request_chan() for requesting DMA channel
    crypto: omap-aes - Use dma_request_chan() for requesting DMA channel
    crypto: omap-des - Integrate with the crypto engine framework
    crypto: s5p-sss - fix incorrect usage of scatterlists api
    crypto: s5p-sss - Fix missed interrupts when working with 8 kB blocks
    crypto: s5p-sss - Use common BIT macro
    crypto: mxc-scc - fix unwinding in mxc_scc_crypto_register()
    crypto: mxc-scc - signedness bugs in mxc_scc_ablkcipher_req_init()
    crypto: talitos - fix ahash algorithms registration
    crypto: ccp - Ensure all dependencies are specified
    ...

    Linus Torvalds
     
  • For ethernet devices, net_device.name will be eth%d before
    register_netdev() is called. Don't print the net_device name until
    the format string is replaced.

    Signed-off-by: Harvey Hunt
    Cc: Marcel Ziswiler
    Cc: Robert Jarzmik
    Cc: Barry Song
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: David S. Miller

    Harvey Hunt
     
  • This patch adds the necessary driver support for Management Firmware to
    configure the device/firmware with the dcbx results. Management Firmware
    is responsible for communicating the DCBX and driving the negotiation,
    but the driver has responsibility of receiving async notification and
    configuring the results in hw/fw. This patch also adds the dcbx support for
    future protocols (e.g., FCoE) as preparation to their imminent submission.

    Signed-off-by: Sudarsana Reddy Kalluru
    Signed-off-by: Yuval Mintz
    Signed-off-by: David S. Miller

    Sudarsana Reddy Kalluru
     
  • When reopening the network device on ra7795/salvator-x, e.g. after a
    DHCP timeout:

    IP-Config: Reopening network devices...
    genirq: Flags mismatch irq 139. 00000000 (eth0:ch0:rx_be) vs. 00000000 (ravb e6800000.ethernet eth0: cannot request IRQ eth0:ch0:rx_be
    IP-Config: Failed to open eth0
    IP-Config: No network devices available

    The "mismatch" is due to requesting an IRQ that is already in use,
    while IRQF_PROBE_SHARED wasn't set.

    However, the real cause is that ravb_close() doesn't release any of the
    R-Car Gen3-specific secondary IRQs.

    Add the missing free_irq() calls to fix this.

    Fixes: f51bdc236b6c5835 ("ravb: Add dma queue interrupt support")
    Signed-off-by: Geert Uytterhoeven
    Acked-by: Sergei Shtylyov
    Signed-off-by: David S. Miller

    Geert Uytterhoeven
     
  • This line was indented more than it should be.

    Signed-off-by: Dan Carpenter
    Acked-by: Yuval Mintz
    Signed-off-by: David S. Miller

    Dan Carpenter
     
  • Jeff Kirsher says:

    ====================
    10GbE Intel Wired LAN Driver Updates 2016-05-16

    This series contains 2 fixes to ixgbe only.

    Emil fixes transmit hangs when enabling SRIOV by swapping the parameters
    in GENMASK in order to generate the correct mask.

    Alex fixes his previous patch b83e30104bd9 ("ixgbe/ixgbevf: Add support
    for GSO partial") where he somehow transposed the location of setting
    the VLAN features in netdev->features and the configuration of the
    vlan_features.
    ====================

    Signed-off-by: David S. Miller

    David S. Miller
     

17 May, 2016

5 commits