Patch "ublk: set_params: properly check if parameters can be applied" has been added to the 6.6-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

    ublk: set_params: properly check if parameters can be applied

to the 6.6-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:
     ublk-set_params-properly-check-if-parameters-can-be-.patch
and it can be found in the queue-6.6 subdirectory.

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



commit c45abd4c515f44e4e52fe4cb1f601e9a585cbf60
Author: Uday Shankar <ushankar@xxxxxxxxxxxxxxx>
Date:   Tue Mar 4 14:34:26 2025 -0700

    ublk: set_params: properly check if parameters can be applied
    
    [ Upstream commit 5ac60242b0173be83709603ebaf27a473f16c4e4 ]
    
    The parameters set by the set_params call are only applied to the block
    device in the start_dev call. So if a device has already been started, a
    subsequently issued set_params on that device will not have the desired
    effect, and should return an error. There is an existing check for this
    - set_params fails on devices in the LIVE state. But this check is not
    sufficient to cover the recovery case. In this case, the device will be
    in the QUIESCED or FAIL_IO states, so set_params will succeed. But this
    success is misleading, because the parameters will not be applied, since
    the device has already been started (by a previous ublk server). The bit
    UB_STATE_USED is set on completion of the start_dev; use it to detect
    and fail set_params commands which arrive too late to be applied (after
    start_dev).
    
    Signed-off-by: Uday Shankar <ushankar@xxxxxxxxxxxxxxx>
    Fixes: 0aa73170eba5 ("ublk_drv: add SET_PARAMS/GET_PARAMS control command")
    Reviewed-by: Ming Lei <ming.lei@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20250304-set_params-v1-1-17b5e0887606@xxxxxxxxxxxxxxx
    Signed-off-by: Jens Axboe <axboe@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c
index 1105e8adf7f96..95095500f93af 100644
--- a/drivers/block/ublk_drv.c
+++ b/drivers/block/ublk_drv.c
@@ -2599,9 +2599,12 @@ static int ublk_ctrl_set_params(struct ublk_device *ub,
 	if (ph.len > sizeof(struct ublk_params))
 		ph.len = sizeof(struct ublk_params);
 
-	/* parameters can only be changed when device isn't live */
 	mutex_lock(&ub->mutex);
-	if (ub->dev_info.state == UBLK_S_DEV_LIVE) {
+	if (test_bit(UB_STATE_USED, &ub->state)) {
+		/*
+		 * Parameters can only be changed when device hasn't
+		 * been started yet
+		 */
 		ret = -EACCES;
 	} else if (copy_from_user(&ub->params, argp, ph.len)) {
 		ret = -EFAULT;




[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