hwmon: put HWMON_CHANNEL_INFO() initializers in rodata
authorJani Nikula <jani.nikula@intel.com>
Wed, 17 Jan 2024 11:44:05 +0000 (13:44 +0200)
committerGuenter Roeck <linux@roeck-us.net>
Sun, 11 Feb 2024 21:43:08 +0000 (13:43 -0800)
HWMON_CHANNEL_INFO() is supposed to be used as initializer for arrays of
const struct hwmon_channel_info *. However, without explicit const,
HWMON_CHANNEL_INFO() creates mutable compound literals, and the const
pointers point at the mutable data. Add const to place the data in
rodata.

Cc: Jean Delvare <jdelvare@suse.com>
Cc: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://lore.kernel.org/r/20240117114405.1506775-1-jani.nikula@intel.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
include/linux/hwmon.h

index 8cd6a6b335930deaa21e1e8c82b931ee5dd354e9..c2c0da18dfa3699aac5a268afae7402ce758bd86 100644 (file)
@@ -425,12 +425,12 @@ struct hwmon_channel_info {
        const u32 *config;
 };
 
-#define HWMON_CHANNEL_INFO(stype, ...) \
-       (&(struct hwmon_channel_info) { \
-               .type = hwmon_##stype,  \
-               .config = (u32 []) {    \
-                       __VA_ARGS__, 0  \
-               }                       \
+#define HWMON_CHANNEL_INFO(stype, ...)         \
+       (&(const struct hwmon_channel_info) {   \
+               .type = hwmon_##stype,          \
+               .config = (const u32 []) {      \
+                       __VA_ARGS__, 0          \
+               }                               \
        })
 
 /**