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

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'block-6.8-2024-01-26' of git://git.kernel.dk/linux

Pull block fixes from Jens Axboe:

- RCU warning fix for md (Mikulas)

- Fix for an aoe issue that lockdep rightfully complained about
(Maksim)

- Fix for an error code change in partitioning that caused a regression
with some tools (Li)

- Fix for a data direction warning with bi-direction commands
(Christian)

* tag 'block-6.8-2024-01-26' of git://git.kernel.dk/linux:
md: fix a suspicious RCU usage warning
aoe: avoid potential deadlock at set_capacity
block: Fix WARNING in _copy_from_iter
block: Move checking GENHD_FL_NO_PART to bdev_add_partition()

+20 -7
+10 -3
block/blk-map.c
··· 205 205 /* 206 206 * success 207 207 */ 208 - if ((iov_iter_rw(iter) == WRITE && 209 - (!map_data || !map_data->null_mapped)) || 210 - (map_data && map_data->from_user)) { 208 + if (iov_iter_rw(iter) == WRITE && 209 + (!map_data || !map_data->null_mapped)) { 211 210 ret = bio_copy_from_iter(bio, iter); 211 + if (ret) 212 + goto cleanup; 213 + } else if (map_data && map_data->from_user) { 214 + struct iov_iter iter2 = *iter; 215 + 216 + /* This is the copy-in part of SG_DXFER_TO_FROM_DEV. */ 217 + iter2.data_source = ITER_SOURCE; 218 + ret = bio_copy_from_iter(bio, &iter2); 212 219 if (ret) 213 220 goto cleanup; 214 221 } else {
-2
block/ioctl.c
··· 20 20 struct blkpg_partition p; 21 21 sector_t start, length; 22 22 23 - if (disk->flags & GENHD_FL_NO_PART) 24 - return -EINVAL; 25 23 if (!capable(CAP_SYS_ADMIN)) 26 24 return -EACCES; 27 25 if (copy_from_user(&p, upart, sizeof(struct blkpg_partition)))
+5
block/partitions/core.c
··· 439 439 goto out; 440 440 } 441 441 442 + if (disk->flags & GENHD_FL_NO_PART) { 443 + ret = -EINVAL; 444 + goto out; 445 + } 446 + 442 447 if (partition_overlaps(disk, start, length, -1)) { 443 448 ret = -EBUSY; 444 449 goto out;
+4 -1
drivers/block/aoe/aoeblk.c
··· 333 333 struct gendisk *gd; 334 334 mempool_t *mp; 335 335 struct blk_mq_tag_set *set; 336 + sector_t ssize; 336 337 ulong flags; 337 338 int late = 0; 338 339 int err; ··· 397 396 gd->minors = AOE_PARTITIONS; 398 397 gd->fops = &aoe_bdops; 399 398 gd->private_data = d; 400 - set_capacity(gd, d->ssize); 399 + ssize = d->ssize; 401 400 snprintf(gd->disk_name, sizeof gd->disk_name, "etherd/e%ld.%d", 402 401 d->aoemajor, d->aoeminor); 403 402 ··· 405 404 d->flags |= DEVFL_UP; 406 405 407 406 spin_unlock_irqrestore(&d->lock, flags); 407 + 408 + set_capacity(gd, ssize); 408 409 409 410 err = device_add_disk(NULL, gd, aoe_attr_groups); 410 411 if (err)
+1 -1
drivers/md/raid1.c
··· 2262 2262 int sectors = r1_bio->sectors; 2263 2263 int read_disk = r1_bio->read_disk; 2264 2264 struct mddev *mddev = conf->mddev; 2265 - struct md_rdev *rdev = rcu_dereference(conf->mirrors[read_disk].rdev); 2265 + struct md_rdev *rdev = conf->mirrors[read_disk].rdev; 2266 2266 2267 2267 if (exceed_read_errors(mddev, rdev)) { 2268 2268 r1_bio->bios[r1_bio->read_disk] = IO_BLOCKED;