mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
Merge tag 'block-7.0-20260312' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux
Pull block fixes from Jens Axboe:
- NVMe pull request via Keith:
- Fix nvme-pci IRQ race and slab-out-of-bounds access
- Fix recursive workqueue locking for target async events
- Various cleanups
- Fix a potential NULL pointer dereference in ublk on size setting
- ublk automatic partition scanning fix
- Two s390 dasd fixes
* tag 'block-7.0-20260312' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux:
nvme: Annotate struct nvme_dhchap_key with __counted_by
nvme-core: do not pass empty queue_limits to blk_mq_alloc_queue()
nvme-pci: Fix race bug in nvme_poll_irqdisable()
nvmet: move async event work off nvmet-wq
nvme-pci: Fix slab-out-of-bounds in nvme_dbbuf_set
s390/dasd: Copy detected format information to secondary device
s390/dasd: Move quiesce state with pprc swap
ublk: don't clear GD_SUPPRESS_PART_SCAN for unprivileged daemons
ublk: fix NULL pointer dereference in ublk_ctrl_set_size()
This commit is contained in:
@@ -4443,7 +4443,9 @@ static int ublk_ctrl_start_dev(struct ublk_device *ub,
|
||||
|
||||
/* Skip partition scan if disabled by user */
|
||||
if (ub->dev_info.flags & UBLK_F_NO_AUTO_PART_SCAN) {
|
||||
clear_bit(GD_SUPPRESS_PART_SCAN, &disk->state);
|
||||
/* Not clear for unprivileged daemons, see comment above */
|
||||
if (!ub->unprivileged_daemons)
|
||||
clear_bit(GD_SUPPRESS_PART_SCAN, &disk->state);
|
||||
} else {
|
||||
/* Schedule async partition scan for trusted daemons */
|
||||
if (!ub->unprivileged_daemons)
|
||||
@@ -5006,15 +5008,22 @@ static int ublk_ctrl_get_features(const struct ublksrv_ctrl_cmd *header)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ublk_ctrl_set_size(struct ublk_device *ub, const struct ublksrv_ctrl_cmd *header)
|
||||
static int ublk_ctrl_set_size(struct ublk_device *ub, const struct ublksrv_ctrl_cmd *header)
|
||||
{
|
||||
struct ublk_param_basic *p = &ub->params.basic;
|
||||
u64 new_size = header->data[0];
|
||||
int ret = 0;
|
||||
|
||||
mutex_lock(&ub->mutex);
|
||||
if (!ub->ub_disk) {
|
||||
ret = -ENODEV;
|
||||
goto out;
|
||||
}
|
||||
p->dev_sectors = new_size;
|
||||
set_capacity_and_notify(ub->ub_disk, p->dev_sectors);
|
||||
out:
|
||||
mutex_unlock(&ub->mutex);
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct count_busy {
|
||||
@@ -5335,8 +5344,7 @@ static int ublk_ctrl_uring_cmd(struct io_uring_cmd *cmd,
|
||||
ret = ublk_ctrl_end_recovery(ub, &header);
|
||||
break;
|
||||
case UBLK_CMD_UPDATE_SIZE:
|
||||
ublk_ctrl_set_size(ub, &header);
|
||||
ret = 0;
|
||||
ret = ublk_ctrl_set_size(ub, &header);
|
||||
break;
|
||||
case UBLK_CMD_QUIESCE_DEV:
|
||||
ret = ublk_ctrl_quiesce_dev(ub, &header);
|
||||
|
||||
Reference in New Issue
Block a user