mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
perf dso: Minor refactor to allow clang's Wthread-safety analysis
The pattern:
```
if (x) {
lock(...)
}
block1;
if (x) {
unlock(...)
}
```
defeats clang's -Wthread-safety analysis where it complains of locks
held on one path and not another.
Add helper functions for "block1" then restructure as:
```
if (x) {
lock(...);
block1();
unlock(...);
} else {
block1();
}
```
Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: Bill Wendling <morbo@google.com>
Cc: Chaitanya S Prakash <chaitanyas.prakash@arm.com>
Cc: Fei Lang <langfei@huawei.com>
Cc: Howard Chu <howardchu95@gmail.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@linaro.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Justin Stitt <justinstitt@google.com>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Nathan Chancellor <nathan@kernel.org>
Cc: Nick Desaulniers <nick.desaulniers+lkml@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephen Brennan <stephen.s.brennan@oracle.com>
Link: https://lore.kernel.org/r/20250519224645.1810891-1-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
ba5f102eec
commit
ab2c742d75
|
|
@ -1349,6 +1349,16 @@ struct dso *machine__findnew_kernel(struct machine *machine, const char *name,
|
|||
return dso;
|
||||
}
|
||||
|
||||
static void __dso__set_long_name_id(struct dso *dso, const char *name, bool name_allocated)
|
||||
{
|
||||
if (dso__long_name_allocated(dso))
|
||||
free((char *)dso__long_name(dso));
|
||||
|
||||
RC_CHK_ACCESS(dso)->long_name = name;
|
||||
RC_CHK_ACCESS(dso)->long_name_len = strlen(name);
|
||||
dso__set_long_name_allocated(dso, name_allocated);
|
||||
}
|
||||
|
||||
static void dso__set_long_name_id(struct dso *dso, const char *name, bool name_allocated)
|
||||
{
|
||||
struct dsos *dsos = dso__dsos(dso);
|
||||
|
|
@ -1362,18 +1372,11 @@ static void dso__set_long_name_id(struct dso *dso, const char *name, bool name_a
|
|||
* renaming the dso.
|
||||
*/
|
||||
down_write(&dsos->lock);
|
||||
}
|
||||
|
||||
if (dso__long_name_allocated(dso))
|
||||
free((char *)dso__long_name(dso));
|
||||
|
||||
RC_CHK_ACCESS(dso)->long_name = name;
|
||||
RC_CHK_ACCESS(dso)->long_name_len = strlen(name);
|
||||
dso__set_long_name_allocated(dso, name_allocated);
|
||||
|
||||
if (dsos) {
|
||||
__dso__set_long_name_id(dso, name, name_allocated);
|
||||
dsos->sorted = false;
|
||||
up_write(&dsos->lock);
|
||||
} else {
|
||||
__dso__set_long_name_id(dso, name, name_allocated);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1451,6 +1454,16 @@ void dso__set_long_name(struct dso *dso, const char *name, bool name_allocated)
|
|||
dso__set_long_name_id(dso, name, name_allocated);
|
||||
}
|
||||
|
||||
static void __dso__set_short_name(struct dso *dso, const char *name, bool name_allocated)
|
||||
{
|
||||
if (dso__short_name_allocated(dso))
|
||||
free((char *)dso__short_name(dso));
|
||||
|
||||
RC_CHK_ACCESS(dso)->short_name = name;
|
||||
RC_CHK_ACCESS(dso)->short_name_len = strlen(name);
|
||||
dso__set_short_name_allocated(dso, name_allocated);
|
||||
}
|
||||
|
||||
void dso__set_short_name(struct dso *dso, const char *name, bool name_allocated)
|
||||
{
|
||||
struct dsos *dsos = dso__dsos(dso);
|
||||
|
|
@ -1464,17 +1477,11 @@ void dso__set_short_name(struct dso *dso, const char *name, bool name_allocated)
|
|||
* renaming the dso.
|
||||
*/
|
||||
down_write(&dsos->lock);
|
||||
}
|
||||
if (dso__short_name_allocated(dso))
|
||||
free((char *)dso__short_name(dso));
|
||||
|
||||
RC_CHK_ACCESS(dso)->short_name = name;
|
||||
RC_CHK_ACCESS(dso)->short_name_len = strlen(name);
|
||||
dso__set_short_name_allocated(dso, name_allocated);
|
||||
|
||||
if (dsos) {
|
||||
__dso__set_short_name(dso, name, name_allocated);
|
||||
dsos->sorted = false;
|
||||
up_write(&dsos->lock);
|
||||
} else {
|
||||
__dso__set_short_name(dso, name, name_allocated);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user