Patch "s390/dasd: Use correct lock while counting channel queue length" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    s390/dasd: Use correct lock while counting channel queue length

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     s390-dasd-use-correct-lock-while-counting-channel-qu.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit d00c3efdbbb4f248f21cd40390c471985a5b7f73
Author: Jan Höppner <hoeppner@xxxxxxxxxxxxx>
Date:   Fri Jun 9 17:37:50 2023 +0200

    s390/dasd: Use correct lock while counting channel queue length
    
    [ Upstream commit ccc45cb4e7271c74dbb27776ae8f73d84557f5c6 ]
    
    The lock around counting the channel queue length in the BIODASDINFO
    ioctl was incorrectly changed to the dasd_block->queue_lock with commit
    583d6535cb9d ("dasd: remove dead code"). This can lead to endless list
    iterations and a subsequent crash.
    
    The queue_lock is supposed to be used only for queue lists belonging to
    dasd_block. For dasd_device related queue lists the ccwdev lock must be
    used.
    
    Fix the mentioned issues by correctly using the ccwdev lock instead of
    the queue lock.
    
    Fixes: 583d6535cb9d ("dasd: remove dead code")
    Cc: stable@xxxxxxxxxxxxxxx # v5.0+
    Signed-off-by: Jan Höppner <hoeppner@xxxxxxxxxxxxx>
    Reviewed-by: Stefan Haberland <sth@xxxxxxxxxxxxx>
    Signed-off-by: Stefan Haberland <sth@xxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230609153750.1258763-2-sth@xxxxxxxxxxxxx
    Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c
index 9b7782395c379..d7aed832910c4 100644
--- a/drivers/s390/block/dasd_ioctl.c
+++ b/drivers/s390/block/dasd_ioctl.c
@@ -509,10 +509,10 @@ static int __dasd_ioctl_information(struct dasd_block *block,
 
 	memcpy(dasd_info->type, base->discipline->name, 4);
 
-	spin_lock_irqsave(&block->queue_lock, flags);
+	spin_lock_irqsave(get_ccwdev_lock(base->cdev), flags);
 	list_for_each(l, &base->ccw_queue)
 		dasd_info->chanq_len++;
-	spin_unlock_irqrestore(&block->queue_lock, flags);
+	spin_unlock_irqrestore(get_ccwdev_lock(base->cdev), flags);
 	return 0;
 }
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux