summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/802/garp.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/net/802/garp.c b/net/802/garp.c
index 3b78f7b74fd4..1dcb0660c49d 100644
--- a/net/802/garp.c
+++ b/net/802/garp.c
@@ -323,7 +323,10 @@ static void garp_attr_event(struct garp_applicant *app,
case GARP_ACTION_NONE:
break;
case GARP_ACTION_S_JOIN_IN:
- garp_pdu_append_attr(app, attr, GARP_JOIN_IN);
+ /* When appending the attribute fails, don't update state in
+ * order to retry on next TRANSMIT_PDU event. */
+ if (garp_pdu_append_attr(app, attr, GARP_JOIN_IN) < 0)
+ return;
break;
case GARP_ACTION_S_LEAVE_EMPTY:
garp_pdu_append_attr(app, attr, GARP_LEAVE_EMPTY);