On Sun, Aug 10, 2025 at 07:37:36AM -0700, Christoph Hellwig wrote: > On Tue, Aug 05, 2025 at 07:11:17AM -0700, Keith Busch wrote: > > @@ -341,6 +344,8 @@ int bio_split_rw_at(struct bio *bio, const struct queue_limits *lim, > > * we do not use the full hardware limits. > > */ > > bytes = ALIGN_DOWN(bytes, bio_split_alignment(bio, lim)); > > + if (!bytes) > > + return -EINVAL; > > How is this related to the other hunk and the patch description? The patchset allows you to submit an io with vectors that are partial logical blocks. Misuse could create a bio that exceeds the device max vectors or introduces virtual boundary gaps, requiring a split into something that is smaller than a block size. This check catches that. Quick example: nvme with a 4k logical block size, and the usual 4k virtual boundary. Send an io with four vectors iov_len=1k. The total size is block sized, but there's no way that could split into a valid io. There's a test specifically for this in my reply about xfstests.