2021-04-07 21:00:41

by Yu Kuai

[permalink] [raw]
Subject: [PATCH] stm class: initialize static variable in declaration

mutex lock can be initialized automatically with DEFINE_MUTEX()
rather than explicitly calling mutex_init().

list head can be initialized automatically with LIST_HEAD() rather
than explicitly calling INIT_LIST_HEAD().

srcu_struct can be initialized automatically with DEFINE_STATIC_SRCU()
rather than explicitly calling init_srcu_struct().

Reported-by: Hulk Robot <[email protected]>
Signed-off-by: Yu Kuai <[email protected]>
---
drivers/hwtracing/stm/core.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/hwtracing/stm/core.c b/drivers/hwtracing/stm/core.c
index 2712e699ba08..1e13993e7969 100644
--- a/drivers/hwtracing/stm/core.c
+++ b/drivers/hwtracing/stm/core.c
@@ -31,7 +31,7 @@ static unsigned int stm_core_up;
* stm_source_write() caller, which may want to have as little overhead as
* possible.
*/
-static struct srcu_struct stm_source_srcu;
+DEFINE_STATIC_SRCU(stm_source_srcu);

static ssize_t masters_show(struct device *dev,
struct device_attribute *attr,
@@ -366,8 +366,8 @@ static int major_match(struct device *dev, const void *data)
* Modules can implement STM protocol drivers and (un-)register them
* with the STM class framework.
*/
-static struct list_head stm_pdrv_head;
-static struct mutex stm_pdrv_mutex;
+static LIST_HEAD(stm_pdrv_head);
+static DEFINE_MUTEX(stm_pdrv_mutex);

struct stm_pdrv_entry {
struct list_head entry;
@@ -1324,10 +1324,6 @@ static int __init stm_core_init(void)
if (err)
goto err_src;

- init_srcu_struct(&stm_source_srcu);
- INIT_LIST_HEAD(&stm_pdrv_head);
- mutex_init(&stm_pdrv_mutex);
-
/*
* So as to not confuse existing users with a requirement
* to load yet another module, do it here.
--
2.25.4


2021-04-22 06:36:16

by Alexander Shishkin

[permalink] [raw]
Subject: Re: [PATCH] stm class: initialize static variable in declaration

Yu Kuai <[email protected]> writes:

> mutex lock can be initialized automatically with DEFINE_MUTEX()
> rather than explicitly calling mutex_init().
>
> list head can be initialized automatically with LIST_HEAD() rather
> than explicitly calling INIT_LIST_HEAD().
>
> srcu_struct can be initialized automatically with DEFINE_STATIC_SRCU()
> rather than explicitly calling init_srcu_struct().

What's missing is the "why". We can do these or we can keep them as they
are. Each choice has impact on .text/.data, for instance. Why is one
preferred over the other?

Each patch should contain some form of analysis that shows that the
author thought about why they made the patch in the first
place.

And please learn not to spam the STMicro people with patches for System
Trace Module. Sometimes the same acronym can mean multiple different
things. This is another sign that the patch author spent zero time
getting to know the code that they are patching.

Regards,
--
Alex