evt = list_entry(cursor, struct efx_ptp_event_rx,
                                         link);
                        if (time_after(jiffies, evt->expiry)) {
-                               list_del(&evt->link);
-                               list_add(&evt->link, &ptp->evt_free_list);
+                               list_move(&evt->link, &ptp->evt_free_list);
                                netif_warn(efx, hw, efx->net_dev,
                                           "PTP rx event dropped\n");
                        }
 
                        match->state = PTP_PACKET_STATE_MATCHED;
                        rc = PTP_PACKET_STATE_MATCHED;
-                       list_del(&evt->link);
-                       list_add(&evt->link, &ptp->evt_free_list);
+                       list_move(&evt->link, &ptp->evt_free_list);
                        break;
                }
        }
        /* Drop any pending receive events */
        spin_lock_bh(&efx->ptp_data->evt_lock);
        list_for_each_safe(cursor, next, &efx->ptp_data->evt_list) {
-               list_del(cursor);
-               list_add(cursor, &efx->ptp_data->evt_free_list);
+               list_move(cursor, &efx->ptp_data->evt_free_list);
        }
        spin_unlock_bh(&efx->ptp_data->evt_lock);