[v5,1/8] md: merge the check of capabilities into md_ioctl_valid()

Message ID 20240201063404.772797-2-linan666@huaweicloud.com
State New
Headers
Series bugfix of MD_CLOSING and clean up md_ioctl() |

Commit Message

Li Nan Feb. 1, 2024, 6:33 a.m. UTC
  From: Li Nan <linan122@huawei.com>

There is no functional change. Just to make code cleaner.

Signed-off-by: Li Nan <linan122@huawei.com>
---
 drivers/md/md.c | 30 ++++++++++++------------------
 1 file changed, 12 insertions(+), 18 deletions(-)
  

Comments

Yu Kuai Feb. 2, 2024, 1:17 a.m. UTC | #1
在 2024/02/01 14:33, linan666@huaweicloud.com 写道:
> From: Li Nan <linan122@huawei.com>
> 
> There is no functional change. Just to make code cleaner.
> 
> Signed-off-by: Li Nan <linan122@huawei.com>

LGTM
Reviewed-by: Yu Kuai <yukuai3@huawei.com>

> ---
>   drivers/md/md.c | 30 ++++++++++++------------------
>   1 file changed, 12 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/md/md.c b/drivers/md/md.c
> index e351e6c51cc7..1b509fb82040 100644
> --- a/drivers/md/md.c
> +++ b/drivers/md/md.c
> @@ -7545,16 +7545,17 @@ static int md_getgeo(struct block_device *bdev, struct hd_geometry *geo)
>   	return 0;
>   }
>   
> -static inline bool md_ioctl_valid(unsigned int cmd)
> +static inline int md_ioctl_valid(unsigned int cmd)
>   {
>   	switch (cmd) {
> -	case ADD_NEW_DISK:
>   	case GET_ARRAY_INFO:
> -	case GET_BITMAP_FILE:
>   	case GET_DISK_INFO:
> +	case RAID_VERSION:
> +		return 0;
> +	case ADD_NEW_DISK:
> +	case GET_BITMAP_FILE:
>   	case HOT_ADD_DISK:
>   	case HOT_REMOVE_DISK:
> -	case RAID_VERSION:
>   	case RESTART_ARRAY_RW:
>   	case RUN_ARRAY:
>   	case SET_ARRAY_INFO:
> @@ -7563,9 +7564,11 @@ static inline bool md_ioctl_valid(unsigned int cmd)
>   	case STOP_ARRAY:
>   	case STOP_ARRAY_RO:
>   	case CLUSTERED_DISK_NACK:
> -		return true;
> +		if (!capable(CAP_SYS_ADMIN))
> +			return -EACCES;
> +		return 0;
>   	default:
> -		return false;
> +		return -ENOTTY;
>   	}
>   }
>   
> @@ -7625,18 +7628,9 @@ static int md_ioctl(struct block_device *bdev, blk_mode_t mode,
>   	struct mddev *mddev = NULL;
>   	bool did_set_md_closing = false;
>   
> -	if (!md_ioctl_valid(cmd))
> -		return -ENOTTY;
> -
> -	switch (cmd) {
> -	case RAID_VERSION:
> -	case GET_ARRAY_INFO:
> -	case GET_DISK_INFO:
> -		break;
> -	default:
> -		if (!capable(CAP_SYS_ADMIN))
> -			return -EACCES;
> -	}
> +	err = md_ioctl_valid(cmd);
> +	if (err)
> +		return err;
>   
>   	/*
>   	 * Commands dealing with the RAID driver but not any
>
  

Patch

diff --git a/drivers/md/md.c b/drivers/md/md.c
index e351e6c51cc7..1b509fb82040 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -7545,16 +7545,17 @@  static int md_getgeo(struct block_device *bdev, struct hd_geometry *geo)
 	return 0;
 }
 
-static inline bool md_ioctl_valid(unsigned int cmd)
+static inline int md_ioctl_valid(unsigned int cmd)
 {
 	switch (cmd) {
-	case ADD_NEW_DISK:
 	case GET_ARRAY_INFO:
-	case GET_BITMAP_FILE:
 	case GET_DISK_INFO:
+	case RAID_VERSION:
+		return 0;
+	case ADD_NEW_DISK:
+	case GET_BITMAP_FILE:
 	case HOT_ADD_DISK:
 	case HOT_REMOVE_DISK:
-	case RAID_VERSION:
 	case RESTART_ARRAY_RW:
 	case RUN_ARRAY:
 	case SET_ARRAY_INFO:
@@ -7563,9 +7564,11 @@  static inline bool md_ioctl_valid(unsigned int cmd)
 	case STOP_ARRAY:
 	case STOP_ARRAY_RO:
 	case CLUSTERED_DISK_NACK:
-		return true;
+		if (!capable(CAP_SYS_ADMIN))
+			return -EACCES;
+		return 0;
 	default:
-		return false;
+		return -ENOTTY;
 	}
 }
 
@@ -7625,18 +7628,9 @@  static int md_ioctl(struct block_device *bdev, blk_mode_t mode,
 	struct mddev *mddev = NULL;
 	bool did_set_md_closing = false;
 
-	if (!md_ioctl_valid(cmd))
-		return -ENOTTY;
-
-	switch (cmd) {
-	case RAID_VERSION:
-	case GET_ARRAY_INFO:
-	case GET_DISK_INFO:
-		break;
-	default:
-		if (!capable(CAP_SYS_ADMIN))
-			return -EACCES;
-	}
+	err = md_ioctl_valid(cmd);
+	if (err)
+		return err;
 
 	/*
 	 * Commands dealing with the RAID driver but not any