Function sdei_event_find() is always called in sdei_event_create(), but it is already called in sdei_event_register(). This code is trying to avoid a double-create of the same event, which can't happen as we still hold the sdei_events_lock. We can remove this needless sdei_event_find() call.
Unified · Split
| @@ -267,15 +267,9 @@ static struct sdei_event *sdei_event_create(u32 event_num, · 266 unmodified lines | |||
| 267 | event->private_registered = regs; | 267 | event->private_registered = regs; |
| 268 | } | 268 | } |
| 269 | 269 | ||
| 270 | if (sdei_event_find(event_num)) { | 270 | spin_lock(&sdei_list_lock); |
| 271 | kfree(event->registered); | 271 | list_add(&event->list, &sdei_list); |
| 272 | kfree(event); | 272 | spin_unlock(&sdei_list_lock); |
| 273 | event = ERR_PTR(-EBUSY); | ||
| 274 | } else { | ||
| 275 | spin_lock(&sdei_list_lock); | ||
| 276 | list_add(&event->list, &sdei_list); | ||
| 277 | spin_unlock(&sdei_list_lock); | ||
| 278 | } | ||
| 279 | 273 | ||
| 280 | return event; | 274 | return event; |
| 281 | } | 275 | } |