@@ -12101,10 +12101,10 @@ static int perf_try_init_event(struct pmu *pmu, struct perf_event *event)
12101
12101
static struct pmu * perf_init_event (struct perf_event * event )
12102
12102
{
12103
12103
bool extended_type = false;
12104
- int idx , type , ret ;
12105
12104
struct pmu * pmu ;
12105
+ int type , ret ;
12106
12106
12107
- idx = srcu_read_lock (& pmus_srcu );
12107
+ guard ( srcu ) (& pmus_srcu );
12108
12108
12109
12109
/*
12110
12110
* Save original type before calling pmu->event_init() since certain
@@ -12117,7 +12117,7 @@ static struct pmu *perf_init_event(struct perf_event *event)
12117
12117
pmu = event -> parent -> pmu ;
12118
12118
ret = perf_try_init_event (pmu , event );
12119
12119
if (!ret )
12120
- goto unlock ;
12120
+ return pmu ;
12121
12121
}
12122
12122
12123
12123
/*
@@ -12136,13 +12136,12 @@ static struct pmu *perf_init_event(struct perf_event *event)
12136
12136
}
12137
12137
12138
12138
again :
12139
- rcu_read_lock ();
12140
- pmu = idr_find (& pmu_idr , type );
12141
- rcu_read_unlock ();
12139
+ scoped_guard (rcu )
12140
+ pmu = idr_find (& pmu_idr , type );
12142
12141
if (pmu ) {
12143
12142
if (event -> attr .type != type && type != PERF_TYPE_RAW &&
12144
12143
!(pmu -> capabilities & PERF_PMU_CAP_EXTENDED_HW_TYPE ))
12145
- goto fail ;
12144
+ return ERR_PTR ( - ENOENT ) ;
12146
12145
12147
12146
ret = perf_try_init_event (pmu , event );
12148
12147
if (ret == - ENOENT && event -> attr .type != type && !extended_type ) {
@@ -12151,27 +12150,21 @@ static struct pmu *perf_init_event(struct perf_event *event)
12151
12150
}
12152
12151
12153
12152
if (ret )
12154
- pmu = ERR_PTR (ret );
12153
+ return ERR_PTR (ret );
12155
12154
12156
- goto unlock ;
12155
+ return pmu ;
12157
12156
}
12158
12157
12159
12158
list_for_each_entry_rcu (pmu , & pmus , entry , lockdep_is_held (& pmus_srcu )) {
12160
12159
ret = perf_try_init_event (pmu , event );
12161
12160
if (!ret )
12162
- goto unlock ;
12161
+ return pmu ;
12163
12162
12164
- if (ret != - ENOENT ) {
12165
- pmu = ERR_PTR (ret );
12166
- goto unlock ;
12167
- }
12163
+ if (ret != - ENOENT )
12164
+ return ERR_PTR (ret );
12168
12165
}
12169
- fail :
12170
- pmu = ERR_PTR (- ENOENT );
12171
- unlock :
12172
- srcu_read_unlock (& pmus_srcu , idx );
12173
12166
12174
- return pmu ;
12167
+ return ERR_PTR ( - ENOENT ) ;
12175
12168
}
12176
12169
12177
12170
static void attach_sb_event (struct perf_event * event )
0 commit comments