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 | 267 | event->private_registered = regs; |
| 268 | 268 | } |
| 269 | 269 | |
| 270 | − if (sdei_event_find(event_num)) { | |
| 271 | − kfree(event->registered); | |
| 272 | − kfree(event); | |
| 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 | − } | |
| 270 | + spin_lock(&sdei_list_lock); | |
| 271 | + list_add(&event->list, &sdei_list); | |
| 272 | + spin_unlock(&sdei_list_lock); | |
| 279 | 273 | |
| 280 | 274 | return event; |
| 281 | 275 | } |