Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'block-6.19-20260116' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux

Pull block fixes from Jens Axboe:

- NVMe pull request via Keith:
- Device quirk to disable faulty temperature (Ilikara)
- TCP target null pointer fix from bad host protocol usage (Shivam)
- Add apple,t8103-nvme-ans2 as a compatible apple controller
(Janne)
- FC tagset leak fix (Chaitanya)
- TCP socket deadlock fix (Hannes)
- Target name buffer overrun fix (Shin'ichiro)

- Fix for an underflow for rnbd during device unmap

- Zero the non-PI part of the auto integrity buffer

- Fix for a configfs memory leak in the null block driver

* tag 'block-6.19-20260116' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux:
rnbd-clt: fix refcount underflow in device unmap path
nvme: fix PCIe subsystem reset controller state transition
nvmet: do not copy beyond sybsysnqn string length
nvmet-tcp: fixup hang in nvmet_tcp_listen_data_ready()
null_blk: fix kmemleak by releasing references to fault configfs items
block: zero non-PI portion of auto integrity buffer
nvme-fc: release admin tagset if init fails
nvme-apple: add "apple,t8103-nvme-ans2" as compatible
nvme-tcp: fix NULL pointer dereferences in nvmet_tcp_build_pdu_iovec
nvme-pci: disable secondary temp for Wodposit WPBSNM8

+38 -10
+1 -1
block/bio-integrity-auto.c
··· 140 140 return true; 141 141 set_flags = false; 142 142 gfp |= __GFP_ZERO; 143 - } else if (bi->csum_type == BLK_INTEGRITY_CSUM_NONE) 143 + } else if (bi->metadata_size > bi->pi_tuple_size) 144 144 gfp |= __GFP_ZERO; 145 145 break; 146 146 default:
+11 -1
drivers/block/null_blk/main.c
··· 665 665 configfs_add_default_group(&dev->init_hctx_fault_config.group, &dev->group); 666 666 } 667 667 668 + static void nullb_del_fault_config(struct nullb_device *dev) 669 + { 670 + config_item_put(&dev->init_hctx_fault_config.group.cg_item); 671 + config_item_put(&dev->requeue_config.group.cg_item); 672 + config_item_put(&dev->timeout_config.group.cg_item); 673 + } 674 + 668 675 #else 669 676 670 677 static void nullb_add_fault_config(struct nullb_device *dev) 671 678 { 672 679 } 673 680 681 + static void nullb_del_fault_config(struct nullb_device *dev) 682 + { 683 + } 674 684 #endif 675 685 676 686 static struct ··· 712 702 null_del_dev(dev->nullb); 713 703 mutex_unlock(&lock); 714 704 } 715 - 705 + nullb_del_fault_config(dev); 716 706 config_item_put(item); 717 707 } 718 708
-1
drivers/block/rnbd/rnbd-clt.c
··· 1662 1662 /* To avoid deadlock firstly remove itself */ 1663 1663 sysfs_remove_file_self(&dev->kobj, sysfs_self); 1664 1664 kobject_del(&dev->kobj); 1665 - kobject_put(&dev->kobj); 1666 1665 } 1667 1666 } 1668 1667
+1
drivers/nvme/host/apple.c
··· 1704 1704 1705 1705 static const struct of_device_id apple_nvme_of_match[] = { 1706 1706 { .compatible = "apple,t8015-nvme-ans2", .data = &apple_nvme_t8015_hw }, 1707 + { .compatible = "apple,t8103-nvme-ans2", .data = &apple_nvme_t8103_hw }, 1707 1708 { .compatible = "apple,nvme-ans2", .data = &apple_nvme_t8103_hw }, 1708 1709 {}, 1709 1710 };
+2
drivers/nvme/host/fc.c
··· 3587 3587 3588 3588 ctrl->ctrl.opts = NULL; 3589 3589 3590 + if (ctrl->ctrl.admin_tagset) 3591 + nvme_remove_admin_tag_set(&ctrl->ctrl); 3590 3592 /* initiate nvme ctrl ref counting teardown */ 3591 3593 nvme_uninit_ctrl(&ctrl->ctrl); 3592 3594
+6 -1
drivers/nvme/host/pci.c
··· 1532 1532 } 1533 1533 1534 1534 writel(NVME_SUBSYS_RESET, dev->bar + NVME_REG_NSSR); 1535 - nvme_change_ctrl_state(ctrl, NVME_CTRL_LIVE); 1535 + 1536 + if (!nvme_change_ctrl_state(ctrl, NVME_CTRL_CONNECTING) || 1537 + !nvme_change_ctrl_state(ctrl, NVME_CTRL_LIVE)) 1538 + goto unlock; 1536 1539 1537 1540 /* 1538 1541 * Read controller status to flush the previous write and trigger a ··· 4002 3999 .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, 4003 4000 { PCI_DEVICE(0x1e49, 0x0041), /* ZHITAI TiPro7000 NVMe SSD */ 4004 4001 .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, 4002 + { PCI_DEVICE(0x1fa0, 0x2283), /* Wodposit WPBSNM8-256GTP */ 4003 + .driver_data = NVME_QUIRK_NO_SECONDARY_TEMP_THRESH, }, 4005 4004 { PCI_DEVICE(0x025e, 0xf1ac), /* SOLIDIGM P44 pro SSDPFKKW020X7 */ 4006 4005 .driver_data = NVME_QUIRK_NO_DEEPEST_PS, }, 4007 4006 { PCI_DEVICE(0xc0a9, 0x540a), /* Crucial P2 */
+1 -1
drivers/nvme/target/passthru.c
··· 150 150 * code path with duplicate ctrl subsysnqn. In order to prevent that we 151 151 * mask the passthru-ctrl subsysnqn with the target ctrl subsysnqn. 152 152 */ 153 - memcpy(id->subnqn, ctrl->subsys->subsysnqn, sizeof(id->subnqn)); 153 + strscpy(id->subnqn, ctrl->subsys->subsysnqn, sizeof(id->subnqn)); 154 154 155 155 /* use fabric id-ctrl values */ 156 156 id->ioccsz = cpu_to_le32((sizeof(struct nvme_command) +
+16 -5
drivers/nvme/target/tcp.c
··· 982 982 pr_err("H2CData PDU len %u is invalid\n", cmd->pdu_len); 983 983 goto err_proto; 984 984 } 985 + /* 986 + * Ensure command data structures are initialized. We must check both 987 + * cmd->req.sg and cmd->iov because they can have different NULL states: 988 + * - Uninitialized commands: both NULL 989 + * - READ commands: cmd->req.sg allocated, cmd->iov NULL 990 + * - WRITE commands: both allocated 991 + */ 992 + if (unlikely(!cmd->req.sg || !cmd->iov)) { 993 + pr_err("queue %d: H2CData PDU received for invalid command state (ttag %u)\n", 994 + queue->idx, data->ttag); 995 + goto err_proto; 996 + } 985 997 cmd->pdu_recv = 0; 986 998 nvmet_tcp_build_pdu_iovec(cmd); 987 999 queue->cmd = cmd; ··· 2004 1992 2005 1993 trace_sk_data_ready(sk); 2006 1994 1995 + if (sk->sk_state != TCP_LISTEN) 1996 + return; 1997 + 2007 1998 read_lock_bh(&sk->sk_callback_lock); 2008 1999 port = sk->sk_user_data; 2009 - if (!port) 2010 - goto out; 2011 - 2012 - if (sk->sk_state == TCP_LISTEN) 2000 + if (port) 2013 2001 queue_work(nvmet_wq, &port->accept_work); 2014 - out: 2015 2002 read_unlock_bh(&sk->sk_callback_lock); 2016 2003 } 2017 2004