mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 20:46:48 +02:00
block-6.19-20260130
-----BEGIN PGP SIGNATURE-----
iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAml8yn8QHGF4Ym9lQGtl
cm5lbC5kawAKCRD301j7KXHgpm2READCHbwDQmW+uOdvP5uB5UwnOLustp3WfpAu
gb2NTHy0KN4jX/iI0Ni0iKijakNFOlI4BPTopPOkFZxLddda6jc/iOXGTfh0iZ8N
bHwxVY2FxmTIh171LUXlDBoKKwUt1xQR1baikwP2ew282AxOqouJnL/zHpJhVe+T
KQguoUgNiYikwxIoluBK9s0zJanjLT9LLuYmPJtiRT3146QsHZpQBVmyJ+oZKFe3
bBwhLiY2hB8kH6FqigHrgKyx4+8ZFotVW4OmKdAtuieY8BOFwtMVHmETBmWpMdLA
EYe9CIQT3gRxP0RBui4OaZoAWsyy54XdP8T2Kz74uNi+URniO5qbSbMKs/UrYzhA
odGcSilTL5AtJqyxVJIij10ZBeBG5xge+xukF2VcV8hd95DGiGf4shdkT+uMUprw
s6YOGWs21GYvSiW37tdqPA4ezlfPPLjLhTzAmQjspNMgQPSmKF/wFqPyTmp2wsDC
iO7yoXe/4yGZHPKPJWxrMEgNnqicnQcfQTkKuyDn4f8t4/UlwtVUnQcSD8t97ASW
XzuGuU3QIyWQwCQq5ZkdjA5Tq4TK2sPWMBPVciNUEIfoYZJLG95+h0sbu/jAaFNA
4krhXa5o65mwUIbMFY+ILvvN3F2G33qEbP4KwIdP3YnRl5gRu23DI0qBceOdYXbz
enQWu9jZaA==
=oo3J
-----END PGP SIGNATURE-----
Merge tag 'block-6.19-20260130' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux
Pull block fixes from Jens Axboe:
- Fix for an accounting leak in bcache that's been there forever,
and a related dead code removal
- Revert of a fix for rnbd that went into this series, but depends
on other changes that are staged for 7.0
- NVMe pull request via Keith:
- TCP target completion race condition fix (Ming)
- DMA descriptor cleanup fix (Roger)
* tag 'block-6.19-20260130' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux:
bcache: fix I/O accounting leak in detached_dev_do_request
bcache: remove dead code in detached_dev_do_request
nvme-pci: DMA unmap the correct regions in nvme_free_sgls
Revert "rnbd-clt: fix refcount underflow in device unmap path"
nvmet: fix race in nvmet_bio_done() leading to NULL pointer dereference
This commit is contained in:
commit
03610bd6b5
|
|
@ -1662,6 +1662,7 @@ static void destroy_sysfs(struct rnbd_clt_dev *dev,
|
|||
/* To avoid deadlock firstly remove itself */
|
||||
sysfs_remove_file_self(&dev->kobj, sysfs_self);
|
||||
kobject_del(&dev->kobj);
|
||||
kobject_put(&dev->kobj);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1107,17 +1107,13 @@ static void detached_dev_do_request(struct bcache_device *d,
|
|||
|
||||
if (bio_op(orig_bio) == REQ_OP_DISCARD &&
|
||||
!bdev_max_discard_sectors(dc->bdev)) {
|
||||
bio_end_io_acct(orig_bio, start_time);
|
||||
bio_endio(orig_bio);
|
||||
return;
|
||||
}
|
||||
|
||||
clone_bio = bio_alloc_clone(dc->bdev, orig_bio, GFP_NOIO,
|
||||
&d->bio_detached);
|
||||
if (!clone_bio) {
|
||||
orig_bio->bi_status = BLK_STS_RESOURCE;
|
||||
bio_endio(orig_bio);
|
||||
return;
|
||||
}
|
||||
|
||||
ddip = container_of(clone_bio, struct detached_dev_io_private, bio);
|
||||
/* Count on the bcache device */
|
||||
|
|
|
|||
|
|
@ -806,8 +806,8 @@ static void nvme_unmap_data(struct request *req)
|
|||
if (!blk_rq_dma_unmap(req, dma_dev, &iod->dma_state, iod->total_len,
|
||||
map)) {
|
||||
if (nvme_pci_cmd_use_sgl(&iod->cmd))
|
||||
nvme_free_sgls(req, iod->descriptors[0],
|
||||
&iod->cmd.common.dptr.sgl, attrs);
|
||||
nvme_free_sgls(req, &iod->cmd.common.dptr.sgl,
|
||||
iod->descriptors[0], attrs);
|
||||
else
|
||||
nvme_free_prps(req, attrs);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -180,9 +180,10 @@ u16 blk_to_nvme_status(struct nvmet_req *req, blk_status_t blk_sts)
|
|||
static void nvmet_bio_done(struct bio *bio)
|
||||
{
|
||||
struct nvmet_req *req = bio->bi_private;
|
||||
blk_status_t blk_status = bio->bi_status;
|
||||
|
||||
nvmet_req_complete(req, blk_to_nvme_status(req, bio->bi_status));
|
||||
nvmet_req_bio_put(req, bio);
|
||||
nvmet_req_complete(req, blk_to_nvme_status(req, blk_status));
|
||||
}
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INTEGRITY
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user