Skip to content

ublk: fix deadlock when reading partition table#753

Open
blktests-ci[bot] wants to merge 24 commits intofor-next_basefrom
series/1083293=>for-next
Open

ublk: fix deadlock when reading partition table#753
blktests-ci[bot] wants to merge 24 commits intofor-next_basefrom
series/1083293=>for-next

Conversation

@blktests-ci
Copy link
Copy Markdown

@blktests-ci blktests-ci Bot commented Apr 20, 2026

Pull request for series with
subject: ublk: fix deadlock when reading partition table
version: 1
url: https://patchwork.kernel.org/project/linux-block/list/?series=1083293

axboe and others added 24 commits April 3, 2026 05:08
* io_uring-7.0:
  io_uring/bpf_filters: retain COW'ed settings on parse failures
  io_uring: protect remaining lockless ctx->rings accesses with RCU
  io_uring/rsrc: reject zero-length fixed buffer import
  io_uring/net: fix slab-out-of-bounds read in io_bundle_nbufs()
* for-7.1/io_uring: (54 commits)
  io_uring/timeout: use 'ctx' consistently
  io_uring/rw: clean up __io_read() obsolete comment and early returns
  io_uring/zcrx: use correct mmap off constants
  io_uring/zcrx: use dma_len for chunk size calculation
  io_uring/zcrx: don't clear not allocated niovs
  io_uring/zcrx: don't use mark0 for allocating xarray
  io_uring: cast id to u64 before shifting in io_allocate_rbuf_ring()
  io_uring/zcrx: reject REG_NODEV with large rx_buf_size
  io_uring/cancel: validate opcode for IORING_ASYNC_CANCEL_OP
  io_uring/rsrc: use io_cache_free() to free node
  io_uring/zcrx: rename zcrx [un]register functions
  io_uring/zcrx: check ctrl op payload struct sizes
  io_uring/zcrx: cache fallback availability in zcrx ctx
  io_uring/zcrx: warn on a repeated area append
  io_uring/zcrx: consolidate dma syncing
  io_uring/zcrx: netmem array as refiling format
  io_uring/zcrx: warn on alloc with non-empty pp cache
  io_uring/zcrx: move count check into zcrx_get_free_niov
  io_uring/zcrx: use guards for locking
  io_uring/zcrx: add a struct for refill queue
  ...
* for-7.1/block: (111 commits)
  bcache: fix cached_dev.sb_bio use-after-free and crash
  block: use sysfs_emit in sysfs show functions
  blk-crypto: fix name of the bio completion callback
  bio: fix kmemleak false positives from percpu bio alloc cache
  blk-iocost: fix busy_level reset when no IOs complete
  blk-cgroup: fix disk reference leak in blkcg_maybe_throttle_current()
  zloop: add max_open_zones option
  block: fix zones_cond memory leak on zone revalidation error paths
  loop: fix partition scan race between udev and loop_reread_partitions()
  sed-opal: Add STACK_RESET command
  nvme-loop: do not cancel I/O and admin tagset during ctrl reset/shutdown
  nvme: add WQ_PERCPU to alloc_workqueue users
  nvmet-fc: add WQ_PERCPU to alloc_workqueue users
  nvmet: replace use of system_wq with system_percpu_wq
  nvme-auth: Don't propose NVME_AUTH_DHGROUP_NULL with SC_C
  nvme: Add the DHCHAP maximum HD IDs
  nvme-pci: add NVME_QUIRK_DISABLE_WRITE_ZEROES for Kingston OM3SGP4
  nvme: respect NVME_QUIRK_DISABLE_WRITE_ZEROES when wzsl is set
  nvmet: report NPDGL and NPDAL
  nvmet: use NVME_NS_FEAT_OPTPERF_SHIFT
  ...
* for-7.1/block:
  bcache: fix uninitialized closure object
Merge in io_uring changes slated for 7.1 to avoid conflicts with the
fuse io_uring prep patches, as they end up touching both ublk and
overlap with io_uring core changes.

* for-7.1/io_uring: (60 commits)
  io_uring/timeout: use 'ctx' consistently
  io_uring/rw: clean up __io_read() obsolete comment and early returns
  io_uring/zcrx: use correct mmap off constants
  io_uring/zcrx: use dma_len for chunk size calculation
  io_uring/zcrx: don't clear not allocated niovs
  io_uring/zcrx: don't use mark0 for allocating xarray
  io_uring: cast id to u64 before shifting in io_allocate_rbuf_ring()
  io_uring/zcrx: reject REG_NODEV with large rx_buf_size
  io_uring/cancel: validate opcode for IORING_ASYNC_CANCEL_OP
  io_uring/rsrc: use io_cache_free() to free node
  io_uring/zcrx: rename zcrx [un]register functions
  io_uring/zcrx: check ctrl op payload struct sizes
  io_uring/zcrx: cache fallback availability in zcrx ctx
  io_uring/zcrx: warn on a repeated area append
  io_uring/zcrx: consolidate dma syncing
  io_uring/zcrx: netmem array as refiling format
  io_uring/zcrx: warn on alloc with non-empty pp cache
  io_uring/zcrx: move count check into zcrx_get_free_niov
  io_uring/zcrx: use guards for locking
  io_uring/zcrx: add a struct for refill queue
  ...
…bvec()

Currently, io_buffer_register_bvec() takes in a request. In preparation
for supporting kernel-populated buffers in fuse io-uring (which will
need to register bvecs directly, not through a struct request), rename
this to io_buffer_register_request().

A subsequent patch will commandeer the "io_buffer_register_bvec()"
function name to support registering bvecs directly.

Rename io_buffer_unregister_bvec() to a more generic name,
io_buffer_unregister(), as both io_buffer_register_request() and
io_buffer_register_bvec() callers will use it for unregistration.

Signed-off-by: Joanne Koong <[email protected]>
Reviewed-by: Caleb Sander Mateos <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jens Axboe <[email protected]>
Split the main initialization logic in io_buffer_register_request() into
a helper function.

This is a preparatory patch for supporting kernel-populated buffers in
fuse io-uring, which will be reusing this logic.

Signed-off-by: Joanne Koong <[email protected]>
Reviewed-by: Caleb Sander Mateos <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jens Axboe <[email protected]>
Add io_buffer_register_bvec() for registering a bvec array.

This is a preparatory patch for fuse-over-io-uring zero-copy.

Signed-off-by: Joanne Koong <[email protected]>
Reviewed-by: Caleb Sander Mateos <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jens Axboe <[email protected]>
Rename IO_IMU_DEST and IO_IMU_SOURCE to IO_BUF_DEST and IO_BUF_SOURCE
and export it so subsystems may use it.

This is needed by the io_buffer_register_bvec() path for callers who may
need the buffer to be both readable and writable.

Signed-off-by: Joanne Koong <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jens Axboe <[email protected]>
* for-7.1/io_uring-fuse:
  io_uring/rsrc: rename and export IO_IMU_DEST / IO_IMU_SOURCE
  io_uring/rsrc: add io_buffer_register_bvec()
  io_uring/rsrc: split io_buffer_register_request() logic
  io_uring/rsrc: rename io_buffer_register_bvec()/io_buffer_unregister_bvec()
* for-7.1/block:
  block: remove unused BVEC_ITER_ALL_INIT
* for-7.1/block:
  selftests: ublk: test that teardown after incomplete recovery completes
  ublk: reset per-IO canceled flag on each fetch
* for-7.1/block:
  blk-wbt: remove WARN_ON_ONCE from wbt_init_enable_default()
* for-7.1/block:
  drbd: remove DRBD_GENLA_F_MANDATORY flag handling
* for-7.1/block:
  drbd: use get_random_u64() where appropriate
* for-7.1/block:
  selftests/ublk: add read-only buffer registration test
  selftests/ublk: add filesystem fio verify test for shmem_zc
  selftests/ublk: add hugetlbfs shmem_zc test for loop target
  selftests/ublk: add shared memory zero-copy test
  selftests/ublk: add UBLK_F_SHMEM_ZC support for loop target
  selftests/ublk: add shared memory zero-copy support in kublk
  ublk: eliminate permanent pages[] array from struct ublk_buf
  ublk: enable UBLK_F_SHMEM_ZC feature flag
  ublk: add PFN-based buffer matching in I/O path
  ublk: add UBLK_U_CMD_REG_BUF/UNREG_BUF control commands
* for-7.1/block:
  xfs: use bio_await in xfs_zone_gc_reset_sync
  block: add a bio_submit_or_kill helper
  block: factor out a bio_await helper
  block: unify the synchronous bi_end_io callbacks
  xfs: fix number of GC bvecs
* for-7.1/block:
  md/raid5: fix soft lockup in retry_aligned_read()
  md: wake raid456 reshape waiters before suspend
  md/raid1: serialize overlap io for writemostly disk
  md/md-llbitmap: optimize initial sync with write_zeroes_unmap support
  md/md-llbitmap: add CleanUnwritten state for RAID-5 proactive parity building
  md: add fallback to correct bitmap_ops on version mismatch
  md/raid5: validate payload size before accessing journal metadata
  md: remove unused static md_wq workqueue
  md/raid0: use kvzalloc/kvfree for strip_zone and devlist allocations
  md: fix array_state=clear sysfs deadlock
* for-7.1/io_uring:
  io_uring: unify getting ctx from passed in file descriptor
  io_uring/register: don't get a reference to the registered ring fd
  io_uring/tctx: clean up __io_uring_add_tctx_node() error handling
  io_uring/tctx: have io_uring_alloc_task_context() return tctx
* for-7.1/block:
  MAINTAINERS: update ublk driver maintainer email
  Documentation: ublk: address review comments for SHMEM_ZC docs
  ublk: allow buffer registration before device is started
  ublk: replace xarray with IDA for shmem buffer index allocation
  ublk: simplify PFN range loop in __ublk_ctrl_reg_buf
  ublk: verify all pages in multi-page bvec fall within registered range
  ublk: widen ublk_shmem_buf_reg.len to __u64 for 4GB buffer support
* for-7.1/block:
  block: refactor blkdev_zone_mgmt_ioctl
* for-7.1/block:
  scsi: bsg: fix buffer overflow in scsi_bsg_uring_cmd()
* for-7.1/block:
  ublk: fix tautological comparison warning in ublk_ctrl_reg_buf
@blktests-ci
Copy link
Copy Markdown
Author

blktests-ci Bot commented Apr 20, 2026

Upstream branch: 88a57e1
series: https://patchwork.kernel.org/project/linux-block/list/?series=1083293
version: 1

Pull request is NOT updated. Failed to apply https://patchwork.kernel.org/project/linux-block/list/?series=1083293
error message:

Cmd('git') failed due to: exit code(128)
  cmdline: git am --3way
  stdout: 'Applying: ublk: fix deadlock when reading partition table
Patch failed at 0001 ublk: fix deadlock when reading partition table'
  stderr: 'error: sha1 information is lacking or useless (drivers/block/ublk_drv.c).
error: could not build fake ancestor
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"'

conflict:


@blktests-ci blktests-ci Bot force-pushed the for-next_base branch 3 times, most recently from 65b781e to 2fc75f9 Compare April 23, 2026 16:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants