md: merge the check of capabilities into md_ioctl_valid()
authorLi Nan <linan122@huawei.com>
Mon, 26 Feb 2024 03:14:36 +0000 (11:14 +0800)
committerSong Liu <song@kernel.org>
Mon, 26 Feb 2024 18:22:22 +0000 (10:22 -0800)
There is no functional change. Just to make code cleaner.

Signed-off-by: Li Nan <linan122@huawei.com>
Reviewed-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20240226031444.3606764-2-linan666@huaweicloud.com
drivers/md/md.c

index 75266c34b1f99b00097ecccf5075f473592a070e..eedb9e343840833991d426bd807cf5040a88d993 100644 (file)
@@ -7522,16 +7522,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:
@@ -7540,9 +7541,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;
        }
 }
 
@@ -7602,18 +7605,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