11 Jul, 2021

1 commit

  • Pull cifs fixes from Steve French:
    "13 cifs/smb3 fixes. Most are to address minor issues pointed out by
    Coverity.

    Also includes a packet signing enhancement and mount improvement"

    * tag '5.14-rc-smb3-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6:
    cifs: update internal version number
    cifs: prevent NULL deref in cifs_compose_mount_options()
    SMB3.1.1: Add support for negotiating signing algorithm
    cifs: use helpers when parsing uid/gid mount options and validate them
    CIFS: Clarify SMB1 code for POSIX Lock
    CIFS: Clarify SMB1 code for rename open file
    CIFS: Clarify SMB1 code for delete
    CIFS: Clarify SMB1 code for SetFileSize
    smb3: fix typo in header file
    CIFS: Clarify SMB1 code for UnixSetPathInfo
    CIFS: Clarify SMB1 code for UnixCreateSymLink
    cifs: clarify SMB1 code for UnixCreateHardLink
    cifs: make locking consistent around the server session status

    Linus Torvalds
     

10 Jul, 2021

10 commits

  • Pull io_uring fixes from Jens Axboe:
    "A few fixes that should go into this merge.

    One fixes a regression introduced in this release, others are just
    generic fixes, mostly related to handling fallback task_work"

    * tag 'io_uring-5.14-2021-07-09' of git://git.kernel.dk/linux-block:
    io_uring: remove dead non-zero 'poll' check
    io_uring: mitigate unlikely iopoll lag
    io_uring: fix drain alloc fail return code
    io_uring: fix exiting io_req_task_work_add leaks
    io_uring: simplify task_work func
    io_uring: fix stuck fallback reqs

    Linus Torvalds
     
  • Pull more block updates from Jens Axboe:
    "A combination of changes that ended up depending on both the driver
    and core branch (and/or the IDE removal), and a few late arriving
    fixes. In detail:

    - Fix io ticks wrap-around issue (Chunguang)

    - nvme-tcp sock locking fix (Maurizio)

    - s390-dasd fixes (Kees, Christoph)

    - blk_execute_rq polling support (Keith)

    - blk-cgroup RCU iteration fix (Yu)

    - nbd backend ID addition (Prasanna)

    - Partition deletion fix (Yufen)

    - Use blk_mq_alloc_disk for mmc, mtip32xx, ubd (Christoph)

    - Removal of now dead block request types due to IDE removal
    (Christoph)

    - Loop probing and control device cleanups (Christoph)

    - Device uevent fix (Christoph)

    - Misc cleanups/fixes (Tetsuo, Christoph)"

    * tag 'block-5.14-2021-07-08' of git://git.kernel.dk/linux-block: (34 commits)
    blk-cgroup: prevent rcu_sched detected stalls warnings while iterating blkgs
    block: fix the problem of io_ticks becoming smaller
    nvme-tcp: can't set sk_user_data without write_lock
    loop: remove unused variable in loop_set_status()
    block: remove the bdgrab in blk_drop_partitions
    block: grab a device refcount in disk_uevent
    s390/dasd: Avoid field over-reading memcpy()
    dasd: unexport dasd_set_target_state
    block: check disk exist before trying to add partition
    ubd: remove dead code in ubd_setup_common
    nvme: use return value from blk_execute_rq()
    block: return errors from blk_execute_rq()
    nvme: use blk_execute_rq() for passthrough commands
    block: support polling through blk_execute_rq
    block: remove REQ_OP_SCSI_{IN,OUT}
    block: mark blk_mq_init_queue_data static
    loop: rewrite loop_exit using idr_for_each_entry
    loop: split loop_lookup
    loop: don't allow deleting an unspecified loop device
    loop: move loop_ctl_mutex locking into loop_add
    ...

    Linus Torvalds
     
  • To 2.33

    Signed-off-by: Steve French

    Steve French
     
  • The optional @ref parameter might contain an NULL node_name, so
    prevent dereferencing it in cifs_compose_mount_options().

    Addresses-Coverity: 1476408 ("Explicit null dereferenced")
    Signed-off-by: Paulo Alcantara (SUSE)
    Signed-off-by: Steve French

    Paulo Alcantara
     
  • Support for faster packet signing (using GMAC instead of CMAC) can
    now be negotiated to some newer servers, including Windows.
    See MS-SMB2 section 2.2.3.17.

    This patch adds support for sending the new negotiate context
    with the first of three supported signing algorithms (AES-CMAC)
    and decoding the response. A followon patch will add support
    for sending the other two (including AES-GMAC, which is fastest)
    and changing the signing algorithm used based on what was
    negotiated.

    To allow the client to request GMAC signing set module parameter
    "enable_negotiate_signing" to 1.

    Reviewed-by: Ronnie Sahlberg
    Reviewed-by: Pavel Shilovsky
    Signed-off-by: Steve French

    Steve French
     
  • Pull UBIFS updates from Richard Weinberger:

    - Fix for a race xattr list and modification

    - Various minor fixes (spelling, return codes, ...)

    * tag 'for-linus-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs:
    ubifs: Set/Clear I_LINKABLE under i_lock for whiteout inode
    ubifs: Fix spelling mistakes
    ubifs: Remove ui_mutex in ubifs_xattr_get and change_xattr
    ubifs: Fix races between xattr_{set|get} and listxattr operations
    ubifs: fix snprintf() checking
    ubifs: journal: Fix error return code in ubifs_jnl_write_inode()

    Linus Torvalds
     
  • Pull ext4 updates from Ted Ts'o:
    "Ext4 regression and bug fixes"

    * tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    ext4: inline jbd2_journal_[un]register_shrinker()
    ext4: fix flags validity checking for EXT4_IOC_CHECKPOINT
    ext4: fix possible UAF when remounting r/o a mmp-protected file system
    ext4: use ext4_grp_locked_error in mb_find_extent
    ext4: fix WARN_ON_ONCE(!buffer_uptodate) after an error writing the superblock
    Revert "ext4: consolidate checks for resize of bigalloc into ext4_resize_begin"

    Linus Torvalds
     
  • Pull ceph updates from Ilya Dryomov:
    "We have new filesystem client metrics for reporting I/O sizes from
    Xiubo, two patchsets from Jeff that begin to untangle some heavyweight
    blocking locks in the filesystem and a bunch of code cleanups"

    * tag 'ceph-for-5.14-rc1' of git://github.com/ceph/ceph-client:
    ceph: take reference to req->r_parent at point of assignment
    ceph: eliminate ceph_async_iput()
    ceph: don't take s_mutex in ceph_flush_snaps
    ceph: don't take s_mutex in try_flush_caps
    ceph: don't take s_mutex or snap_rwsem in ceph_check_caps
    ceph: eliminate session->s_gen_ttl_lock
    ceph: allow ceph_put_mds_session to take NULL or ERR_PTR
    ceph: clean up locking annotation for ceph_get_snap_realm and __lookup_snap_realm
    ceph: add some lockdep assertions around snaprealm handling
    ceph: decoding error in ceph_update_snap_realm should return -EIO
    ceph: add IO size metrics support
    ceph: update and rename __update_latency helper to __update_stdev
    ceph: simplify the metrics struct
    libceph: fix doc warnings in cls_lock_client.c
    libceph: remove unnecessary ret variable in ceph_auth_init()
    libceph: fix some spelling mistakes
    libceph: kill ceph_none_authorizer::reply_buf
    ceph: make ceph_queue_cap_snap static
    ceph: make ceph_netfs_read_ops static
    ceph: remove bogus checks and WARN_ONs from ceph_set_page_dirty

    Linus Torvalds
     
  • Pull NFS client updates from Trond Myklebust:
    "Highlights include:

    Features:

    - Multiple patches to add support for fcntl() leases over NFSv4.

    - A sysfs interface to display more information about the various
    transport connections used by the RPC client

    - A sysfs interface to allow a suitably privileged user to offline a
    transport that may no longer point to a valid server

    - A sysfs interface to allow a suitably privileged user to change the
    server IP address used by the RPC client

    Stable fixes:

    - Two sunrpc fixes for deadlocks involving privileged rpc_wait_queues

    Bugfixes:

    - SUNRPC: Avoid a KASAN slab-out-of-bounds bug in xdr_set_page_base()

    - SUNRPC: prevent port reuse on transports which don't request it.

    - NFSv3: Fix memory leak in posix_acl_create()

    - NFS: Various fixes to attribute revalidation timeouts

    - NFSv4: Fix handling of non-atomic change attribute updates

    - NFSv4: If a server is down, don't cause mounts to other servers to
    hang as well

    - pNFS: Fix an Oops in pnfs_mark_request_commit() when doing O_DIRECT

    - NFS: Fix mount failures due to incorrect setting of the
    has_sec_mnt_opts filesystem flag

    - NFS: Ensure nfs_readpage returns promptly when an internal error
    occurs

    - NFS: Fix fscache read from NFS after cache error

    - pNFS: Various bugfixes around the LAYOUTGET operation"

    * tag 'nfs-for-5.14-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (46 commits)
    NFSv4/pNFS: Return an error if _nfs4_pnfs_v3_ds_connect can't load NFSv3
    NFSv4/pNFS: Don't call _nfs4_pnfs_v3_ds_connect multiple times
    NFSv4/pnfs: Clean up layout get on open
    NFSv4/pnfs: Fix layoutget behaviour after invalidation
    NFSv4/pnfs: Fix the layout barrier update
    NFS: Fix fscache read from NFS after cache error
    NFS: Ensure nfs_readpage returns promptly when internal error occurs
    sunrpc: remove an offlined xprt using sysfs
    sunrpc: provide showing transport's state info in the sysfs directory
    sunrpc: display xprt's queuelen of assigned tasks via sysfs
    sunrpc: provide multipath info in the sysfs directory
    NFSv4.1 identify and mark RPC tasks that can move between transports
    sunrpc: provide transport info in the sysfs directory
    SUNRPC: take a xprt offline using sysfs
    sunrpc: add dst_attr attributes to the sysfs xprt directory
    SUNRPC for TCP display xprt's source port in sysfs xprt_info
    SUNRPC query transport's source port
    SUNRPC display xprt's main value in sysfs's xprt_info
    SUNRPC mark the first transport
    sunrpc: add add sysfs directory per xprt under each xprt_switch
    ...

    Linus Torvalds
     
  • Pull f2fs updates from Jaegeuk Kim:
    "In this round, we've improved the compression support especially for
    Android such as allowing compression for mmap files, replacing the
    immutable bit with internal bit to prohibits data writes explicitly,
    and adding a mount option, "compress_cache", to improve random reads.
    And, we added "readonly" feature to compact the partition w/
    compression enabled, which will be useful for Android RO partitions.

    Enhancements:
    - support compression for mmap file
    - use an f2fs flag instead of IMMUTABLE bit for compression
    - support RO feature w/ extent_cache
    - fully support swapfile with file pinning
    - improve atgc tunability
    - add nocompress extensions to unselect files for compression

    Bug fixes:
    - fix false alaram on iget failure during GC
    - fix race condition on global pointers when there are multiple f2fs
    instances
    - add MODULE_SOFTDEP for initramfs

    As usual, we've also cleaned up some places for better code
    readability (e.g., sysfs/feature, debugging messages, slab cache
    name, and docs)"

    * tag 'f2fs-for-5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (32 commits)
    f2fs: drop dirty node pages when cp is in error status
    f2fs: initialize page->private when using for our internal use
    f2fs: compress: add nocompress extensions support
    MAINTAINERS: f2fs: update my email address
    f2fs: remove false alarm on iget failure during GC
    f2fs: enable extent cache for compression files in read-only
    f2fs: fix to avoid adding tab before doc section
    f2fs: introduce f2fs_casefolded_name slab cache
    f2fs: swap: support migrating swapfile in aligned write mode
    f2fs: swap: remove dead codes
    f2fs: compress: add compress_inode to cache compressed blocks
    f2fs: clean up /sys/fs/f2fs//features
    f2fs: add pin_file in feature list
    f2fs: Advertise encrypted casefolding in sysfs
    f2fs: Show casefolding support only when supported
    f2fs: support RO feature
    f2fs: logging neatening
    f2fs: introduce FI_COMPRESS_RELEASED instead of using IMMUTABLE bit
    f2fs: compress: remove unneeded preallocation
    f2fs: atgc: export entries for better tunability via sysfs
    ...

    Linus Torvalds
     

09 Jul, 2021

12 commits

  • Colin reports that Coverity complains about checking for poll being
    non-zero after having dereferenced it multiple times. This is a valid
    complaint, and actually a leftover from back when this code was based
    on the aio poll code.

    Kill the redundant check.

    Link: https://lore.kernel.org/io-uring/fe70c532-e2a7-3722-58a1-0fa4e5c5ff2c@canonical.com/
    Reported-by: Colin Ian King
    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Use the nice helpers to initialize and the uid/gid/cred_uid when passed as mount arguments.

    Signed-off-by: Ronnie Sahlberg
    Acked-by: Pavel Shilovsky
    Signed-off-by: Steve French

    Ronnie Sahlberg
     
  • We have requests like IORING_OP_FILES_UPDATE that don't go through
    ->iopoll_list but get completed in place under ->uring_lock, and so
    after dropping the lock io_iopoll_check() should expect that some CQEs
    might have get completed in a meanwhile.

    Currently such events won't be accounted in @nr_events, and the loop
    will continue to poll even if there is enough of CQEs. It shouldn't be a
    problem as it's not likely to happen and so, but not nice either. Just
    return earlier in this case, it should be enough.

    Signed-off-by: Pavel Begunkov
    Link: https://lore.kernel.org/r/66ef932cc66a34e3771bbae04b2953a8058e9d05.1625747741.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe

    Pavel Begunkov
     
  • Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • Currently we fail to return an error if the NFSv3 module failed to load
    when we're trying to connect to a pNFS data server.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • After we grab the lock in nfs4_pnfs_ds_connect(), there is no check for
    whether or not ds->ds_clp has already been initialised, so we can end up
    adding the same transports multiple times.

    Fixes: fc821d59209d ("pnfs/NFSv4.1: Add multipath capabilities to pNFS flexfiles servers over NFSv3")
    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • Cache the layout in the arguments so we don't have to keep looking it up
    from the inode.

    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • If the layout gets invalidated, we should wait for any outstanding
    layoutget requests for that layout to complete, and we should resend
    them only after re-establishing the layout stateid.

    Fixes: d29b468da4f9 ("pNFS/NFSv4: Improve rejection of out-of-order layouts")
    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • If we have multiple outstanding layoutget requests, the current code to
    update the layout barrier assumes that the outstanding layout stateids
    are updated in order. That's not necessarily the case.

    Instead of using the value of lo->plh_outstanding as a guesstimate for
    the window of values we need to accept, just wait to update the window
    until we're processing the last one. The intention here is just to
    ensure that we don't process 2^31 seqid updates without also updating
    the barrier.

    Fixes: 1bcf34fdac5f ("pNFS/NFSv4: Update the layout barrier when we schedule a layoutreturn")
    Signed-off-by: Trond Myklebust

    Trond Myklebust
     
  • Earlier commits refactored some NFS read code and removed
    nfs_readpage_async(), but neglected to properly fixup
    nfs_readpage_from_fscache_complete(). The code path is
    only hit when something unusual occurs with the cachefiles
    backing filesystem, such as an IO error or while a cookie
    is being invalidated.

    Mark page with PG_checked if fscache IO completes in error,
    unlock the page, and let the VM decide to re-issue based on
    PG_uptodate. When the VM reissues the readpage, PG_checked
    allows us to skip over fscache and read from the server.

    Link: https://marc.info/?l=linux-nfs&m=162498209518739
    Fixes: 1e83b173b266 ("NFS: Add nfs_pageio_complete_read() and remove nfs_readpage_async()")
    Signed-off-by: Dave Wysochanski
    Signed-off-by: Trond Myklebust

    Dave Wysochanski
     
  • A previous refactoring of nfs_readpage() might end up calling
    wait_on_page_locked_killable() even if readpage_async_filler() failed
    with an internal error and pg_error was non-zero (for example, if
    nfs_create_request() failed). In the case of an internal error,
    skip over wait_on_page_locked_killable() as this is only needed
    when the read is sent and an error occurs during completion handling.

    Signed-off-by: Dave Wysochanski
    Signed-off-by: Trond Myklebust

    Dave Wysochanski
     
  • In preparation for when we can re-try a task on a different transport,
    identify and mark such RPC tasks as moveable. Only 4.1+ operarations can
    be re-tried on a different transport.

    Signed-off-by: Olga Kornievskaia
    Signed-off-by: Trond Myklebust

    Olga Kornievskaia
     

08 Jul, 2021

9 commits

  • The function jbd2_journal_unregister_shrinker() was getting called
    twice when the file system was getting unmounted. On Power and ARM
    platforms this was causing kernel crash when unmounting the file
    system, when a percpu_counter was destroyed twice.

    Fix this by removing jbd2_journal_[un]register_shrinker() functions,
    and inlining the shrinker setup and teardown into
    journal_init_common() and jbd2_journal_destroy(). This means that
    ext4 and ocfs2 now no longer need to know about registering and
    unregistering jbd2's shrinker.

    Also, while we're at it, rename the percpu counter from
    j_jh_shrink_count to j_checkpoint_jh_count, since this makes it
    clearer what this counter is intended to track.

    Link: https://lore.kernel.org/r/20210705145025.3363130-1-tytso@mit.edu
    Fixes: 4ba3fcdde7e3 ("jbd2,ext4: add a shrinker to release checkpointed buffers")
    Reported-by: Jon Hunter
    Reported-by: Sachin Sant
    Tested-by: Sachin Sant
    Tested-by: Jon Hunter
    Reviewed-by: Jan Kara
    Signed-off-by: Theodore Ts'o

    Theodore Ts'o
     
  • Use the correct bitmask when checking for any not-yet-supported flags.

    Link: https://lore.kernel.org/r/20210702173425.1276158-1-tytso@mit.edu
    Fixes: 351a0a3fbc35 ("ext4: add ioctl EXT4_IOC_CHECKPOINT")
    Signed-off-by: Theodore Ts'o
    Reviewed-by: Leah Rumancik

    Theodore Ts'o
     
  • After commit 618f003199c6 ("ext4: fix memory leak in
    ext4_fill_super"), after the file system is remounted read-only, there
    is a race where the kmmpd thread can exit, causing sbi->s_mmp_tsk to
    point at freed memory, which the call to ext4_stop_mmpd() can trip
    over.

    Fix this by only allowing kmmpd() to exit when it is stopped via
    ext4_stop_mmpd().

    Link: https://lore.kernel.org/r/20210707002433.3719773-1-tytso@mit.edu
    Reported-by: Ye Bin
    Bug-Report-Link:
    Signed-off-by: Theodore Ts'o
    Reviewed-by: Jan Kara

    Theodore Ts'o
     
  • Coverity also complains about the way we calculate the offset
    (starting from the address of a 4 byte array within the
    header structure rather than from the beginning of the struct
    plus 4 bytes) for SMB1 PosixLock. This changeset
    doesn't change the address but makes it slightly clearer.

    Addresses-Coverity: 711520 ("Out of bounds write")
    Reviewed-by: Paulo Alcantara (SUSE)
    Signed-off-by: Steve French

    Steve French
     
  • Coverity also complains about the way we calculate the offset
    (starting from the address of a 4 byte array within the
    header structure rather than from the beginning of the struct
    plus 4 bytes) for SMB1 RenameOpenFile. This changeset
    doesn't change the address but makes it slightly clearer.

    Addresses-Coverity: 711521 ("Out of bounds write")
    Reviewed-by: Paulo Alcantara (SUSE)
    Signed-off-by: Steve French

    Steve French
     
  • Pull nfsd updates from Bruce Fields:

    - add tracepoints for callbacks and for client creation and destruction

    - cache the mounts used for server-to-server copies

    - expose callback information in /proc/fs/nfsd/clients/*/info

    - don't hold locks unnecessarily while waiting for commits

    - update NLM to use xdr_stream, as we have for NFSv2/v3/v4

    * tag 'nfsd-5.14' of git://linux-nfs.org/~bfields/linux: (69 commits)
    nfsd: fix NULL dereference in nfs3svc_encode_getaclres
    NFSD: Prevent a possible oops in the nfs_dirent() tracepoint
    nfsd: remove redundant assignment to pointer 'this'
    nfsd: Reduce contention for the nfsd_file nf_rwsem
    lockd: Update the NLMv4 SHARE results encoder to use struct xdr_stream
    lockd: Update the NLMv4 nlm_res results encoder to use struct xdr_stream
    lockd: Update the NLMv4 TEST results encoder to use struct xdr_stream
    lockd: Update the NLMv4 void results encoder to use struct xdr_stream
    lockd: Update the NLMv4 FREE_ALL arguments decoder to use struct xdr_stream
    lockd: Update the NLMv4 SHARE arguments decoder to use struct xdr_stream
    lockd: Update the NLMv4 SM_NOTIFY arguments decoder to use struct xdr_stream
    lockd: Update the NLMv4 nlm_res arguments decoder to use struct xdr_stream
    lockd: Update the NLMv4 UNLOCK arguments decoder to use struct xdr_stream
    lockd: Update the NLMv4 CANCEL arguments decoder to use struct xdr_stream
    lockd: Update the NLMv4 LOCK arguments decoder to use struct xdr_stream
    lockd: Update the NLMv4 TEST arguments decoder to use struct xdr_stream
    lockd: Update the NLMv4 void arguments decoder to use struct xdr_stream
    lockd: Update the NLMv1 SHARE results encoder to use struct xdr_stream
    lockd: Update the NLMv1 nlm_res results encoder to use struct xdr_stream
    lockd: Update the NLMv1 TEST results encoder to use struct xdr_stream
    ...

    Linus Torvalds
     
  • After a recent change io_drain_req() started to fail requests with
    result=0 in case of allocation failure, where it should be and have
    been -ENOMEM.

    Fixes: 76cc33d79175a ("io_uring: refactor io_req_defer()")
    Signed-off-by: Pavel Begunkov
    Link: https://lore.kernel.org/r/e068110ac4293e0c56cfc4d280d0f22b9303ec08.1625682153.git.asml.silence@gmail.com
    Signed-off-by: Jens Axboe

    Pavel Begunkov
     
  • Coverity also complains about the way we calculate the offset
    (starting from the address of a 4 byte array within the
    header structure rather than from the beginning of the struct
    plus 4 bytes) for SMB1 SetFileDisposition (which is used to
    unlink a file by setting the delete on close flag). This
    changeset doesn't change the address but makes it slightly
    clearer.

    Addresses-Coverity: 711524 ("Out of bounds write")
    Reviewed-by: Paulo Alcantara (SUSE)
    Signed-off-by: Steve French

    Steve French
     
  • Coverity also complains about the way we calculate the offset
    (starting from the address of a 4 byte array within the header
    structure rather than from the beginning of the struct plus
    4 bytes) for setting the file size using SMB1. This changeset
    doesn't change the address but makes it slightly clearer.

    Addresses-Coverity: 711525 ("Out of bounds write")
    Reviewed-by: Paulo Alcantara (SUSE)
    Signed-off-by: Steve French

    Steve French
     

07 Jul, 2021

8 commits