Commit c30c65f3 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'block-6.13-20241213' of git://git.kernel.dk/linux

Pull block fixes from Jens Axboe:

 - Series from Damien fixing issues with the zoned write plugging

 - Fix for a potential UAF in block cgroups

 - Fix deadlock around queue freezing and the sysfs lock

 - Various little cleanups and fixes

* tag 'block-6.13-20241213' of git://git.kernel.dk/linux:
  block: Fix potential deadlock while freezing queue and acquiring sysfs_lock
  block: Fix queue_iostats_passthrough_show()
  blk-mq: Clean up blk_mq_requeue_work()
  mq-deadline: Remove a local variable
  blk-iocost: Avoid using clamp() on inuse in __propagate_weights()
  block: Make bio_iov_bvec_set() accept pointer to const iov_iter
  block: get wp_offset by bdev_offset_from_zone_start
  blk-cgroup: Fix UAF in blkcg_unpin_online()
  MAINTAINERS: update Coly Li's email address
  block: Prevent potential deadlocks in zone write plug error recovery
  dm: Fix dm-zoned-reclaim zone write pointer alignment
  block: Ignore REQ_NOWAIT for zone reset and zone finish operations
  block: Use a zone write plug BIO work for REQ_NOWAIT BIOs
parents 2a816e4f be26ba96
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3893,7 +3893,7 @@ W: http://www.baycom.org/~tom/ham/ham.html
F:	drivers/net/hamradio/baycom*
BCACHE (BLOCK LAYER CACHE)
M:	Coly Li <colyli@suse.de>
M:	Coly Li <colyli@kernel.org>
M:	Kent Overstreet <kent.overstreet@linux.dev>
L:	linux-bcache@vger.kernel.org
S:	Maintained
+1 −1
Original line number Diff line number Diff line
@@ -1171,7 +1171,7 @@ void __bio_release_pages(struct bio *bio, bool mark_dirty)
}
EXPORT_SYMBOL_GPL(__bio_release_pages);

void bio_iov_bvec_set(struct bio *bio, struct iov_iter *iter)
void bio_iov_bvec_set(struct bio *bio, const struct iov_iter *iter)
{
	WARN_ON_ONCE(bio->bi_max_vecs);

+5 −1
Original line number Diff line number Diff line
@@ -1324,10 +1324,14 @@ void blkcg_unpin_online(struct cgroup_subsys_state *blkcg_css)
	struct blkcg *blkcg = css_to_blkcg(blkcg_css);

	do {
		struct blkcg *parent;

		if (!refcount_dec_and_test(&blkcg->online_pin))
			break;

		parent = blkcg_parent(blkcg);
		blkcg_destroy_blkgs(blkcg);
		blkcg = blkcg_parent(blkcg);
		blkcg = parent;
	} while (blkcg);
}

+8 −1
Original line number Diff line number Diff line
@@ -1098,7 +1098,14 @@ static void __propagate_weights(struct ioc_gq *iocg, u32 active, u32 inuse,
		inuse = DIV64_U64_ROUND_UP(active * iocg->child_inuse_sum,
					   iocg->child_active_sum);
	} else {
		inuse = clamp_t(u32, inuse, 1, active);
		/*
		 * It may be tempting to turn this into a clamp expression with
		 * a lower limit of 1 but active may be 0, which cannot be used
		 * as an upper limit in that situation. This expression allows
		 * active to clamp inuse unless it is 0, in which case inuse
		 * becomes 1.
		 */
		inuse = min(inuse, active) ?: 1;
	}

	iocg->last_inuse = iocg->inuse;
+1 −1
Original line number Diff line number Diff line
@@ -574,7 +574,7 @@ static int blk_rq_map_user_bvec(struct request *rq, const struct iov_iter *iter)
	bio = blk_rq_map_bio_alloc(rq, 0, GFP_KERNEL);
	if (!bio)
		return -ENOMEM;
	bio_iov_bvec_set(bio, (struct iov_iter *)iter);
	bio_iov_bvec_set(bio, iter);

	/* check that the data layout matches the hardware restrictions */
	ret = bio_split_rw_at(bio, lim, &nsegs, max_bytes);
Loading