24 Nov, 2016

1 commit


22 Nov, 2016

1 commit

  • Pull networking fixes from David Miller:

    1) Clear congestion control state when changing algorithms on an
    existing socket, from Florian Westphal.

    2) Fix register bit values in altr_tse_pcs portion of stmmac driver,
    from Jia Jie Ho.

    3) Fix PTP handling in stammc driver for GMAC4, from Giuseppe
    CAVALLARO.

    4) Fix udplite multicast delivery handling, it ignores the udp_table
    parameter passed into the lookups, from Pablo Neira Ayuso.

    5) Synchronize the space estimated by rtnl_vfinfo_size and the space
    actually used by rtnl_fill_vfinfo. From Sabrina Dubroca.

    6) Fix memory leak in fib_info when splitting nodes, from Alexander
    Duyck.

    7) If a driver does a napi_hash_del() explicitily and not via
    netif_napi_del(), it must perform RCU synchronization as needed. Fix
    this in virtio-net and bnxt drivers, from Eric Dumazet.

    8) Likewise, it is not necessary to invoke napi_hash_del() is we are
    also doing neif_napi_del() in the same code path. Remove such calls
    from be2net and cxgb4 drivers, also from Eric Dumazet.

    9) Don't allocate an ID in peernet2id_alloc() if the netns is dead,
    from WANG Cong.

    10) Fix OF node and device struct leaks in of_mdio, from Johan Hovold.

    11) We cannot cache routes in ip6_tunnel when using inherited traffic
    classes, from Paolo Abeni.

    12) Fix several crashes and leaks in cpsw driver, from Johan Hovold.

    13) Splice operations cannot use freezable blocking calls in AF_UNIX,
    from WANG Cong.

    14) Link dump filtering by master device and kind support added an error
    in loop index updates during the dump if we actually do filter, fix
    from Zhang Shengju.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (59 commits)
    tcp: zero ca_priv area when switching cc algorithms
    net: l2tp: Treat NET_XMIT_CN as success in l2tp_eth_dev_xmit
    ethernet: stmmac: make DWMAC_STM32 depend on it's associated SoC
    tipc: eliminate obsolete socket locking policy description
    rtnl: fix the loop index update error in rtnl_dump_ifinfo()
    l2tp: fix racy SOCK_ZAPPED flag check in l2tp_ip{,6}_bind()
    net: macb: add check for dma mapping error in start_xmit()
    rtnetlink: fix FDB size computation
    netns: fix get_net_ns_by_fd(int pid) typo
    af_unix: conditionally use freezable blocking calls in read
    net: ethernet: ti: cpsw: fix fixed-link phy probe deferral
    net: ethernet: ti: cpsw: add missing sanity check
    net: ethernet: ti: cpsw: fix secondary-emac probe error path
    net: ethernet: ti: cpsw: fix of_node and phydev leaks
    net: ethernet: ti: cpsw: fix deferred probe
    net: ethernet: ti: cpsw: fix mdio device reference leak
    net: ethernet: ti: cpsw: fix bad register access in probe error path
    net: sky2: Fix shutdown crash
    cfg80211: limit scan results cache size
    net sched filters: pass netlink message flags in event notification
    ...

    Linus Torvalds
     

19 Nov, 2016

1 commit


18 Nov, 2016

1 commit

  • Prior to 3.15, there was a race between zap_pte_range() and
    page_mkclean() where writes to a page could be lost. Dave Hansen
    discovered by inspection that there is a similar race between
    move_ptes() and page_mkclean().

    We've been able to reproduce the issue by enlarging the race window with
    a msleep(), but have not been able to hit it without modifying the code.
    So, we think it's a real issue, but is difficult or impossible to hit in
    practice.

    The zap_pte_range() issue is fixed by commit 1cf35d47712d("mm: split
    'tlb_flush_mmu()' into tlb flushing and memory freeing parts"). And
    this patch is to fix the race between page_mkclean() and mremap().

    Here is one possible way to hit the race: suppose a process mmapped a
    file with READ | WRITE and SHARED, it has two threads and they are bound
    to 2 different CPUs, e.g. CPU1 and CPU2. mmap returned X, then thread
    1 did a write to addr X so that CPU1 now has a writable TLB for addr X
    on it. Thread 2 starts mremaping from addr X to Y while thread 1
    cleaned the page and then did another write to the old addr X again.
    The 2nd write from thread 1 could succeed but the value will get lost.

    thread 1 thread 2
    (bound to CPU1) (bound to CPU2)

    1: write 1 to addr X to get a
    writeable TLB on this CPU

    2: mremap starts

    3: move_ptes emptied PTE for addr X
    and setup new PTE for addr Y and
    then dropped PTL for X and Y

    4: page laundering for N by doing
    fadvise FADV_DONTNEED. When done,
    pageframe N is deemed clean.

    5: *write 2 to addr X

    6: tlb flush for addr X

    7: munmap (Y, pagesize) to make the
    page unmapped

    8: fadvise with FADV_DONTNEED again
    to kick the page off the pagecache

    9: pread the page from file to verify
    the value. If 1 is there, it means
    we have lost the written 2.

    *the write may or may not cause segmentation fault, it depends on
    if the TLB is still on the CPU.

    Please note that this is only one specific way of how the race could
    occur, it didn't mean that the race could only occur in exact the above
    config, e.g. more than 2 threads could be involved and fadvise() could
    be done in another thread, etc.

    For anonymous pages, they could race between mremap() and page reclaim:
    THP: a huge PMD is moved by mremap to a new huge PMD, then the new huge
    PMD gets unmapped/splitted/pagedout before the flush tlb happened for
    the old huge PMD in move_page_tables() and we could still write data to
    it. The normal anonymous page has similar situation.

    To fix this, check for any dirty PTE in move_ptes()/move_huge_pmd() and
    if any, did the flush before dropping the PTL. If we did the flush for
    every move_ptes()/move_huge_pmd() call then we do not need to do the
    flush in move_pages_tables() for the whole range. But if we didn't, we
    still need to do the whole range flush.

    Alternatively, we can track which part of the range is flushed in
    move_ptes()/move_huge_pmd() and which didn't to avoid flushing the whole
    range in move_page_tables(). But that would require multiple tlb
    flushes for the different sub-ranges and should be less efficient than
    the single whole range flush.

    KBuild test on my Sandybridge desktop doesn't show any noticeable change.
    v4.9-rc4:
    real 5m14.048s
    user 32m19.800s
    sys 4m50.320s

    With this commit:
    real 5m13.888s
    user 32m19.330s
    sys 4m51.200s

    Reported-by: Dave Hansen
    Signed-off-by: Aaron Lu
    Signed-off-by: Linus Torvalds

    Aaron Lu
     

17 Nov, 2016

1 commit

  • I made some invalid assumptions with BPF_AND and BPF_MOD that could result in
    invalid accesses to bpf map entries. Fix this up by doing a few things

    1) Kill BPF_MOD support. This doesn't actually get used by the compiler in real
    life and just adds extra complexity.

    2) Fix the logic for BPF_AND, don't allow AND of negative numbers and set the
    minimum value to 0 for positive AND's.

    3) Don't do operations on the ranges if they are set to the limits, as they are
    by definition undefined, and allowing arithmetic operations on those values
    could make them appear valid when they really aren't.

    This fixes the testcase provided by Jann as well as a few other theoretical
    problems.

    Reported-by: Jann Horn
    Signed-off-by: Josef Bacik
    Acked-by: Alexei Starovoitov
    Signed-off-by: David S. Miller

    Josef Bacik
     

15 Nov, 2016

1 commit

  • Pull networking fixes from David Miller:

    1) Fix off by one wrt. indexing when dumping /proc/net/route entries,
    from Alexander Duyck.

    2) Fix lockdep splats in iwlwifi, from Johannes Berg.

    3) Cure panic when inserting certain netfilter rules when NFT_SET_HASH
    is disabled, from Liping Zhang.

    4) Memory leak when nft_expr_clone() fails, also from Liping Zhang.

    5) Disable UFO when path will apply IPSEC tranformations, from Jakub
    Sitnicki.

    6) Don't bogusly double cwnd in dctcp module, from Florian Westphal.

    7) skb_checksum_help() should never actually use the value "0" for the
    resulting checksum, that has a special meaning, use CSUM_MANGLED_0
    instead. From Eric Dumazet.

    8) Per-tx/rx queue statistic strings are wrong in qed driver, fix from
    Yuval MIntz.

    9) Fix SCTP reference counting of associations and transports in
    sctp_diag. From Xin Long.

    10) When we hit ip6tunnel_xmit() we could have come from an ipv4 path in
    a previous layer or similar, so explicitly clear the ipv6 control
    block in the skb. From Eli Cooper.

    11) Fix bogus sleeping inside of inet_wait_for_connect(), from WANG
    Cong.

    12) Correct deivce ID of T6 adapter in cxgb4 driver, from Hariprasad
    Shenai.

    13) Fix potential access past the end of the skb page frag array in
    tcp_sendmsg(). From Eric Dumazet.

    14) 'skb' can legitimately be NULL in inet{,6}_exact_dif_match(). Fix
    from David Ahern.

    15) Don't return an error in tcp_sendmsg() if we wronte any bytes
    successfully, from Eric Dumazet.

    16) Extraneous unlocks in netlink_diag_dump(), we removed the locking
    but forgot to purge these unlock calls. From Eric Dumazet.

    17) Fix memory leak in error path of __genl_register_family(). We leak
    the attrbuf, from WANG Cong.

    18) cgroupstats netlink policy table is mis-sized, from WANG Cong.

    19) Several XDP bug fixes in mlx5, from Saeed Mahameed.

    20) Fix several device refcount leaks in network drivers, from Johan
    Hovold.

    21) icmp6_send() should use skb dst device not skb->dev to determine L3
    routing domain. From David Ahern.

    22) ip_vs_genl_family sets maxattr incorrectly, from WANG Cong.

    23) We leak new macvlan port in some cases of maclan_common_netlink()
    errors. Fix from Gao Feng.

    24) Similar to the icmp6_send() fix, icmp_route_lookup() should
    determine L3 routing domain using skb_dst(skb)->dev not skb->dev.
    Also from David Ahern.

    25) Several fixes for route offloading and FIB notification handling in
    mlxsw driver, from Jiri Pirko.

    26) Properly cap __skb_flow_dissect()'s return value, from Eric Dumazet.

    27) Fix long standing regression in ipv4 redirect handling, wrt.
    validating the new neighbour's reachability. From Stephen Suryaputra
    Lin.

    28) If sk_filter() trims the packet excessively, handle it reasonably in
    tcp input instead of exploding. From Eric Dumazet.

    29) Fix handling of napi hash state when copying channels in sfc driver,
    from Bert Kenward.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (121 commits)
    mlxsw: spectrum_router: Flush FIB tables during fini
    net: stmmac: Fix lack of link transition for fixed PHYs
    sctp: change sk state only when it has assocs in sctp_shutdown
    bnx2: Wait for in-flight DMA to complete at probe stage
    Revert "bnx2: Reset device during driver initialization"
    ps3_gelic: fix spelling mistake in debug message
    net: ethernet: ixp4xx_eth: fix spelling mistake in debug message
    ibmvnic: Fix size of debugfs name buffer
    ibmvnic: Unmap ibmvnic_statistics structure
    sfc: clear napi_hash state when copying channels
    mlxsw: spectrum_router: Correctly dump neighbour activity
    mlxsw: spectrum: Fix refcount bug on span entries
    bnxt_en: Fix VF virtual link state.
    bnxt_en: Fix ring arithmetic in bnxt_setup_tc().
    Revert "include/uapi/linux/atm_zatm.h: include linux/time.h"
    tcp: take care of truncations done by sk_filter()
    ipv4: use new_gw for redirect neigh lookup
    r8152: Fix error path in open function
    net: bpqether.h: remove if_ether.h guard
    net: __skb_flow_dissect() must cap its return value
    ...

    Linus Torvalds
     

14 Nov, 2016

2 commits

  • This fixes the following panic that can occur with NFSoRDMA.

    general protection fault: 0000 [#1] SMP
    Modules linked in: rpcrdma ib_isert iscsi_target_mod ib_iser libiscsi
    scsi_transport_iscsi ib_srpt target_core_mod ib_srp scsi_transport_srp
    scsi_tgt ib_ipoib rdma_ucm ib_ucm ib_uverbs ib_umad rdma_cm ib_cm iw_cm
    mlx5_ib ib_core intel_powerclamp coretemp kvm_intel kvm sg ioatdma
    ipmi_devintf ipmi_ssif dcdbas iTCO_wdt iTCO_vendor_support pcspkr
    irqbypass sb_edac shpchp dca crc32_pclmul ghash_clmulni_intel edac_core
    lpc_ich aesni_intel lrw gf128mul glue_helper ablk_helper mei_me mei
    ipmi_si cryptd wmi ipmi_msghandler acpi_pad acpi_power_meter nfsd
    auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs libcrc32c sd_mod
    crc_t10dif crct10dif_generic mgag200 i2c_algo_bit drm_kms_helper
    syscopyarea sysfillrect sysimgblt ahci fb_sys_fops ttm libahci mlx5_core
    tg3 crct10dif_pclmul drm crct10dif_common
    ptp i2c_core libata crc32c_intel pps_core fjes dm_mirror dm_region_hash
    dm_log dm_mod
    CPU: 1 PID: 120 Comm: kworker/1:1 Not tainted 3.10.0-514.el7.x86_64 #1
    Hardware name: Dell Inc. PowerEdge R320/0KM5PX, BIOS 2.4.2 01/29/2015
    Workqueue: events check_lifetime
    task: ffff88031f506dd0 ti: ffff88031f584000 task.ti: ffff88031f584000
    RIP: 0010:[] []
    _raw_spin_lock_bh+0x17/0x50
    RSP: 0018:ffff88031f587ba8 EFLAGS: 00010206
    RAX: 0000000000020000 RBX: 20041fac02080072 RCX: ffff88031f587fd8
    RDX: 0000000000000000 RSI: 0000000000000000 RDI: 20041fac02080072
    RBP: ffff88031f587bb0 R08: 0000000000000008 R09: ffffffff8155be77
    R10: ffff880322a59b00 R11: ffffea000bf39f00 R12: 20041fac02080072
    R13: 000000000000000d R14: ffff8800c4fbd800 R15: 0000000000000001
    FS: 0000000000000000(0000) GS:ffff880322a40000(0000)
    knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007f3c52d4547e CR3: 00000000019ba000 CR4: 00000000001407e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    Stack:
    20041fac02080002 ffff88031f587bd0 ffffffff81557830 20041fac02080002
    ffff88031f587c78 ffff88031f587c40 ffffffff8155ae08 000000010157df32
    0000000800000001 ffff88031f587c20 ffffffff81096acb ffffffff81aa37d0
    Call Trace:
    [] lock_sock_nested+0x20/0x50
    [] sock_setsockopt+0x78/0x940
    [] ? lock_timer_base.isra.33+0x2b/0x50
    [] kernel_setsockopt+0x4d/0x50
    [] svc_age_temp_xprts_now+0x174/0x1e0 [sunrpc]
    [] nfsd_inetaddr_event+0x9d/0xd0 [nfsd]
    [] notifier_call_chain+0x4c/0x70
    [] __blocking_notifier_call_chain+0x4d/0x70
    [] blocking_notifier_call_chain+0x16/0x20
    [] __inet_del_ifa+0x168/0x2d0
    [] check_lifetime+0x25f/0x270
    [] process_one_work+0x17b/0x470
    [] worker_thread+0x126/0x410
    [] ? rescuer_thread+0x460/0x460
    [] kthread+0xcf/0xe0
    [] ? kthread_create_on_node+0x140/0x140
    [] ret_from_fork+0x58/0x90
    [] ? kthread_create_on_node+0x140/0x140
    Code: ca 75 f1 5d c3 0f 1f 80 00 00 00 00 eb d9 66 0f 1f 44 00 00 0f 1f
    44 00 00 55 48 89 e5 53 48 89 fb e8 7e 04 a0 ff b8 00 00 02 00 0f
    c1 03 89 c2 c1 ea 10 66 39 c2 75 03 5b 5d c3 83 e2 fe 0f
    RIP [] _raw_spin_lock_bh+0x17/0x50
    RSP

    Signed-off-by: Scott Mayhew
    Fixes: c3d4879e ("sunrpc: Add a function to close temporary transports immediately")
    Reviewed-by: Chuck Lever
    Signed-off-by: J. Bruce Fields

    Scott Mayhew
     
  • Pull USB / PHY fixes from Greg KH:
    "Here are a number of small USB and PHY driver fixes for 4.9-rc5

    Nothing major, just small fixes for reported issues, all of these have
    been in linux-next for a while with no reported issues"

    * tag 'usb-4.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
    USB: cdc-acm: fix TIOCMIWAIT
    cdc-acm: fix uninitialized variable
    drivers/usb: Skip auto handoff for TI and RENESAS usb controllers
    usb: musb: remove duplicated actions
    usb: musb: da8xx: Don't print phy error on -EPROBE_DEFER
    phy: sun4i: check PMU presence when poking unknown bit of pmu
    phy-rockchip-pcie: remove deassert of phy_rst from exit callback
    phy: da8xx-usb: rename the ohci device to ohci-da8xx
    phy: Add reset callback for not generic phy
    uwb: fix device reference leaks
    usb: gadget: u_ether: remove interrupt throttling
    usb: dwc3: st: add missing include
    usb: dwc3: Fix error handling for core init

    Linus Torvalds
     

13 Nov, 2016

1 commit

  • If the bpf program calls bpf_redirect(dev, 0) and dev is
    an ipip/ip6tnl, it currently includes the mac header.
    e.g. If dev is ipip, the end result is IP-EthHdr-IP instead
    of IP-IP.

    The fix is to pull the mac header. At ingress, skb_postpull_rcsum()
    is not needed because the ethhdr should have been pulled once already
    and then got pushed back just before calling the bpf_prog.
    At egress, this patch calls skb_postpull_rcsum().

    If bpf_redirect(dev, BPF_F_INGRESS) is called,
    it also fails now because it calls dev_forward_skb() which
    eventually calls eth_type_trans(skb, dev). The eth_type_trans()
    will set skb->type = PACKET_OTHERHOST because the mac address
    does not match the redirecting dev->dev_addr. The PACKET_OTHERHOST
    will eventually cause the ip_rcv() errors out. To fix this,
    ____dev_forward_skb() is added.

    Joint work with Daniel Borkmann.

    Fixes: cfc7381b3002 ("ip_tunnel: add collect_md mode to IPIP tunnel")
    Fixes: 8d79266bc48c ("ip6_tunnel: add collect_md mode to IPv6 tunnels")
    Acked-by: Daniel Borkmann
    Acked-by: Alexei Starovoitov
    Signed-off-by: Martin KaFai Lau
    Signed-off-by: David S. Miller

    Martin KaFai Lau
     

12 Nov, 2016

6 commits

  • Pull ACPI fix from Rafael Wysocki:
    "Fix a recent regression in the 8250_dw serial driver introduced by
    adding a quirk for the APM X-Gene SoC to it which uncovered an issue
    related to the handling of built-in device properties in the core ACPI
    device enumeration code (Heikki Krogerus)"

    * tag 'acpi-4.9-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPI / platform: Add support for build-in properties

    Linus Torvalds
     
  • * device-properties:
    ACPI / platform: Add support for build-in properties

    Rafael J. Wysocki
     
  • Merge misc fixes from Andrew Morton:
    "15 fixes"

    * emailed patches from Andrew Morton :
    lib/stackdepot: export save/fetch stack for drivers
    mm: kmemleak: scan .data.ro_after_init
    memcg: prevent memcg caches to be both OFF_SLAB & OBJFREELIST_SLAB
    coredump: fix unfreezable coredumping task
    mm/filemap: don't allow partially uptodate page for pipes
    mm/hugetlb: fix huge page reservation leak in private mapping error paths
    ocfs2: fix not enough credit panic
    Revert "console: don't prefer first registered if DT specifies stdout-path"
    mm: hwpoison: fix thp split handling in memory_failure()
    swapfile: fix memory corruption via malformed swapfile
    mm/cma.c: check the max limit for cma allocation
    scripts/bloat-o-meter: fix SIGPIPE
    shmem: fix pageflags after swapping DMA32 object
    mm, frontswap: make sure allocated frontswap map is assigned
    mm: remove extra newline from allocation stall warning

    Linus Torvalds
     
  • Pull VFS fixes from Al Viro:
    "Christoph's and Jan's aio fixes, fixup for generic_file_splice_read
    (removal of pointless detritus that actually breaks it when used for
    gfs2 ->splice_read()) and fixup for generic_file_read_iter()
    interaction with ITER_PIPE destinations."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    splice: remove detritus from generic_file_splice_read()
    mm/filemap: don't allow partially uptodate page for pipes
    aio: fix freeze protection of aio writes
    fs: remove aio_run_iocb
    fs: remove the never implemented aio_fsync file operation
    aio: hold an extra file reference over AIO read/write operations

    Linus Torvalds
     
  • This reverts commit 05fd007e4629 ("console: don't prefer first
    registered if DT specifies stdout-path").

    The reverted commit changes existing behavior on which many ARM boards
    rely. Many ARM small-board-computers, like e.g. the Raspberry Pi have
    both a video output and a serial console. Depending on whether the user
    is using the device as a more regular computer; or as a headless device
    we need to have the console on either one or the other.

    Many users rely on the kernel behavior of the console being present on
    both outputs, before the reverted commit the console setup with no
    console= kernel arguments on an ARM board which sets stdout-path in dt
    would look like this:

    [root@localhost ~]# cat /proc/consoles
    ttyS0 -W- (EC p a) 4:64
    tty0 -WU (E p ) 4:1

    Where as after the reverted commit, it looks like this:

    [root@localhost ~]# cat /proc/consoles
    ttyS0 -W- (EC p a) 4:64

    This commit reverts commit 05fd007e4629 ("console: don't prefer first
    registered if DT specifies stdout-path") restoring the original
    behavior.

    Fixes: 05fd007e4629 ("console: don't prefer first registered if DT specifies stdout-path")
    Link: http://lkml.kernel.org/r/20161104121135.4780-2-hdegoede@redhat.com
    Signed-off-by: Hans de Goede
    Cc: Paul Burton
    Cc: Rob Herring
    Cc: Frank Rowand
    Cc: Thorsten Leemhuis
    Cc: Greg Kroah-Hartman
    Cc: Tejun Heo
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hans de Goede
     
  • Christian Borntraeger reports:

    With commit 8ea1d2a1985a ("mm, frontswap: convert frontswap_enabled to
    static key") kmemleak complains about a memory leak in swapon

    unreferenced object 0x3e09ba56000 (size 32112640):
    comm "swapon", pid 7852, jiffies 4294968787 (age 1490.770s)
    hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    backtrace:
    __vmalloc_node_range+0x194/0x2d8
    vzalloc+0x58/0x68
    SyS_swapon+0xd60/0x12f8
    system_call+0xd6/0x270

    Turns out kmemleak is right. We now allocate the frontswap map
    depending on the kernel config (and no longer on the enablement)

    swapfile.c:
    [...]
    if (IS_ENABLED(CONFIG_FRONTSWAP))
    frontswap_map = vzalloc(BITS_TO_LONGS(maxpages) * sizeof(long));

    but later on this is passed along
    --> enable_swap_info(p, prio, swap_map, cluster_info, frontswap_map);

    and ignored if frontswap is disabled
    --> frontswap_init(p->type, frontswap_map);

    static inline void frontswap_init(unsigned type, unsigned long *map)
    {
    if (frontswap_enabled())
    __frontswap_init(type, map);
    }

    Thing is, that frontswap map is never freed.

    The leakage is relatively not that bad, because swapon is an infrequent
    and privileged operation. However, if the first frontswap backend is
    registered after a swap type has been already enabled, it will WARN_ON
    in frontswap_register_ops() and frontswap will not be available for the
    swap type.

    Fix this by making sure the map is assigned by frontswap_init() as long
    as CONFIG_FRONTSWAP is enabled.

    Fixes: 8ea1d2a1985a ("mm, frontswap: convert frontswap_enabled to static key")
    Link: http://lkml.kernel.org/r/20161026134220.2566-1-vbabka@suse.cz
    Signed-off-by: Vlastimil Babka
    Reported-by: Christian Borntraeger
    Cc: Konrad Rzeszutek Wilk
    Cc: Boris Ostrovsky
    Cc: David Vrabel
    Cc: Juergen Gross
    Cc: "Kirill A. Shutemov"
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Vlastimil Babka
     

11 Nov, 2016

1 commit


10 Nov, 2016

1 commit

  • We have a couple of drivers, acpi_apd.c and acpi_lpss.c,
    that need to pass extra build-in properties to the devices
    they create. Previously the drivers added those properties
    to the struct device which is member of the struct
    acpi_device, but that does not work. Those properties need
    to be assigned to the struct device of the platform device
    instead in order for them to become available to the
    drivers.

    To fix this, this patch changes acpi_create_platform_device
    function to take struct property_entry pointer as parameter.

    Fixes: 20a875e2e86e (serial: 8250_dw: Add quirk for APM X-Gene SoC)
    Signed-off-by: Heikki Krogerus
    Tested-by: Yazen Ghannam
    Tested-by: Jérôme de Bretagne
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Rafael J. Wysocki

    Heikki Krogerus
     

07 Nov, 2016

1 commit

  • …on/linux-phy into usb-linus

    Kishon writes:

    phy: for 4.9 -rc

    phy fixes:
    *) Add a empty function for phy_reset when CONFIG_GENERIC_PHY is not set
    *) change the phy lookup table for da8xx-usb to match it with the name
    present in the board configuraion file (used for non-dt boot)
    *) Fix incorrect programming sequence in w.r.t deassert of phy_rst
    in phy-rockchip-pcie
    *) Fix to avoid NULL pointer dereferencing error in sun4i phy

    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>

    Greg Kroah-Hartman
     

06 Nov, 2016

1 commit

  • Pull MTD fixes from Brian Norris:

    - MAINTAINERS updates to reflect some new maintainers/submaintainers.

    We have some great volunteers who've been developing and reviewing
    already. We're going to try a group maintainership model, so
    eventually you'll probably see pull requests from people besides me.

    - NAND fixes from Boris:
    "Three simple fixes:

    - fix a non-critical bug in the gpmi driver
    - fix a bug in the 'automatic NAND timings selection' feature
    introduced in 4.9-rc1
    - fix a false positive uninitialized-var warning"

    * tag 'for-linus-20161104' of git://git.infradead.org/linux-mtd:
    mtd: mtk: avoid warning in mtk_ecc_encode
    mtd: nand: Fix data interface configuration logic
    mtd: nand: gpmi: disable the clocks on errors
    MAINTAINERS: add more people to the MTD maintainer team
    MAINTAINERS: add a maintainer for the SPI NOR subsystem

    Linus Torvalds
     

05 Nov, 2016

1 commit


04 Nov, 2016

1 commit

  • Andrey reported the following error report while running the syzkaller
    fuzzer:

    general protection fault: 0000 [#1] SMP KASAN
    Dumping ftrace buffer:
    (ftrace buffer empty)
    Modules linked in:
    CPU: 0 PID: 648 Comm: syz-executor Not tainted 4.9.0-rc3+ #333
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    task: ffff8800398c4480 task.stack: ffff88003b468000
    RIP: 0010:[] [< inline >]
    inet_exact_dif_match include/net/tcp.h:808
    RIP: 0010:[] []
    __inet_lookup_listener+0xb6/0x500 net/ipv4/inet_hashtables.c:219
    RSP: 0018:ffff88003b46f270 EFLAGS: 00010202
    RAX: 0000000000000004 RBX: 0000000000004242 RCX: 0000000000000001
    RDX: 0000000000000000 RSI: ffffc90000e3c000 RDI: 0000000000000054
    RBP: ffff88003b46f2d8 R08: 0000000000004000 R09: ffffffff830910e7
    R10: 0000000000000000 R11: 000000000000000a R12: ffffffff867fa0c0
    R13: 0000000000004242 R14: 0000000000000003 R15: dffffc0000000000
    FS: 00007fb135881700(0000) GS:ffff88003ec00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000020cc3000 CR3: 000000006d56a000 CR4: 00000000000006f0
    Stack:
    0000000000000000 000000000601a8c0 0000000000000000 ffffffff00004242
    424200003b9083c2 ffff88003def4041 ffffffff84e7e040 0000000000000246
    ffff88003a0911c0 0000000000000000 ffff88003a091298 ffff88003b9083ae
    Call Trace:
    [] tcp_v4_send_reset+0x584/0x1700 net/ipv4/tcp_ipv4.c:643
    [] tcp_v4_rcv+0x198b/0x2e50 net/ipv4/tcp_ipv4.c:1718
    [] ip_local_deliver_finish+0x332/0xad0
    net/ipv4/ip_input.c:216
    ...

    MD5 has a code path that calls __inet_lookup_listener with a null skb,
    so inet{6}_exact_dif_match needs to check skb against null before pulling
    the flag.

    Fixes: a04a480d4392 ("net: Require exact match for TCP socket lookups if
    dif is l3mdev")
    Reported-by: Andrey Konovalov
    Signed-off-by: David Ahern
    Tested-by: Andrey Konovalov
    Signed-off-by: David S. Miller

    David Ahern
     

01 Nov, 2016

1 commit


31 Oct, 2016

2 commits


30 Oct, 2016

7 commits

  • Pull networking fixes from David Miller:
    "Lots of fixes, mostly drivers as is usually the case.

    1) Don't treat zero DMA address as invalid in vmxnet3, from Alexey
    Khoroshilov.

    2) Fix element timeouts in netfilter's nft_dynset, from Anders K.
    Pedersen.

    3) Don't put aead_req crypto struct on the stack in mac80211, from
    Ard Biesheuvel.

    4) Several uninitialized variable warning fixes from Arnd Bergmann.

    5) Fix memory leak in cxgb4, from Colin Ian King.

    6) Fix bpf handling of VLAN header push/pop, from Daniel Borkmann.

    7) Several VRF semantic fixes from David Ahern.

    8) Set skb->protocol properly in ip6_tnl_xmit(), from Eli Cooper.

    9) Socket needs to be locked in udp_disconnect(), from Eric Dumazet.

    10) Div-by-zero on 32-bit fix in mlx4 driver, from Eugenia Emantayev.

    11) Fix stale link state during failover in NCSCI driver, from Gavin
    Shan.

    12) Fix netdev lower adjacency list traversal, from Ido Schimmel.

    13) Propvide proper handle when emitting notifications of filter
    deletes, from Jamal Hadi Salim.

    14) Memory leaks and big-endian issues in rtl8xxxu, from Jes Sorensen.

    15) Fix DESYNC_FACTOR handling in ipv6, from Jiri Bohac.

    16) Several routing offload fixes in mlxsw driver, from Jiri Pirko.

    17) Fix broadcast sync problem in TIPC, from Jon Paul Maloy.

    18) Validate chunk len before using it in SCTP, from Marcelo Ricardo
    Leitner.

    19) Revert a netns locking change that causes regressions, from Paul
    Moore.

    20) Add recursion limit to GRO handling, from Sabrina Dubroca.

    21) GFP_KERNEL in irq context fix in ibmvnic, from Thomas Falcon.

    22) Avoid accessing stale vxlan/geneve socket in data path, from
    Pravin Shelar"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (189 commits)
    geneve: avoid using stale geneve socket.
    vxlan: avoid using stale vxlan socket.
    qede: Fix out-of-bound fastpath memory access
    net: phy: dp83848: add dp83822 PHY support
    enic: fix rq disable
    tipc: fix broadcast link synchronization problem
    ibmvnic: Fix missing brackets in init_sub_crq_irqs
    ibmvnic: Fix releasing of sub-CRQ IRQs in interrupt context
    Revert "ibmvnic: Fix releasing of sub-CRQ IRQs in interrupt context"
    arch/powerpc: Update parameters for csum_tcpudp_magic & csum_tcpudp_nofold
    net/mlx4_en: Save slave ethtool stats command
    net/mlx4_en: Fix potential deadlock in port statistics flow
    net/mlx4: Fix firmware command timeout during interrupt test
    net/mlx4_core: Do not access comm channel if it has not yet been initialized
    net/mlx4_en: Fix panic during reboot
    net/mlx4_en: Process all completions in RX rings after port goes up
    net/mlx4_en: Resolve dividing by zero in 32-bit system
    net/mlx4_core: Change the default value of enable_qos
    net/mlx4_core: Avoid setting ports to auto when only one port type is supported
    net/mlx4_core: Fix the resource-type enum in res tracker to conform to FW spec
    ...

    Linus Torvalds
     
  • Currently interrupt test that is part of ethtool selftest runs the
    check over all interrupt vectors of the device.
    In mlx4_en package part of interrupt vectors are uninitialized since
    mlx4_ib doesn't exist. This causes NOP FW command to time out.
    Change logic to test current port interrupt vectors only.

    Signed-off-by: Eugenia Emantayev
    Signed-off-by: Tariq Toukan
    Signed-off-by: David S. Miller

    Eugenia Emantayev
     
  • This reverts commit e3f74b841d48
    ("hv_netvsc: report vmbus name in ethtool")'
    because of problem introduced by commit f9a56e5d6a0ba
    ("Drivers: hv: make VMBus bus ids persistent").
    This changed the format of the vmbus name and this new format is too
    long to fit in the bus_info field of ethtool.

    Signed-off-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Stephen Hemminger
     
  • Mark Brown
     
  • In case that the kernel PCI error handlers are not called, we will
    trigger our own recovery flow.

    The health work will give priority to the kernel pci error handlers to
    recover the PCI by waiting for a small period, if the pci error handlers
    are not triggered the manual recovery flow will be executed.

    We don't save pci state in case of manual recovery because it will ruin the
    pci configuration space and we will lose dma sync.

    Fixes: 89d44f0a6c73 ('net/mlx5_core: Add pci error handlers to mlx5_core driver')
    Signed-off-by: Mohamad Haj Yahia
    Signed-off-by: Saeed Mahameed
    Signed-off-by: David S. Miller

    Mohamad Haj Yahia
     
  • Currently there is a race between the health care work and the kernel
    pci error handlers because both of them detect the error, the first one
    to be called will do the error handling.
    There is a chance that health care will disable the pci after resuming
    pci slot.
    Also create a separate WQ because now we will have two types of health
    works, one for the error detection and one for the recovery.

    Fixes: 89d44f0a6c73 ('net/mlx5_core: Add pci error handlers to mlx5_core driver')
    Signed-off-by: Mohamad Haj Yahia
    Signed-off-by: Saeed Mahameed
    Signed-off-by: David S. Miller

    Mohamad Haj Yahia
     
  • ARM 64B cache line systems have L1_CACHE_BYTES set to 128.
    cache_line_size() will return the correct size.

    Fixes: cf50b5efa2fe('net/mlx5_core/ib: New device capabilities
    handling.')
    Signed-off-by: Daniel Jurgens

    Signed-off-by: Saeed Mahameed
    Signed-off-by: David S. Miller

    Daniel Jurgens
     

29 Oct, 2016

4 commits

  • Pull ACPI fixes from Rafael Wysocki:
    "These fix recent ACPICA regressions, an older PCI IRQ management
    regression, and an incorrect return value of a function in the APEI
    code.

    Specifics:

    - Fix three ACPICA issues related to the interpreter locking and
    introduced by recent changes in that area (Lv Zheng).

    - Fix a PCI IRQ management regression introduced during the 4.7 cycle
    and related to the configuration of shared IRQs on systems with an
    ISA bus (Sinan Kaya).

    - Fix up a return value of one function in the APEI code (Punit
    Agrawal)"

    * tag 'acpi-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
    ACPICA: Dispatcher: Fix interpreter locking around acpi_ev_initialize_region()
    ACPICA: Dispatcher: Fix an unbalanced lock exit path in acpi_ds_auto_serialize_method()
    ACPICA: Dispatcher: Fix order issue of method termination
    ACPI / APEI: Fix incorrect return value of ghes_proc()
    ACPI/PCI: pci_link: Include PIRQ_PENALTY_PCI_USING for ISA IRQs
    ACPI/PCI: pci_link: penalize SCI correctly
    ACPI/PCI/IRQ: assign ISA IRQ directly during early boot stages

    Linus Torvalds
     
  • Pull perf fixes from Ingo Molnar:
    "Misc kernel fixes: a virtualization environment related fix, an uncore
    PMU driver removal handling fix, a PowerPC fix and new events for
    Knights Landing"

    * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    perf/x86/intel: Honour the CPUID for number of fixed counters in hypervisors
    perf/powerpc: Don't call perf_event_disable() from atomic context
    perf/core: Protect PMU device removal with a 'pmu_bus_running' check, to fix CONFIG_DEBUG_TEST_DRIVER_REMOVE=y kernel panic
    perf/x86/intel/cstate: Add C-state residency events for Knights Landing

    Linus Torvalds
     
  • As almost all of the callers of the regmap_read_poll_timeout macro
    will include a local ret variable we will always get a Sparse warning
    about the duplication of the ret variable:

    warning: symbol 'ret' shadows an earlier one

    Simply rename the ret variable in the marco to pollret to make this
    significantly less likely to happen.

    Signed-off-by: Charles Keepax
    Signed-off-by: Mark Brown

    Charles Keepax
     
  • Pull drm x86/pat regression fixes from Dave Airlie:
    "This is a standalone pull request for the fix for a regression
    introduced in -rc1 by a change to vm_insert_mixed to start using the
    PAT range tracking to validate page protections. With this fix in
    place, all the VRAM mappings for GPU drivers ended up at UC instead of
    WC.

    There are probably better ways to fix this long term, but nothing I'd
    considered for -fixes that wouldn't need more settling in time. So
    I've just created a new arch API that the drivers can reserve all
    their VRAM aperture ranges as WC"

    * tag 'drm-x86-pat-regression-fix' of git://people.freedesktop.org/~airlied/linux:
    drm/drivers: add support for using the arch wc mapping API.
    x86/io: add interface to reserve io memtype for a resource range. (v1.1)

    Linus Torvalds
     

28 Oct, 2016

5 commits

  • The trinity syscall fuzzer triggered following WARN() on powerpc:

    WARNING: CPU: 9 PID: 2998 at arch/powerpc/kernel/hw_breakpoint.c:278
    ...
    NIP [c00000000093aedc] .hw_breakpoint_handler+0x28c/0x2b0
    LR [c00000000093aed8] .hw_breakpoint_handler+0x288/0x2b0
    Call Trace:
    [c0000002f7933580] [c00000000093aed8] .hw_breakpoint_handler+0x288/0x2b0 (unreliable)
    [c0000002f7933630] [c0000000000f671c] .notifier_call_chain+0x7c/0xf0
    [c0000002f79336d0] [c0000000000f6abc] .__atomic_notifier_call_chain+0xbc/0x1c0
    [c0000002f7933780] [c0000000000f6c40] .notify_die+0x70/0xd0
    [c0000002f7933820] [c00000000001a74c] .do_break+0x4c/0x100
    [c0000002f7933920] [c0000000000089fc] handle_dabr_fault+0x14/0x48

    Followed by a lockdep warning:

    ===============================
    [ INFO: suspicious RCU usage. ]
    4.8.0-rc5+ #7 Tainted: G W
    -------------------------------
    ./include/linux/rcupdate.h:556 Illegal context switch in RCU read-side critical section!

    other info that might help us debug this:

    rcu_scheduler_active = 1, debug_locks = 0
    2 locks held by ls/2998:
    #0: (rcu_read_lock){......}, at: [] .__atomic_notifier_call_chain+0x0/0x1c0
    #1: (rcu_read_lock){......}, at: [] .hw_breakpoint_handler+0x0/0x2b0

    stack backtrace:
    CPU: 9 PID: 2998 Comm: ls Tainted: G W 4.8.0-rc5+ #7
    Call Trace:
    [c0000002f7933150] [c00000000094b1f8] .dump_stack+0xe0/0x14c (unreliable)
    [c0000002f79331e0] [c00000000013c468] .lockdep_rcu_suspicious+0x138/0x180
    [c0000002f7933270] [c0000000001005d8] .___might_sleep+0x278/0x2e0
    [c0000002f7933300] [c000000000935584] .mutex_lock_nested+0x64/0x5a0
    [c0000002f7933410] [c00000000023084c] .perf_event_ctx_lock_nested+0x16c/0x380
    [c0000002f7933500] [c000000000230a80] .perf_event_disable+0x20/0x60
    [c0000002f7933580] [c00000000093aeec] .hw_breakpoint_handler+0x29c/0x2b0
    [c0000002f7933630] [c0000000000f671c] .notifier_call_chain+0x7c/0xf0
    [c0000002f79336d0] [c0000000000f6abc] .__atomic_notifier_call_chain+0xbc/0x1c0
    [c0000002f7933780] [c0000000000f6c40] .notify_die+0x70/0xd0
    [c0000002f7933820] [c00000000001a74c] .do_break+0x4c/0x100
    [c0000002f7933920] [c0000000000089fc] handle_dabr_fault+0x14/0x48

    While it looks like the first WARN() is probably valid, the other one is
    triggered by disabling event via perf_event_disable() from atomic context.

    The event is disabled here in case we were not able to emulate
    the instruction that hit the breakpoint. By disabling the event
    we unschedule the event and make sure it's not scheduled back.

    But we can't call perf_event_disable() from atomic context, instead
    we need to use the event's pending_disable irq_work method to disable it.

    Reported-by: Jan Stancek
    Signed-off-by: Jiri Olsa
    Signed-off-by: Peter Zijlstra (Intel)
    Cc: Alexander Shishkin
    Cc: Arnaldo Carvalho de Melo
    Cc: Huang Ying
    Cc: Jiri Olsa
    Cc: Linus Torvalds
    Cc: Michael Neuling
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/20161026094824.GA21397@krava
    Signed-off-by: Ingo Molnar

    Jiri Olsa
     
  • When changing from one data interface setting to another, one has to
    ensure a specific sequence which is described in the ONFI spec.

    One of these constraints is that the CE line has go high after a reset
    before a command can be sent with the new data interface setting, which
    is not guaranteed by the current implementation.

    Rework the nand_reset() function and all the call sites to make sure the
    CE line is asserted and released when required.

    Also make sure to actually apply the new data interface setting on the
    first die.

    Signed-off-by: Boris Brezillon
    Fixes: d8e725dd8311 ("mtd: nand: automate NAND timings selection")
    Reviewed-by: Sascha Hauer
    Tested-by: Marc Gonzalez

    Boris Brezillon
     
  • Merge misc fixes from Andrew Morton:
    "20 fixes"

    * emailed patches from Andrew Morton :
    drivers/misc/sgi-gru/grumain.c: remove bogus 0x prefix from printk
    cris/arch-v32: cryptocop: print a hex number after a 0x prefix
    ipack: print a hex number after a 0x prefix
    block: DAC960: print a hex number after a 0x prefix
    fs: exofs: print a hex number after a 0x prefix
    lib/genalloc.c: start search from start of chunk
    mm: memcontrol: do not recurse in direct reclaim
    CREDITS: update credit information for Martin Kepplinger
    proc: fix NULL dereference when reading /proc//auxv
    mm: kmemleak: ensure that the task stack is not freed during scanning
    lib/stackdepot.c: bump stackdepot capacity from 16MB to 128MB
    latent_entropy: raise CONFIG_FRAME_WARN by default
    kconfig.h: remove config_enabled() macro
    ipc: account for kmem usage on mqueue and msg
    mm/slab: improve performance of gathering slabinfo stats
    mm: page_alloc: use KERN_CONT where appropriate
    mm/list_lru.c: avoid error-path NULL pointer deref
    h8300: fix syscall restarting
    kcov: properly check if we are in an interrupt
    mm/slab: fix kmemcg cache creation delayed issue

    Linus Torvalds
     
  • The use of config_enabled() is ambiguous. For config options,
    IS_ENABLED(), IS_REACHABLE(), etc. will make intention clearer.
    Sometimes config_enabled() has been used for non-config options because
    it is useful to check whether the given symbol is defined or not.

    I have been tackling on deprecating config_enabled(), and now is the
    time to finish this work.

    Some new users have appeared for v4.9-rc1, but it is trivial to replace
    them:

    - arch/x86/mm/kaslr.c
    replace config_enabled() with IS_ENABLED() because
    CONFIG_X86_ESPFIX64 and CONFIG_EFI are boolean.

    - include/asm-generic/export.h
    replace config_enabled() with __is_defined().

    Then, config_enabled() can be removed now.

    Going forward, please use IS_ENABLED(), IS_REACHABLE(), etc. for config
    options, and __is_defined() for non-config symbols.

    Link: http://lkml.kernel.org/r/1476616078-32252-1-git-send-email-yamada.masahiro@socionext.com
    Signed-off-by: Masahiro Yamada
    Acked-by: Ingo Molnar
    Acked-by: Nicolas Pitre
    Cc: Peter Oberparleiter
    Cc: Arnd Bergmann
    Cc: Kees Cook
    Cc: Michal Marek
    Cc: "H. Peter Anvin"
    Cc: Thomas Gleixner
    Cc: Thomas Garnier
    Cc: Paul Bolle
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Masahiro Yamada
     
  • …rnel/git/dgc/linux-xfs

    Pull xfs fixes from Dave Chinner:
    "This update contains fixes for most of the outstanding regressions
    introduced with the 4.9-rc1 XFS merge. There is also a fix for an
    iomap bug, too.

    This is a quite a bit larger than I'd prefer for a -rc3, but most of
    the change comes from cleaning up the new reflink copy on write code;
    it's much simpler and easier to understand now. These changes fixed
    several bugs in the new code, and it wasn't clear that there was an
    easier/simpler way to fix them. The rest of the fixes are the usual
    size you'd expect at this stage.

    I've left the commits to soak in linux-next for a some extra time
    because of the size before asking you to pull, no new problems with
    them have been reported so I think it's all OK.

    Summary:
    - iomap page offset masking fix for page faults
    - add IOMAP_REPORT to distinguish between read and fiemap map
    requests
    - cleanups to new shared data extent code
    - fix mount active status on failed log recovery
    - fix broken dquots in a buffer calculation
    - fix locking order issues and merge xfs_reflink_remap_range and
    xfs_file_share_range
    - rework unmapping of CoW extents and remove now unused functions
    - clean state when CoW is done"

    * tag 'xfs-fixes-for-linus-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs: (25 commits)
    xfs: clear cowblocks tag when cow fork is emptied
    xfs: fix up inode cowblocks tracking tracepoints
    fs: Do to trim high file position bits in iomap_page_mkwrite_actor
    xfs: remove xfs_bunmapi_cow
    xfs: optimize xfs_reflink_end_cow
    xfs: optimize xfs_reflink_cancel_cow_blocks
    xfs: refactor xfs_bunmapi_cow
    xfs: optimize writes to reflink files
    xfs: don't bother looking at the refcount tree for reads
    xfs: handle "raw" delayed extents xfs_reflink_trim_around_shared
    xfs: add xfs_trim_extent
    iomap: add IOMAP_REPORT
    xfs: merge xfs_reflink_remap_range and xfs_file_share_range
    xfs: remove xfs_file_wait_for_io
    xfs: move inode locking from xfs_reflink_remap_range to xfs_file_share_range
    xfs: fix the same_inode check in xfs_file_share_range
    xfs: remove the same fs check from xfs_file_share_range
    libxfs: v3 inodes are only valid on crc-enabled filesystems
    libxfs: clean up _calc_dquots_per_chunk
    xfs: unset MS_ACTIVE if mount fails
    ...

    Linus Torvalds