]> Pileus Git - ~andy/linux/blobdiff - net/802/garp.c
802: fix a possible race condition
[~andy/linux] / net / 802 / garp.c
index 8456f5d98b853b24607d8168aee1b7d9aa9fdac8..5d9630a0eb93b75604f49f3c9de84ad7a417de03 100644 (file)
@@ -609,8 +609,12 @@ void garp_uninit_applicant(struct net_device *dev, struct garp_application *appl
        /* Delete timer and generate a final TRANSMIT_PDU event to flush out
         * all pending messages before the applicant is gone. */
        del_timer_sync(&app->join_timer);
+
+       spin_lock_bh(&app->lock);
        garp_gid_event(app, GARP_EVENT_TRANSMIT_PDU);
        garp_pdu_queue(app);
+       spin_unlock_bh(&app->lock);
+
        garp_queue_xmit(app);
 
        dev_mc_del(dev, appl->proto.group_address);