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.0-2022-09-22' of git://git.kernel.dk/linux

Pull block fixes from Jens Axboe:
"Fix a regression that's been plaguing us by reverting the offending
commit, as attempts to both reproduce the issue and fix it in a saner
fashion have failed.

Fix for a potential oops condition in the s390 dasd block driver"

* tag 'block-6.0-2022-09-22' of git://git.kernel.dk/linux:
Revert "block: freeze the queue earlier in del_gendisk"
s390/dasd: fix Oops in dasd_alias_get_start_dev due to missing pavgroup

+9 -3
+2 -1
block/genhd.c
··· 602 602 * Prevent new I/O from crossing bio_queue_enter(). 603 603 */ 604 604 blk_queue_start_drain(q); 605 - blk_mq_freeze_queue_wait(q); 606 605 607 606 if (!(disk->flags & GENHD_FL_HIDDEN)) { 608 607 sysfs_remove_link(&disk_to_dev(disk)->kobj, "bdi"); ··· 624 625 sysfs_remove_link(block_depr, dev_name(disk_to_dev(disk))); 625 626 pm_runtime_set_memalloc_noio(disk_to_dev(disk), false); 626 627 device_del(disk_to_dev(disk)); 628 + 629 + blk_mq_freeze_queue_wait(q); 627 630 628 631 blk_throtl_cancel_bios(disk->queue); 629 632
+7 -2
drivers/s390/block/dasd_alias.c
··· 675 675 struct dasd_device *dasd_alias_get_start_dev(struct dasd_device *base_device) 676 676 { 677 677 struct dasd_eckd_private *alias_priv, *private = base_device->private; 678 - struct alias_pav_group *group = private->pavgroup; 679 678 struct alias_lcu *lcu = private->lcu; 680 679 struct dasd_device *alias_device; 680 + struct alias_pav_group *group; 681 681 unsigned long flags; 682 682 683 - if (!group || !lcu) 683 + if (!lcu) 684 684 return NULL; 685 685 if (lcu->pav == NO_PAV || 686 686 lcu->flags & (NEED_UAC_UPDATE | UPDATE_PENDING)) ··· 697 697 } 698 698 699 699 spin_lock_irqsave(&lcu->lock, flags); 700 + group = private->pavgroup; 701 + if (!group) { 702 + spin_unlock_irqrestore(&lcu->lock, flags); 703 + return NULL; 704 + } 700 705 alias_device = group->next; 701 706 if (!alias_device) { 702 707 if (list_empty(&group->aliaslist)) {