2015-11-13 12:32:02

by Corentin Labbe

[permalink] [raw]
Subject: [PATCH] ipmi: constify some struct and char arrays

Lots of char arrays could be set as const since they contain only literal
char arrays.
We could in the same time make const some struct members who are pointer
to those const char arrays.

Signed-off-by: LABBE Corentin <[email protected]>
---
drivers/char/ipmi/ipmi_msghandler.c | 7 ++++---
drivers/char/ipmi/ipmi_si_intf.c | 27 ++++++++++++++++-----------
2 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
index e3536da..94fb407 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
@@ -472,9 +472,10 @@ static DEFINE_MUTEX(smi_watchers_mutex);
#define ipmi_get_stat(intf, stat) \
((unsigned int) atomic_read(&(intf)->stats[IPMI_STAT_ ## stat]))

-static char *addr_src_to_str[] = { "invalid", "hotmod", "hardcoded", "SPMI",
- "ACPI", "SMBIOS", "PCI",
- "device-tree", "default" };
+static const char * const addr_src_to_str[] = {
+ "invalid", "hotmod", "hardcoded", "SPMI", "ACPI", "SMBIOS", "PCI",
+ "device-tree", "default"
+};

const char *ipmi_addr_src_to_str(enum ipmi_addr_src src)
{
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index 654f6f3..8d680c8 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -105,7 +105,8 @@ enum si_intf_state {
enum si_type {
SI_KCS, SI_SMIC, SI_BT
};
-static char *si_to_str[] = { "kcs", "smic", "bt" };
+
+static const char * const si_to_str[] = { "kcs", "smic", "bt" };

#define DEVICE_NAME "ipmi_si"

@@ -1319,7 +1320,7 @@ static unsigned int num_slave_addrs;

#define IPMI_IO_ADDR_SPACE 0
#define IPMI_MEM_ADDR_SPACE 1
-static char *addr_space_to_str[] = { "i/o", "mem" };
+static const char * const addr_space_to_str[] = { "i/o", "mem" };

static int hotmod_handler(const char *val, struct kernel_param *kp);

@@ -1701,27 +1702,31 @@ static int mem_setup(struct smi_info *info)
*/
enum hotmod_op { HM_ADD, HM_REMOVE };
struct hotmod_vals {
- char *name;
- int val;
+ const char *name;
+ const int val;
};
-static struct hotmod_vals hotmod_ops[] = {
+
+static const struct hotmod_vals hotmod_ops[] = {
{ "add", HM_ADD },
{ "remove", HM_REMOVE },
{ NULL }
};
-static struct hotmod_vals hotmod_si[] = {
+
+static const struct hotmod_vals hotmod_si[] = {
{ "kcs", SI_KCS },
{ "smic", SI_SMIC },
{ "bt", SI_BT },
{ NULL }
};
-static struct hotmod_vals hotmod_as[] = {
+
+static const struct hotmod_vals hotmod_as[] = {
{ "mem", IPMI_MEM_ADDR_SPACE },
{ "i/o", IPMI_IO_ADDR_SPACE },
{ NULL }
};

-static int parse_str(struct hotmod_vals *v, int *val, char *name, char **curr)
+static int parse_str(const struct hotmod_vals *v, int *val, char *name,
+ char **curr)
{
char *s;
int i;
@@ -2848,7 +2853,7 @@ static int ipmi_parisc_remove(struct parisc_device *dev)
return 0;
}

-static struct parisc_device_id ipmi_parisc_tbl[] = {
+static const struct parisc_device_id ipmi_parisc_tbl[] = {
{ HPHW_MC, HVERSION_REV_ANY_ID, 0x004, 0xC0 },
{ 0, }
};
@@ -3422,8 +3427,8 @@ static inline void wait_for_timer_and_thread(struct smi_info *smi_info)

static const struct ipmi_default_vals
{
- int type;
- int port;
+ const int type;
+ const int port;
} ipmi_defaults[] =
{
{ .type = SI_KCS, .port = 0xca2 },
--
2.4.10


2015-11-16 13:20:12

by Corey Minyard

[permalink] [raw]
Subject: Re: [PATCH] ipmi: constify some struct and char arrays

Thanks for fixing the problem reported on this. Queued for 4.5.

-corey

On 11/13/2015 06:31 AM, LABBE Corentin wrote:
> Lots of char arrays could be set as const since they contain only literal
> char arrays.
> We could in the same time make const some struct members who are pointer
> to those const char arrays.
>
> Signed-off-by: LABBE Corentin <[email protected]>
> ---
> drivers/char/ipmi/ipmi_msghandler.c | 7 ++++---
> drivers/char/ipmi/ipmi_si_intf.c | 27 ++++++++++++++++-----------
> 2 files changed, 20 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
> index e3536da..94fb407 100644
> --- a/drivers/char/ipmi/ipmi_msghandler.c
> +++ b/drivers/char/ipmi/ipmi_msghandler.c
> @@ -472,9 +472,10 @@ static DEFINE_MUTEX(smi_watchers_mutex);
> #define ipmi_get_stat(intf, stat) \
> ((unsigned int) atomic_read(&(intf)->stats[IPMI_STAT_ ## stat]))
>
> -static char *addr_src_to_str[] = { "invalid", "hotmod", "hardcoded", "SPMI",
> - "ACPI", "SMBIOS", "PCI",
> - "device-tree", "default" };
> +static const char * const addr_src_to_str[] = {
> + "invalid", "hotmod", "hardcoded", "SPMI", "ACPI", "SMBIOS", "PCI",
> + "device-tree", "default"
> +};
>
> const char *ipmi_addr_src_to_str(enum ipmi_addr_src src)
> {
> diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
> index 654f6f3..8d680c8 100644
> --- a/drivers/char/ipmi/ipmi_si_intf.c
> +++ b/drivers/char/ipmi/ipmi_si_intf.c
> @@ -105,7 +105,8 @@ enum si_intf_state {
> enum si_type {
> SI_KCS, SI_SMIC, SI_BT
> };
> -static char *si_to_str[] = { "kcs", "smic", "bt" };
> +
> +static const char * const si_to_str[] = { "kcs", "smic", "bt" };
>
> #define DEVICE_NAME "ipmi_si"
>
> @@ -1319,7 +1320,7 @@ static unsigned int num_slave_addrs;
>
> #define IPMI_IO_ADDR_SPACE 0
> #define IPMI_MEM_ADDR_SPACE 1
> -static char *addr_space_to_str[] = { "i/o", "mem" };
> +static const char * const addr_space_to_str[] = { "i/o", "mem" };
>
> static int hotmod_handler(const char *val, struct kernel_param *kp);
>
> @@ -1701,27 +1702,31 @@ static int mem_setup(struct smi_info *info)
> */
> enum hotmod_op { HM_ADD, HM_REMOVE };
> struct hotmod_vals {
> - char *name;
> - int val;
> + const char *name;
> + const int val;
> };
> -static struct hotmod_vals hotmod_ops[] = {
> +
> +static const struct hotmod_vals hotmod_ops[] = {
> { "add", HM_ADD },
> { "remove", HM_REMOVE },
> { NULL }
> };
> -static struct hotmod_vals hotmod_si[] = {
> +
> +static const struct hotmod_vals hotmod_si[] = {
> { "kcs", SI_KCS },
> { "smic", SI_SMIC },
> { "bt", SI_BT },
> { NULL }
> };
> -static struct hotmod_vals hotmod_as[] = {
> +
> +static const struct hotmod_vals hotmod_as[] = {
> { "mem", IPMI_MEM_ADDR_SPACE },
> { "i/o", IPMI_IO_ADDR_SPACE },
> { NULL }
> };
>
> -static int parse_str(struct hotmod_vals *v, int *val, char *name, char **curr)
> +static int parse_str(const struct hotmod_vals *v, int *val, char *name,
> + char **curr)
> {
> char *s;
> int i;
> @@ -2848,7 +2853,7 @@ static int ipmi_parisc_remove(struct parisc_device *dev)
> return 0;
> }
>
> -static struct parisc_device_id ipmi_parisc_tbl[] = {
> +static const struct parisc_device_id ipmi_parisc_tbl[] = {
> { HPHW_MC, HVERSION_REV_ANY_ID, 0x004, 0xC0 },
> { 0, }
> };
> @@ -3422,8 +3427,8 @@ static inline void wait_for_timer_and_thread(struct smi_info *smi_info)
>
> static const struct ipmi_default_vals
> {
> - int type;
> - int port;
> + const int type;
> + const int port;
> } ipmi_defaults[] =
> {
> { .type = SI_KCS, .port = 0xca2 },