The commit is pushed to "branch-rh9-5.14.0-162.6.1.vz9.18.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after rh9-5.14.0-162.6.1.vz9.18.11 ------> commit f84bebd9f1ff2086e8c2dbe382ac95992c724f9c Author: Nikolay Borisov <nikolay.bori...@virtuozzo.com> Date: Fri Jan 27 13:34:39 2023 +0200
blk-cbt: Factor out common capability check Instead of duplicating CAP_SYS_ADMIN check for every block-cbt ioctl apart from BLKCBTGET simply factor out the check in the beginning of blk_cbt_ioctl(). Fixes: ea18c5e9d2ba ("cbt: introduce changed block tracking") Signed-off-by: Nikolay Borisov <nikolay.bori...@virtuozzo.com> Reviewed-by: Alexander Atanasov <alexander.atana...@virtuozzo.com> --- block/blk-cbt.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/block/blk-cbt.c b/block/blk-cbt.c index 702a44e216e9..a80fdeecd661 100644 --- a/block/blk-cbt.c +++ b/block/blk-cbt.c @@ -991,34 +991,26 @@ static int cbt_ioc_misc(struct block_device *bdev, void __user *arg) int blk_cbt_ioctl(struct block_device *bdev, unsigned cmd, char __user *arg) { - struct blk_user_cbt_info __user *ucbt_ioc = (struct blk_user_cbt_info __user *) arg; + struct blk_user_cbt_info __user *ucbt_ioc; + + ucbt_ioc = (struct blk_user_cbt_info __user *) arg; + + if (cmd == BLKCBTGET) + return cbt_ioc_get(bdev, ucbt_ioc); + + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; switch(cmd) { case BLKCBTSTART: - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; return cbt_ioc_init(bdev, ucbt_ioc); case BLKCBTSTOP: - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; - return cbt_ioc_stop(bdev); - case BLKCBTGET: - return cbt_ioc_get(bdev, ucbt_ioc); case BLKCBTSET: - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; - return cbt_ioc_set(bdev, ucbt_ioc, 1); case BLKCBTCLR: - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; - return cbt_ioc_set(bdev, ucbt_ioc, 0); case BLKCBTMISC: - if (!capable(CAP_SYS_ADMIN)) - return -EACCES; - return cbt_ioc_misc(bdev, arg); default: BUG(); _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel