Pull NVMe updates from Keith: "- Enable context analysis for the nvme host driver, annotating the subsystem's locks, along with the LIST_HEAD_GUARDED support it needs (Nilay, Marco) - Harden the tcp host and target against malformed PDUs and out of range SGL lengths (Yehyeong, Ibrahim, Greg) - Fix unserialized page_frag_cache use in nvme-tcp request setup (Dmitry) - Bound identify, FDP and passthrough descriptor parsing to the allocated buffers (Hari, Guixin) - Zoned namespace fixes for host and the target (Xixin, Guixin, Yao) - Apple controller fixes: page aligned admin queue buffers, NVMMU TCB setup, DMA direction and admin queue teardown (Sven, Gui-Dong) - Add a namespace level debugfs directory exposing reservation state, and ABI documentation for the host sysfs and target configfs interfaces (Guixin) - Fix cdev and namespace lifetimes (John) - Parallelize nvme-rdma I/O queue allocation and startup (Surabhi) - Fix nvmet-rdma response resource leak on queue teardown (Shin'ichiro) - Authentication fixes: AUTH_RECEIVE buffer and an out of bounds read in negotiate (Xixin, Bryam, Guixin, Eric) - Fix pci-epf use-after-free and CQ reference leak (Shin'ichiro, Yifei) - Reject passthrough of driver managed Set Features (Chao) - Various error path and teardown fixes across the host and target addressing issues with use-after-free and leaking resources (Guixin, Maurizio, Ewan, Zhengrong, Jiang HongHui, Myeonghun, Yang, Geliang, Yehyeong) - Various cleanups and typo fixes (Nilay, Guixin, Pan Chuang)" * tag 'nvme-7.3-2026-08-13' of git://git.infradead.org/nvme: (81 commits) nvmet: fix max_qid race between configfs and controller allocation nvme: nvme-fc: Fix nvme_fc_create_hw_io_queues() queue deletion in error path nvme: ratelimit the completion-path messages driven by device data nvme-tcp: fix host memory disclosure on R2T for a read command nvme-tcp: do not accept C2HData based on blk_rq_payload_bytes() alone nvme-tcp: reject a read that transferred too few bytes nvmet: zns: reject full zone report when buffer is too small nvme-tcp: fix usage of page_frag_cache nvme: reject passthrough of driver-managed Set Features nvmet: fix NULL pointer dereference in nvmet_execute_identify_ns_zns() nvmet: pci-epf: fix use-after-free in nvmet_pci_epf_exec_iod_work() nvmet: pci-epf: put CQ ref on create_cq mapping failure nvme-apple: Drop the PRP null check chicken bit nvme-apple: Require page aligned buffers on the admin queue nvme: Add a quirk for page aligned admin queue buffers nvme-apple: Never set the opcode in the NVMMU TCB nvme-apple: Don't set a DMA direction for commands without a data transfer nvme-apple: Destroy the admin queue on removal nvmet: fix heap out-of-bounds read in nvmet_auth_negotiate() nvme: raise FDP placement handle cap to U8_MAX and warn on overflow ...
Showing the changes to include (2 of 36 files). Show all
Unified · Split
| @@ -33,6 +33,14 @@ · 32 unmodified lines | ||
| 33 | 33 | #define LIST_HEAD(name) \ |
| 34 | 34 | struct list_head name = LIST_HEAD_INIT(name) |
| 35 | 35 | |
| 36 | +/** | |
| 37 | + * LIST_HEAD_GUARDED - define a &struct list_head annotated with __guarded_by() | |
| 38 | + * @name: name of the list_head | |
| 39 | + * @lock: lock protecting the list | |
| 40 | + */ | |
| 41 | +#define LIST_HEAD_GUARDED(name, lock) \ | |
| 42 | + __guarded_by(&(lock)) LIST_HEAD(name) | |
| 43 | + | |
| 36 | 44 | /** |
| 37 | 45 | * INIT_LIST_HEAD - Initialize a list_head structure |
| 38 | 46 | * @list: list_head structure to be initialized. |
| @@ -436,6 +444,7 @@ static inline void list_del_init_careful(struct list_head *entry) · 397 unmodified lines | ||
| 436 | 444 | * if another CPU could re-list_add() it. |
| 437 | 445 | */ |
| 438 | 446 | static inline int list_empty_careful(const struct list_head *head) |
| 447 | + __context_unsafe(/* intentional lockless access to @head */) | |
| 439 | 448 | { |
| 440 | 449 | struct list_head *next = smp_load_acquire(&head->next); |
| 441 | 450 | return list_is_head(next, head) && (next == READ_ONCE(head->prev)); |
| @@ -2272,14 +2272,14 @@ struct nvme_completion { · 2271 unmodified lines | ||
| 2272 | 2272 | #define NVME_TERTIARY(ver) ((ver) & 0xff) |
| 2273 | 2273 | |
| 2274 | 2274 | enum { |
| 2275 | − NVME_AEN_RESV_LOG_PAGE_AVALIABLE = 0x00, | |
| 2275 | + NVME_AEN_RESV_LOG_PAGE_AVAILABLE = 0x00, | |
| 2276 | 2276 | }; |
| 2277 | 2277 | |
| 2278 | 2278 | enum { |
| 2279 | 2279 | NVME_PR_LOG_EMPTY_LOG_PAGE = 0x00, |
| 2280 | 2280 | NVME_PR_LOG_REGISTRATION_PREEMPTED = 0x01, |
| 2281 | 2281 | NVME_PR_LOG_RESERVATION_RELEASED = 0x02, |
| 2282 | − NVME_PR_LOG_RESERVATOIN_PREEMPTED = 0x03, | |
| 2282 | + NVME_PR_LOG_RESERVATION_PREEMPTED = 0x03, | |
| 2283 | 2283 | }; |
| 2284 | 2284 | |
| 2285 | 2285 | enum { |