]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
HID: pidff: Use ARRAY_SIZE macro instead of sizeof
authorTomasz Pakuła <tomasz.pakula.oficjalny@gmail.com>
Wed, 13 Aug 2025 20:09:52 +0000 (22:09 +0200)
committerJiri Kosina <jkosina@suse.com>
Fri, 15 Aug 2025 13:58:02 +0000 (15:58 +0200)
Could lead to issues when arrays won't be 8 bit fields

Signed-off-by: Tomasz Pakuła <tomasz.pakula.oficjalny@gmail.com>
Reviewed-by: Oleg Makarenko <oleg@makarenk.ooo>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/usbhid/hid-pidff.c

index 75fc6dbe435c825ce285be29c26f896d69671156..2f9fbe4c52d7c06635ad72c74d2747ebafe3b4de 100644 (file)
@@ -158,20 +158,20 @@ struct pidff_usage {
 struct pidff_device {
        struct hid_device *hid;
 
-       struct hid_report *reports[sizeof(pidff_reports)];
+       struct hid_report *reports[ARRAY_SIZE(pidff_reports)];
 
-       struct pidff_usage set_effect[sizeof(pidff_set_effect)];
-       struct pidff_usage set_envelope[sizeof(pidff_set_envelope)];
-       struct pidff_usage set_condition[sizeof(pidff_set_condition)];
-       struct pidff_usage set_periodic[sizeof(pidff_set_periodic)];
-       struct pidff_usage set_constant[sizeof(pidff_set_constant)];
-       struct pidff_usage set_ramp[sizeof(pidff_set_ramp)];
+       struct pidff_usage set_effect[ARRAY_SIZE(pidff_set_effect)];
+       struct pidff_usage set_envelope[ARRAY_SIZE(pidff_set_envelope)];
+       struct pidff_usage set_condition[ARRAY_SIZE(pidff_set_condition)];
+       struct pidff_usage set_periodic[ARRAY_SIZE(pidff_set_periodic)];
+       struct pidff_usage set_constant[ARRAY_SIZE(pidff_set_constant)];
+       struct pidff_usage set_ramp[ARRAY_SIZE(pidff_set_ramp)];
 
-       struct pidff_usage device_gain[sizeof(pidff_device_gain)];
-       struct pidff_usage block_load[sizeof(pidff_block_load)];
-       struct pidff_usage pool[sizeof(pidff_pool)];
-       struct pidff_usage effect_operation[sizeof(pidff_effect_operation)];
-       struct pidff_usage block_free[sizeof(pidff_block_free)];
+       struct pidff_usage device_gain[ARRAY_SIZE(pidff_device_gain)];
+       struct pidff_usage block_load[ARRAY_SIZE(pidff_block_load)];
+       struct pidff_usage pool[ARRAY_SIZE(pidff_pool)];
+       struct pidff_usage effect_operation[ARRAY_SIZE(pidff_effect_operation)];
+       struct pidff_usage block_free[ARRAY_SIZE(pidff_block_free)];
 
        /*
         * Special field is a field that is not composed of
@@ -194,10 +194,10 @@ struct pidff_device {
        /* Special field in effect_operation */
        struct hid_field *effect_operation_status;
 
-       int control_id[sizeof(pidff_device_control)];
-       int type_id[sizeof(pidff_effect_types)];
-       int status_id[sizeof(pidff_block_load_status)];
-       int operation_id[sizeof(pidff_effect_operation_status)];
+       int control_id[ARRAY_SIZE(pidff_device_control)];
+       int type_id[ARRAY_SIZE(pidff_effect_types)];
+       int status_id[ARRAY_SIZE(pidff_block_load_status)];
+       int operation_id[ARRAY_SIZE(pidff_effect_operation_status)];
 
        int pid_id[PID_EFFECTS_MAX];
 
@@ -583,7 +583,7 @@ static void pidff_set_device_control(struct pidff_device *pidff, int field)
                hid_dbg(pidff->hid, "DEVICE_CONTROL is a bitmask\n");
 
                /* Clear current bitmask */
-               for (i = 0; i < sizeof(pidff_device_control); i++) {
+               for (i = 0; i < ARRAY_SIZE(pidff_device_control); i++) {
                        index = pidff->control_id[i];
                        if (index < 1)
                                continue;
@@ -999,7 +999,7 @@ static int pidff_check_usage(int usage)
 {
        int i;
 
-       for (i = 0; i < sizeof(pidff_reports); i++)
+       for (i = 0; i < ARRAY_SIZE(pidff_reports); i++)
                if (usage == (HID_UP_PID | pidff_reports[i]))
                        return i;
 
@@ -1117,7 +1117,7 @@ static int pidff_find_special_keys(int *keys, struct hid_field *fld,
 
 #define PIDFF_FIND_SPECIAL_KEYS(keys, field, name) \
        pidff_find_special_keys(pidff->keys, pidff->field, pidff_ ## name, \
-               sizeof(pidff_ ## name))
+               ARRAY_SIZE(pidff_ ## name))
 
 /*
  * Find and check the special fields
@@ -1184,7 +1184,7 @@ static int pidff_find_special_fields(struct pidff_device *pidff)
 
        if (PIDFF_FIND_SPECIAL_KEYS(status_id, block_load_status,
                                    block_load_status) !=
-                       sizeof(pidff_block_load_status)) {
+                       ARRAY_SIZE(pidff_block_load_status)) {
                hid_err(pidff->hid,
                        "block load status identifiers not found\n");
                return -1;
@@ -1192,7 +1192,7 @@ static int pidff_find_special_fields(struct pidff_device *pidff)
 
        if (PIDFF_FIND_SPECIAL_KEYS(operation_id, effect_operation_status,
                                    effect_operation_status) !=
-                       sizeof(pidff_effect_operation_status)) {
+                       ARRAY_SIZE(pidff_effect_operation_status)) {
                hid_err(pidff->hid, "effect operation identifiers not found\n");
                return -1;
        }
@@ -1208,7 +1208,7 @@ static int pidff_find_effects(struct pidff_device *pidff,
 {
        int i;
 
-       for (i = 0; i < sizeof(pidff_effect_types); i++) {
+       for (i = 0; i < ARRAY_SIZE(pidff_effect_types); i++) {
                int pidff_type = pidff->type_id[i];
 
                if (pidff->set_effect_type->usage[pidff_type].hid !=
@@ -1258,7 +1258,7 @@ static int pidff_find_effects(struct pidff_device *pidff,
 #define PIDFF_FIND_FIELDS(name, report, strict) \
        pidff_find_fields(pidff->name, pidff_ ## name, \
                pidff->reports[report], \
-               sizeof(pidff_ ## name), strict)
+               ARRAY_SIZE(pidff_ ## name), strict)
 
 /*
  * Fill and check the pidff_usages