19 Jan, 2016

1 commit


12 Jan, 2016

3 commits

  • Dave Chinner
     
  • When we do dquot readahead in log recovery, we do not use a verifier
    as the underlying buffer may not have dquots in it. e.g. the
    allocation operation hasn't yet been replayed. Hence we do not want
    to fail recovery because we detect an operation to be replayed has
    not been run yet. This problem was addressed for inodes in commit
    d891400 ("xfs: inode buffers may not be valid during recovery
    readahead") but the problem was not recognised to exist for dquots
    and their buffers as the dquot readahead did not have a verifier.

    The result of not using a verifier is that when the buffer is then
    next read to replay a dquot modification, the dquot buffer verifier
    will only be attached to the buffer if *readahead is not complete*.
    Hence we can read the buffer, replay the dquot changes and then add
    it to the delwri submission list without it having a verifier
    attached to it. This then generates warnings in xfs_buf_ioapply(),
    which catches and warns about this case.

    Fix this and make it handle the same readahead verifier error cases
    as for inode buffers by adding a new readahead verifier that has a
    write operation as well as a read operation that marks the buffer as
    not done if any corruption is detected. Also make sure we don't run
    readahead if the dquot buffer has been marked as cancelled by
    recovery.

    This will result in readahead either succeeding and the buffer
    having a valid write verifier, or readahead failing and the buffer
    state requiring the subsequent read to resubmit the IO with the new
    verifier. In either case, this will result in the buffer always
    ending up with a valid write verifier on it.

    Note: we also need to fix the inode buffer readahead error handling
    to mark the buffer with EIO. Brian noticed the code I copied from
    there wrong during review, so fix it at the same time. Add comments
    linking the two functions that handle readahead verifier errors
    together so we don't forget this behavioural link in future.

    cc: # 3.12 - current
    Signed-off-by: Dave Chinner
    Reviewed-by: Brian Foster
    Signed-off-by: Dave Chinner

    Dave Chinner
     
  • When we do inode readahead in log recovery, we do can do the
    readahead before we've replayed the icreate transaction that stamps
    the buffer with inode cores. The inode readahead verifier catches
    this and marks the buffer as !done to indicate that it doesn't yet
    contain valid inodes.

    In adding buffer error notification (i.e. setting b_error = -EIO at
    the same time as as we clear the done flag) to such a readahead
    verifier failure, we can then get subsequent inode recovery failing
    with this error:

    XFS (dm-0): metadata I/O error: block 0xa00060 ("xlog_recover_do..(read#2)") error 5 numblks 32

    This occurs when readahead completion races with icreate item replay
    such as:

    inode readahead
    find buffer
    lock buffer
    submit RA io
    ....
    icreate recovery
    xfs_trans_get_buffer
    find buffer
    lock buffer

    .....

    fails verifier
    clear XBF_DONE
    set bp->b_error = -EIO
    release and unlock buffer

    icreate initialises buffer
    marks buffer as done
    adds buffer to delayed write queue
    releases buffer

    At this point, we have an initialised inode buffer that is up to
    date but has an -EIO state registered against it. When we finally
    get to recovering an inode in that buffer:

    inode item recovery
    xfs_trans_read_buffer
    find buffer
    lock buffer
    sees XBF_DONE is set, returns buffer
    sees bp->b_error is set
    fail log recovery!

    Essentially, we need xfs_trans_get_buf_map() to clear the error status of
    the buffer when doing a lookup. This function returns uninitialised
    buffers, so the buffer returned can not be in an error state and
    none of the code that uses this function expects b_error to be set
    on return. Indeed, there is an ASSERT(!bp->b_error); in the
    transaction case in xfs_trans_get_buf_map() that would have caught
    this if log recovery used transactions....

    This patch firstly changes the inode readahead failure to set -EIO
    on the buffer, and secondly changes xfs_buf_get_map() to never
    return a buffer with an error state set so this first change doesn't
    cause unexpected log recovery failures.

    cc: # 3.12 - current
    Signed-off-by: Dave Chinner
    Reviewed-by: Brian Foster
    Signed-off-by: Dave Chinner

    Dave Chinner
     

11 Jan, 2016

1 commit

  • Calls to xfs_bmap_finish() and xfs_trans_ijoin(), and the
    associated comments were replicated several times across
    the attribute code, all dealing with what to do if the
    transaction was or wasn't committed.

    And in that replicated code, an ASSERT() test of an
    uninitialized variable occurs in several locations:

    error = xfs_attr_thing(&args);
    if (!error) {
    error = xfs_bmap_finish(&args.trans, args.flist,
    &committed);
    }
    if (error) {
    ASSERT(committed);

    If the first xfs_attr_thing() failed, we'd skip the xfs_bmap_finish,
    never set "committed", and then test it in the ASSERT.

    Fix this up by moving the committed state internal to xfs_bmap_finish,
    and add a new inode argument. If an inode is passed in, it is passed
    through to __xfs_trans_roll() and joined to the transaction there if
    the transaction was committed.

    xfs_qm_dqalloc() was a little unique in that it called bjoin rather
    than ijoin, but as Dave points out we can detect the committed state
    but checking whether (*tpp != tp).

    Addresses-Coverity-Id: 102360
    Addresses-Coverity-Id: 102361
    Addresses-Coverity-Id: 102363
    Addresses-Coverity-Id: 102364
    Signed-off-by: Eric Sandeen
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Dave Chinner

    Eric Sandeen
     

08 Jan, 2016

2 commits

  • For large sparse or fragmented files, checking every single entry in
    the bmapbt on every operation is prohibitively expensive. Especially
    as such checks rarely discover problems during normal operations on
    high extent coutn files. Our regression tests don't tend to exercise
    files with hundreds of thousands to millions of extents, so mostly
    this isn't noticed.

    However, trying to run things like xfs_mdrestore of large filesystem
    dumps on a debug kernel quickly becomes impossible as the CPU is
    completely burnt up repeatedly walking the sparse file bmapbt that
    is generated for every allocation that is made.

    Hence, if the file has more than 10,000 extents, just don't bother
    with walking the tree to check it exhaustively. The btree code has
    checks that ensure that the newly inserted/removed/modified record
    is correctly ordered, so the entrie tree walk in thses cases has
    limited additional value.

    Signed-off-by: Dave Chinner
    Reviewed-by: Brian Foster
    Signed-off-by: Dave Chinner

    Dave Chinner
     
  • This allows us to see page cache driven readahead in action as it
    passes through XFS. This helps to understand buffered read
    throughput problems such as readahead IO IO sizes being too small
    for the underlying device to reach max throughput.

    Signed-off-by: Dave Chinner
    Reviewed-by: Brian Foster
    Signed-off-by: Dave Chinner

    Dave Chinner
     

05 Jan, 2016

4 commits

  • Dave Chinner
     
  • Dave Chinner
     
  • XFS now uses CRC verification over a limited section of the log to
    detect torn writes prior to a crash. This is difficult to test directly
    due to the timing and hardware requirements to cause a short write.

    Add a mechanism to inject CRC errors into log records to facilitate
    testing torn write detection during log recovery. This mechanism is
    dangerous and can result in filesystem corruption. Thus, it is only
    available in DEBUG mode for testing/development purposes. Set a non-zero
    value to the following sysfs entry to enable error injection:

    /sys/fs/xfs//log/log_badcrc_factor

    Once enabled, XFS intentionally writes an invalid CRC to a log record at
    some random point in the future based on the provided frequency. The
    filesystem immediately shuts down once the record has been written to
    the physical log to prevent metadata writeback (e.g., AIL insertion)
    once the log write completes. This helps reasonably simulate a torn
    write to the log as the affected record must be safe to discard. The
    next mount after the intentional shutdown requires log recovery and
    should detect and recover from the torn write.

    Note again that this _will_ result in data loss or worse. For testing
    and development purposes only!

    Signed-off-by: Brian Foster
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Brian Foster
     
  • Certain types of storage, such as persistent memory, do not provide
    sector atomicity for writes. This means that if a crash occurs while XFS
    is writing log records, only part of those records might make it to the
    storage. This is problematic because log recovery uses the cycle value
    packed at the top of each log block to locate the head/tail of the log.
    This can lead to CRC verification failures during log recovery and an
    unmountable fs for a filesystem that is otherwise consistent.

    Update log recovery to incorporate log record CRC verification as part
    of the head/tail discovery process. Once the head is located via the
    traditional algorithm, run a CRC-only pass over the records up to the
    head of the log. If CRC verification fails, assume that the records are
    torn as a matter of policy and trim the head block back to the start of
    the first bad record.

    Signed-off-by: Brian Foster
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Brian Foster
     

04 Jan, 2016

25 commits

  • Rather than just being able to turn DAX on and off via a mount
    option, some applications may only want to enable DAX for certain
    performance critical files in a filesystem.

    This patch introduces a new inode flag to enable DAX in the v3 inode
    di_flags2 field. It adds support for setting and clearing flags in
    the di_flags2 field via the XFS_IOC_FSSETXATTR ioctl, and sets the
    S_DAX inode flag appropriately when it is seen.

    When this flag is set on a directory, it acts as an "inherit flag".
    That is, inodes created in the directory will automatically inherit
    the on-disk inode DAX flag, enabling administrators to set up
    directory heirarchies that automatically use DAX. Setting this flag
    on an empty root directory will make the entire filesystem use DAX
    by default.

    Signed-off-by: Dave Chinner

    Dave Chinner
     
  • Now that the ioctls have been hoisted up to the VFS level, use
    the VFs definitions directly and remove the XFS specific definitions
    completely. Userspace is going to have to handle the change of this
    interface separately, so removing the definitions from xfs_fs.h is
    not an issue here at all.

    Signed-off-by: Dave Chinner

    Dave Chinner
     
  • Hoist the ioctl definitions for the XFS_IOC_FS[SG]SETXATTR API from
    fs/xfs/libxfs/xfs_fs.h to include/uapi/linux/fs.h so that the ioctls
    can be used by all filesystems, not just XFS. This enables
    (initially) ext4 to use the ioctl to set project IDs on inodes.

    Based-on-patch-from: Li Xi
    Signed-off-by: Dave Chinner

    Dave Chinner
     
  • Doing a splice read (generic/249) generates a lockdep splat because
    we recursively lock the inode iolock in this path:

    SyS_sendfile64
    do_sendfile
    do_splice_direct
    splice_direct_to_actor
    do_splice_to
    xfs_file_splice_read <<<<<< lock here
    default_file_splice_read
    vfs_readv
    do_readv_writev
    do_iter_readv_writev
    xfs_file_read_iter <<<<<< then here

    The issue here is that for DAX inodes we need to avoid the page
    cache path and hence simply push it into the normal read path.
    Unfortunately, we can't tell down at xfs_file_read_iter() whether we
    are being called from the splice path and hence we cannot avoid the
    locking at this layer. Hence we simply have to drop the inode
    locking at the higher splice layer for DAX.

    Signed-off-by: Dave Chinner
    Tested-by: Ross Zwisler
    Signed-off-by: Dave Chinner

    Dave Chinner
     
  • Commit 1ca1915 ("xfs: Don't use unwritten extents for DAX") enabled
    the DAX allocation call to dip into the reserve pool in case it was
    converting unwritten extents rather than allocating blocks. This was
    a direct copy of the unwritten extent conversion code, but had an
    unintended side effect of allowing normal data block allocation to
    use the reserve pool. Hence normal block allocation could deplete
    the reserve pool and prevent unwritten extent conversion at ENOSPC,
    hence violating fallocate guarantees on preallocated space.

    Fix it by checking whether the incoming map from __xfs_get_blocks()
    spans an unwritten extent and only use the reserve pool if the
    allocation covers an unwritten extent.

    Signed-off-by: Dave Chinner
    Tested-by: Ross Zwisler
    Signed-off-by: Dave Chinner

    Dave Chinner
     
  • The return type "unsigned long" was used by the suffix_kstrtoint()
    function even though it will eventually return a negative error code.
    Improve this implementation detail by using the type "int" instead.

    This issue was detected by using the Coccinelle software.

    Signed-off-by: Markus Elfring
    Reviewed-by: Eric Sandeen
    Signed-off-by: Dave Chinner

    Markus Elfring
     
  • Create xfs_btree_sblock_verify() to verify short-format btree blocks
    (i.e. the per-AG btrees with 32-bit block pointers) instead of
    open-coding them.

    Signed-off-by: Darrick J. Wong
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Darrick J. Wong
     
  • Because struct xfs_agfl is 36 bytes long and has a 64-bit integer
    inside it, gcc will quietly round the structure size up to the nearest
    64 bits -- in this case, 40 bytes. This results in the XFS_AGFL_SIZE
    macro returning incorrect results for v5 filesystems on 64-bit
    machines (118 items instead of 119). As a result, a 32-bit xfs_repair
    will see garbage in AGFL item 119 and complain.

    Therefore, tell gcc not to pad the structure so that the AGFL size
    calculation is correct.

    cc: # 3.10 - 4.4
    Signed-off-by: Darrick J. Wong
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Darrick J. Wong
     
  • Use a convenience variable instead of open-coding the inode fork.
    This isn't really needed for now, but will become important when we
    add the copy-on-write fork later.

    Signed-off-by: Darrick J. Wong
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Darrick J. Wong
     
  • Update the log ticket reservation type printing code to reflect
    all the types of log tickets, to avoid incorrect debug output and
    avoid running off the end of the array.

    Signed-off-by: Darrick J. Wong
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Darrick J. Wong
     
  • Since xfs_repair wants to use xfs_alloc_fix_freelist, remove the
    static designation. xfsprogs already has this; this simply brings
    the kernel up to date.

    Signed-off-by: Darrick J. Wong
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Darrick J. Wong
     
  • There are no callers of the xfs_buf_ioend_async() function outside
    of the fs/xfs/xfs_buf.c. So, let's make it static.

    Signed-off-by: Alexander Kuleshov
    Reviewed-by: Brian Foster
    Signed-off-by: Dave Chinner

    Alexander Kuleshov
     
  • Linux's quota subsystem has an ability to handle project quota. This
    commit just utilizes the ability from xfs side. dbus-monitor and
    quota_nld shipped as part of quota-tools can be used for testing.
    See the patch posting on the XFS list for details on testing.

    Signed-off-by: Masatake YAMATO
    Reviewed-by: Brian Foster
    Signed-off-by: Dave Chinner

    Masatake YAMATO
     
  • In my earlier commit

    c29aad4 xfs: pass mp to XFS_WANT_CORRUPTED_GOTO

    I added some local mp variables with code which indicates that
    mp might be NULL. Coverity doesn't like this now, because the
    updated per-fs XFS_STATS macros dereference mp.

    I don't think this is actually a problem; from what I can tell,
    we cannot get to these functions with a null bma->tp, so my NULL
    check was probably pointless. Still, it's not super obvious.

    So switch this code to get mp from the inode on the xfs_bmalloca
    structure, with no conditional, because the functions are already
    using bmap->ip directly.

    Addresses-Coverity-Id: 1339552
    Addresses-Coverity-Id: 1339553
    Signed-off-by: Eric Sandeen
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Eric Sandeen
     
  • This adds a name to each buf_ops structure, so that if
    a verifier fails we can print the type of verifier that
    failed it. Should be a slight debugging aid, I hope.

    Signed-off-by: Eric Sandeen
    Reviewed-by: Brian Foster
    Signed-off-by: Dave Chinner

    Eric Sandeen
     
  • If there is any non zero bit in a long bitmap, it can jump out of the
    loop and finish the function as soon as possible.

    Signed-off-by: Jia He
    Reviewed-by: Brian Foster
    Signed-off-by: Dave Chinner

    Jia He
     
  • As part of the head/tail discovery process, log recovery locates the
    head block and then reverse seeks to find the start of the last active
    record in the log. This is non-trivial as the record itself could have
    wrapped around the end of the physical log. Log recovery torn write
    detection potentially needs to walk further behind the last record in
    the log, as multiple log I/Os can be in-flight at one time during a
    crash event.

    Therefore, refactor the reverse log record header search mechanism into
    a new helper that supports the ability to seek past an arbitrary number
    of log records (or until the tail is hit). Update the head/tail search
    mechanism to call the new helper, but otherwise there is no change in
    log recovery behavior.

    Signed-off-by: Brian Foster
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Brian Foster
     
  • Log recovery torn write detection uses CRC verification over a range of
    the active log to identify torn writes. Since the generic log recovery
    pass code implements a superset of the functionality required for CRC
    verification, it can be easily modified to support a CRC verification
    only pass.

    Create a new CRC pass type and update the log record processing helper
    to skip everything beyond CRC verification when in this mode. This pass
    will be invoked in subsequent patches to implement torn write detection.

    Signed-off-by: Brian Foster
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Brian Foster
     
  • Each log recovery pass walks from the tail block to the head block and
    processes records appropriately based on the associated log pass type.
    There are various failure conditions that can occur through this
    sequence, such as I/O errors, CRC errors, etc. Log torn write detection
    will perform CRC verification near the head of the log to detect torn
    writes and trim torn records from the log appropriately.

    As it is, xlog_do_recovery_pass() only returns an error code in the
    event of CRC failure, which isn't enough information to trim the head of
    the log. Update xlog_do_recovery_pass() to optionally return the start
    block of the associated record when an error occurs. This patch contains
    no functional changes.

    Signed-off-by: Brian Foster
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Brian Foster
     
  • Log record CRC verification currently occurs during active log recovery,
    immediately before a log record is unpacked. Therefore, the CRC
    calculation code is buried within the data unpack function. CRC
    verification pass support only needs to go so far as check the CRC, but
    this is not easily allowed as the code is currently organized.

    Since we now have a new log record processing helper, pull the record
    CRC verification code out from the unpack helper and open-code it at the
    top of the new process helper. This facilitates the ability to modify
    how records are processed based on the type of the current pass. This
    patch contains no functional changes.

    Signed-off-by: Brian Foster
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Brian Foster
     
  • xlog_do_recovery_pass() duplicates a couple function calls related to
    processing log records because the function must handle wrapping around
    the end of the log if the head is behind the tail. This is implemented
    as separate loops. CRC verification pass support will modify how records
    are processed in both of these loops.

    Rather than continue to duplicate code, factor the calls that process a
    log record into a new helper and call that helper from both loops. This
    patch contains no functional changes.

    Signed-off-by: Brian Foster
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Brian Foster
     
  • XFS log records have separate fields for the record size and the iclog
    size used to write the record. mkfs.xfs zeroes the log and writes an
    unmount record to generate a clean log for the subsequent mount. The
    userspace record logging code has a bug where the iclog size (h_size)
    field of the log record is hardcoded to 32k, even if a log stripe unit
    is specified. The log record length is correctly extended to the stripe
    unit. Since the kernel log recovery code uses the h_size field to
    determine the log buffer size, this means that the kernel can attempt to
    read/process records larger than the buffer size and overrun the buffer.

    This has historically not been a problem because the kernel doesn't
    actually run through log recovery in the clean unmount case. Instead,
    the kernel detects that a single unmount record exists between the head
    and tail and pushes the tail forward such that the log is viewed as
    clean (head == tail). Once CRC verification is enabled, however, all
    records at the head of the log are verified for CRC errors and thus we
    are susceptible to overrun problems if the iclog field is not correct.

    While the core problem must be fixed in userspace, this is historical
    behavior that must be detected in the kernel to avoid severe side
    effects such as memory corruption and crashes. Update the log buffer
    size calculation code to detect this condition, warn the user and resize
    the log buffer based on the log stripe unit. Return a corruption error
    in cases where this does not look like a clean filesystem (i.e., the log
    record header indicates more than one operation).

    Signed-off-by: Brian Foster
    Reviewed-by: Dave Chinner
    Signed-off-by: Dave Chinner

    Brian Foster
     
  • Linus Torvalds
     
  • Pull MIPS build fix from Ralf Baechle:
    "Fix a makefile issue resulting in build breakage with older binutils.

    This has sat in -next for a few days, testers and buildbot are happy
    with it, too though if you are going for another -rc that'd certainly
    help ironing out a few more issues"

    * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus:
    MIPS: VDSO: Fix build error with binutils 2.24 and earlier

    Linus Torvalds
     
  • Pull i915 drm fixes from Jani Nikula:
    "Two display fixes still for v4.4.

    The new year's resolution is to start using signed tags per Linus'
    request. This one is still unsigned; I want to fix this up in our
    maintainer scripts instead of doing it one-off"

    * tag 'drm-intel-fixes-2016-01-02' of git://anongit.freedesktop.org/drm-intel:
    drm/i915: increase the tries for HDMI hotplug live status checking
    drm/i915: Unbreak check_digital_port_conflicts()

    Linus Torvalds
     

01 Jan, 2016

4 commits

  • Pull PCI bugfix from Bjorn Helgaas:
    "Here's another fix for v4.4.

    This fixes 32-bit config reads for the HiSilicon driver. Obviously
    the driver is completely broken without this fix (apparently it
    actually was tested internally, but got broken somehow in the process
    of upstreaming it).

    Summary:

    HiSilicon host bridge driver
    Fix 32-bit config reads (Dongdong Liu)"

    * tag 'pci-v4.4-fixes-3' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
    PCI: hisi: Fix hisi_pcie_cfg_read() 32-bit reads

    Linus Torvalds
     
  • Pull sparc fixes from David Miller:
    "Just some missing syscall wire ups"

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
    sparc: Wire up mlock2 system call.
    sparc: Add all necessary direct socket system calls.

    Linus Torvalds
     
  • Pull networking fixes from David Miller:

    1) Prevent XFRM per-cpu counter updates for one namespace from being
    applied to another namespace. Fix from DanS treetman.

    2) Fix RCU de-reference in iwl_mvm_get_key_sta_id(), from Johannes
    Berg.

    3) Remove ethernet header assumption in nft_do_chain_netdev(), from
    Pablo Neira Ayuso.

    4) Fix cpsw PHY ident with multiple slaves and fixed-phy, from Pascal
    Speck.

    5) Fix use after free in sixpack_close and mkiss_close.

    6) Fix VXLAN fw assertion on bnx2x, from Yuval Mintz.

    7) natsemi doesn't check for DMA mapping errors, from Alexey
    Khoroshilov.

    8) Fix inverted test in ip6addrlbl_get(), from ANdrey Ryabinin.

    9) Missing initialization of needed_headroom in geneve tunnel driver,
    from Paolo Abeni.

    10) Fix conntrack template leak in openvswitch, from Joe Stringer.

    11) Mission initialization of wq->flags in sock_alloc_inode(), from
    Nicolai Stange.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (35 commits)
    sctp: sctp should release assoc when sctp_make_abort_user return NULL in sctp_close
    net, socket, socket_wq: fix missing initialization of flags
    drivers: net: cpsw: fix error return code
    openvswitch: Fix template leak in error cases.
    sctp: label accepted/peeled off sockets
    sctp: use GFP_USER for user-controlled kmalloc
    qlcnic: fix a loop exit condition better
    net: cdc_ncm: avoid changing RX/TX buffers on MTU changes
    geneve: initialize needed_headroom
    ipv6: honor ifindex in case we receive ll addresses in router advertisements
    addrconf: always initialize sysctl table data
    ipv6/addrlabel: fix ip6addrlbl_get()
    switchdev: bridge: Pass ageing time as clock_t instead of jiffies
    sh_eth: fix 16-bit descriptor field access endianness too
    veth: don’t modify ip_summed; doing so treats packets with bad checksums as good.
    net: usb: cdc_ncm: Adding Dell DW5813 LTE AT&T Mobile Broadband Card
    net: usb: cdc_ncm: Adding Dell DW5812 LTE Verizon Mobile Broadband Card
    natsemi: add checks for dma mapping errors
    rhashtable: Kill harmless RCU warning in rhashtable_walk_init
    openvswitch: correct encoding of set tunnel action attributes
    ...

    Linus Torvalds
     
  • Signed-off-by: David S. Miller

    David S. Miller