alloc_synth_event() currently has the following code to initialize the event fields and dynamic_fields: for (i = 0, j = 0; i < n_fields; i++) { event->fields[i] = fields[i]; if (fields[i]->is_dynamic) { event->dynamic_fields[j] = fields[i]; event->dynamic_fields[j]->field_pos = i; event->dynamic_fields[j++] = fields[i]; event->n_dynamic_fields++; } } 1) It would make more sense to have all fields keep track of their field_pos. 2) event->dynmaic_fields[j] is assigned twice for no reason. 3) We can move updating event->n_dynamic_fields outside the loop, and just assign it to j. This combination makes the code much cleaner. Link: https://lkml.kernel.org/r/20210721195341.29bb0f77@oasis.local.home
Showing the changes to kernel (1 of 1 file). Show all
Unified · Split
| @@ -893,15 +893,13 @@ static struct synth_event *alloc_synth_event(const char *name, int n_fields, · 892 unmodified lines | ||
| 893 | 893 | dyn_event_init(&event->devent, &synth_event_ops); |
| 894 | 894 | |
| 895 | 895 | for (i = 0, j = 0; i < n_fields; i++) { |
| 896 | + fields[i]->field_pos = i; | |
| 896 | 897 | event->fields[i] = fields[i]; |
| 897 | 898 | |
| 898 | − if (fields[i]->is_dynamic) { | |
| 899 | − event->dynamic_fields[j] = fields[i]; | |
| 900 | − event->dynamic_fields[j]->field_pos = i; | |
| 899 | + if (fields[i]->is_dynamic) | |
| 901 | 900 | event->dynamic_fields[j++] = fields[i]; |
| 902 | − event->n_dynamic_fields++; | |
| 903 | − } | |
| 904 | 901 | } |
| 902 | + event->n_dynamic_fields = j; | |
| 905 | 903 | event->n_fields = n_fields; |
| 906 | 904 | out: |
| 907 | 905 | return event; |